获取要通过更新安装的 rpm 子包

获取要通过更新安装的 rpm 子包

作为实习任务的一部分,我必须在大约 60-70 个运行 CentOS 的客户端设备上部署 OpenVPN 客户端(这些设备位于私有网络上,无法直接访问)。我对软件包管理还很陌生。我更新了已经存在的 SPEC 文件,该文件是由一位不再在这里工作的员工创建的。我向 spec 文件添加了一个子包,它生成了名为“主包—OpenVPN—版本“正在建设中。这可以正常工作。

我的问题是,当客户端设备运行“yum update mainpackage-*”(它会自动执行)时,它只会更新已安装的子包(正如预期的那样)。有什么办法可以让它选取我的新 openvpn 子包并安装它吗?由于在所有 60 台机器上运行 yum install 不切实际,我正在寻找使其与更新配合使用的方法。或者我的看法完全错误,有没有更简洁的方法来处理这个问题?

我尝试过查找实现此目的的方法,但一无所获。如果我在主包的“requires”中提及子包,则可行,但我觉得这不是正确的做法,因为它实际上不是主包的依赖项。

如果有帮助的话,我会在这里发布 SPEC 文件中的相关部分。

%post openvpn

hostname="$(/path/to/get_login.sh)"
sed -i "s/cert_here/$hostname.crt/" /etc/openvpn/client.conf
sed -i "s/key_here/$hostname.key/" /etc/openvpn/client.conf

psswd="$(mysql -Ns -u username -ppassword database -e "SELECT value FROM table
 WHERE parameter='PASSWORD'")"

cd /etc/openvpn/

curl -k -o certs.tar.gz http://webservice-to-get-certificates/$hostname/$psswd

tar -xf /etc/openvpn/certs.tar.gz

rm -f certs.tar.gz

chmod 755 /etc/init.d/openvpn

chkconfig --add openvpn
systemctl start openvpn

%files openvpn
/etc/openvpn/client.conf
%attr(755, -, -) /etc/rc.d/init.d/openvpn

答案1

为什么首先要创建一个单独的子包?

  • 如果您的子包应该始终在安装主包时安装,那么也许您不应该创建单独的子包。
  • 如果您的子包不应该在安装主包时总是自动安装;那么安装该额外的子包就是用户的责任……

相关内容