【问题标题】:RPM GPG key import from an RPM post install script从 RPM 安装后脚本导入 RPM GPG 密钥
【发布时间】:2020-03-28 22:51:21
【问题描述】:

我必须像这样创建 3 个 RPM:

  1. key.rpm:RPM GPG 公钥 (/etc/sw-key/gpg.key) 是否在其安装后脚本中导入。
  2. software1.rpm:需要 key.rpm 并由 /etc/sw-key/gpg.key 的私钥签名。
  3. software2.rpm:需要 key.rpm 并由 /etc/sw-key/gpg.key 的私钥签名。

上面的意图是,我想使用启用了 gpgcheck 的 DNF 一次安装所有 3 个 RPM。上面创建的依赖项将允许首先安装 key.rpm,然后安装剩余的 2 个 RPM。但是,key.rpm 的安装本身会失败,因为我在它的安装后脚本中执行了 "rpm --import"。 rpm 导入未能获取事务锁。我知道安装后脚本是在主 RPM 命令的上下文中调用的,因此在获取锁定时 rpm 导入失败。

还有其他方法可以实现我在上面尝试做的事情吗?我想在一个 DNF 命令中安装所有签名的 RPM,其中一个 RPM 携带并安装其他人需要的 RPM GPG 密钥。

【问题讨论】:

    标签: rpm packaging rpmbuild rpm-spec dnf


    【解决方案1】:

    三点:

    1) RPM 不可重入。您不应从 rpm 调用 rpm。否则你可能会破坏数据库和系统。

    2) 这是不可能的。如今,标准是提供 Ansible 剧本或角色。例如,请参见下文。

    3) RPM 不可重入。您不应从 rpm 调用 rpm。否则你可能会破坏数据库和系统。现在用感叹号!!!

    Ansible sn-p 这样做:

    - name: install the gpg key
      yum:
        name: /usr/local/src/key.rpm
        state: present
    
    - rpm_key:
        state: present
        key: /path/to/key1.gpg.key
    
    - name: install sw1 and sw2
      yum:
        name:
          - /usr/local/src/software1.rpm
          - /usr/local/src/software2.rpm
        state: present
    

    【讨论】:

    • 即使使用上面的第一个 yum 调用,由于锁定的原因,key.rpm 也不会被安装。看起来,没有办法实现我所需要的。 rpm gpg 密钥必须单独导入。
    • 我并不是想从 rpm 调用这个 Ansible sn-p。您必须从普通系统调用它。
    • Ansible 是每个人的标准吗?你确定吗?在您的回答中,ansible 并不能解决问题。另外还有更简单的方法来导入密钥。
    【解决方案2】:

    在妥善的解决办法是刚刚发布的RPM软件包得当,通过创建一个RPM库。 P>

    这会使你的RPM安装在2个命令(而不是一个),但你打开了很多可能性分配进一步的更新给用户。 P>

    key.rpm你现在应该变成一个发布包。它应该持有/etc/yum.repos.d/foo.repo存储库的配置文件,所有的指令指向存储库在网络上,以及路径在本地GPG密钥或URL(如果它也它安装)它。它应该由你的GPG密钥签名。 P>

    software1.rpmsoftware2.rpm将由相同的GPG密钥刚刚签订,并不需要在所有依赖key.rpm。 P>

    工作原理为终端用户:

    sudo dnf install https://example.com/your-release.rpm
    

    然后:

    sudo dnf install software1 software2
    

    在提示用户信任软件包安装过程中下载其安装GPG密钥/。简单明了。 P>

    【讨论】:

    • 是,看起来像一个两步安装是不可避免的。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2015-05-20
    • 1970-01-01
    • 2019-06-14
    • 2017-06-04
    • 1970-01-01
    • 2011-06-27
    相关资源
    最近更新 更多