AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 981361
Accepted
emmdee
emmdee
Asked: 2019-08-31 09:49:58 +0800 CST2019-08-31 09:49:58 +0800 CST 2019-08-31 09:49:58 +0800 CST

Ansible yum 模块相当于 rpm -i --force

  • 772

我试图让 Ansible 强制安装一个 rpm 包来覆盖现有的包。

这有效:

- name: RPM force install nodesource and yum clean all
  shell: rpm -i --nosignature --force "https://rpm.nodesource.com/{{ nodejs_rhel_rpm_dir }}/el/{{ ansible_distribution_major_version }}/{{ ansible_architecture }}/nodesource-release-el{{ ansible_distribution_major_version }}-1.noarch.rpm" && yum clean all
  args:
    executable: /bin/bash
  tags:
    - nodejs

我宁愿这样做,而不是使用shell模块:

- name: Install nodesource npm/node packages
  yum:
    name: "https://rpm.nodesource.com/{{ nodejs_rhel_rpm_dir }}/el/{{ ansible_distribution_major_version }}/{{ ansible_architecture }}/nodesource-release-el{{ ansible_distribution_major_version }}-1.noarch.rpm"
    state: latest
    update_cache: yes
  tags:
    - nodejs

但是,如果不直接使用 rpm,我似乎无法强制覆盖现有的安装版本。在 Ansible 中执行此操作的最佳方法是什么,而不使用shellwhich 违反配置管理的最佳实践。

我是否将被迫分两步卸载并重新安装软件包?

编辑:

为了明确这一点,正在安装的 .rpm 与当前安装的不同。

目前安装了一个:https://rpm.nodesource.com/pub_8.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm

新的是:https://rpm.nodesource.com/pub_10.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm

ansible
  • 2 2 个回答
  • 3582 Views

2 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2019-09-11T10:20:42+08:002019-09-11T10:20:42+08:00

    发生这种情况的原因是上游供应商没有使用健全的版本信息创建包。

    这些分别是 NodeJS 8.x 和 10.x 的 nodesource-release RPM 文件,它们安装了相应的 yum 存储库。

    我下载了他们每个人并查看了他们报告的信息。它们都具有相同的名称、版本和发行版:

    Name        : nodesource-release
    Version     : el7
    Release     : 1
    Architecture: noarch
    

    rpm 或 yum 无法区分这些软件包。它们的元数据使它们看起来相同。

    我首先会就此向供应商投诉,希望他们会重新打包这些文件以赋予它们一些显着特征。使用相应的 NodeJS 版本是合乎逻辑的。与此同时,我认为你坚持使用你的解决方法。Ansible 打包模块不提供“重新安装”包。

    • 2
  2. Havegooda
    2019-08-31T11:54:37+08:002019-08-31T11:54:37+08:00

    这与 Ansible 的工作方式背道而驰。Ansible 识别出所需的包已经安装,因此跳过它。yum 模块没有强制选项。

    最好的办法是卸载软件包并重新安装。它可以在同一个剧本中完成。

    你试图强迫它有什么特别的原因吗?

    • 0

相关问题

  • 重复的 Ansible 任务

  • 无法形成站点中的文件的链接,该链接可用于使用 ansible 在远程服务器中启用的目录站点?

  • 如何执行 ansible 的特定角色?

  • Ansible 和 rbash

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve