rpm2cpio未列出whois包中/usr/bin/whois,自定义alternative需确认是否包含该软链接
关于RPM包中Alternatives系统软链接的疑问
问题场景
我在研究whois包的实现时发现,它采用了Linux Alternatives系统(jwhois是其替代实现之一),原本以为/usr/bin/whois是作为软链接打包进RPM的,但实际验证发现了矛盾点:
- 执行
rpm -qp --list whois-5.5.1-2.el8.x86_64.rpm查看包内文件列表,结果包含/usr/bin/whois:/etc/whois.conf /usr/bin/whois /usr/bin/whois.md ...more files... - 但执行
rpm2cpio whois-5.5.1-2.el8.x86_64.rpm | cpio -itv提取并查看归档内容时,结果里没有/usr/bin/whois,其余文件均正常显示。
进一步验证的信息:
- 通过
rpm -qf /usr/bin/whois确认,/usr/bin/whois确实由whois包提供; - 查看包的安装脚本
rpm -qp --scripts whois-5.5.1-2.el8.x86_64.rpm,发现postinstall脚本通过Alternatives系统创建该软链接,片段如下:postinstall scriptlet (using /bin/sh): /usr/sbin/update-alternatives \ --install /usr/bin/whois \ whois /usr/bin/whois.md 30 \
未验证的猜想
针对/usr/bin/whois未出现在cpio归档中的原因,我有两个猜想但无法验证:
/usr/bin/whois在RPM中属于特殊文件类型,因此不被rpm2cpio工具列出;cpio检测到该软链接未指向归档内的其他文件,因此不将其显示在结果中。
求助需求
我目前正在调研Linux Alternatives系统,计划制作自定义alternative,但不确定是否应该在RPM包中包含这类软链接,希望得到相关解答。
内容的提问来源于stack exchange,提问作者Steven Schoch
相关产品推荐
相关产品推荐

