Michael Asked: 2020-07-04 01:17:41 +0800 CST2020-07-04 01:17:41 +0800 CST 2020-07-04 01:17:41 +0800 CST 使用 rpm 应用程序(不是 yum)使用 Ansible 安装 rpm 包 772 我想使用 Ansible 和已安装的 rpm 包管理器安装一些 RPM 包。yum 没有安装。 如果软件包已经安装,使用commandmodule with会导致任务失败。rpm -i {{package}}我正在寻找一种惯用的方式来安装像 yum 或 apt 模块这样的软件包。 aix rpm ansible 4 个回答 Voted John Mahowald 2020-07-04T19:15:59+08:002020-07-04T19:15:59+08:00 安装 yum,加上yum-utils,并使用 yum 模块。AIX 上默认不安装,但可以安装。 要求包括 yum 和 rpm Python 模块。我不清楚哪个包提供了 rpm 绑定,yum 必须有一些东西才能工作。可能来自 rpm 文件集,但不幸的是我没有 AIX 机器来测试。 Gerald Schneider 2020-07-04T01:33:45+08:002020-07-04T01:33:45+08:00 使用rpm -U. 从手册: rpm {-U|--upgrade} [安装选项] PACKAGE_FILE ... 这会将当前安装的软件包升级或安装到较新的版本。这与安装相同,只是在安装新软件包后会删除该软件包的所有其他版本。 loveshell Guo 2020-07-04T01:52:49+08:002020-07-04T01:52:49+08:00 - name: check if the filebeat exist shell: cmd: rpm -q filebeat ignore_errors: True register: filebeat_check - name: transfer filebeat package to remote host copy: src: filebeat.rpm dest: /tmp/filebeat.rpm when: filebeat_check.rc != 0 - name: install filebeat shell: cmd: rpm -i /tmp/filebeat.rpm when: filebeat_check.rc != 0 Best Answer Michael 2020-07-04T05:05:47+08:002020-07-04T05:05:47+08:00 我认为这最符合我的问题: - name: Verify package MD5 shell: | package_md5=$(rpm -qp --queryformat='%{FILEMD5S}' '{{ item }}') package_name=$(rpm -qp --queryformat='%{NAME}' '{{ item }}') installed_md5=$(rpm -q --queryformat='%{FILEMD5S}' "$package_name") [ "$installed_md5" = "$package_md5" ] ignore_errors: true register: verify_result changed_when: no failed_when: no - name: Install package shell: rpm -U '{{ item }}' when: verify_result.rc != 0 item是 rpm 文件的路径。 第一个任务从 rpm 文件中获取 MD5 校验和和包的名称,并将校验和与已安装的具有相同包名的包进行比较。如果校验和不匹配(只有这样),第二个任务将安装 rpm 包。
安装 yum,加上yum-utils,并使用 yum 模块。AIX 上默认不安装,但可以安装。
要求包括 yum 和 rpm Python 模块。我不清楚哪个包提供了 rpm 绑定,yum 必须有一些东西才能工作。可能来自 rpm 文件集,但不幸的是我没有 AIX 机器来测试。
使用
rpm -U
.从手册:
我认为这最符合我的问题:
item
是 rpm 文件的路径。第一个任务从 rpm 文件中获取 MD5 校验和和包的名称,并将校验和与已安装的具有相同包名的包进行比较。如果校验和不匹配(只有这样),第二个任务将安装 rpm 包。