我必须创建3个RPM,如下所示:
上面的意图是,我想使用启用了 gpgcheck 的DNF一次安装所有3个RPM。上面创建的依赖关系将允许先安装 key.rpm ,然后再安装其余2个RPM。但是, key.rpm 本身的安装失败,因为我在安装后脚本中执行了“ rpm --import” 。 rpm导入无法获取事务锁定。我了解在主RPM命令的上下文中调用了安装后脚本,因此在获取锁时rpm导入失败。
还有其他方法可以实现我上面想要做的事情吗?我想在一个DNF命令中安装所有已签名的RPM,其中一个RPM携带并安装其他人需要的RPM GPG密钥。
答案 0 :(得分:1)
正确的解决方案是通过创建RPM存储库来正确地分发RPM软件包。
这将使您的RPM可通过2个命令(而不是1个)安装,但是您为将更多更新分发给用户打开了很多可能性。
您现在拥有的 key.rpm
应该变成一个发行包。它应包含/etc/yum.repos.d/foo.repo
存储库配置文件,所有指令均指向Web上的存储库,以及本地GPG密钥的路径(如果也已安装)或指向该URL的路径。应该用您的GPG密钥签名。
software1.rpm
和software2.rpm
只是由相同的GPG密钥签名,根本不需要依赖key.rpm
。
它对最终用户如何工作:
sudo dnf install https://example.com/your-release.rpm
然后:
sudo dnf install software1 software2
提示用户信任软件包安装期间安装/下载的GPG密钥。简单明了。
答案 1 :(得分:0)
三点:
1)RPM不可重入。您不得从rpm调用rpm。否则,您可能会破坏数据库和系统。
2)不可能。如今,标准是提供Ansible剧本或角色。例如,请参见下面。
3)RPM不可重入。您不得从rpm调用rpm。否则,您可能会破坏数据库和系统。现在感叹了!!
可以执行此操作的片段:
- 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