正如标题所暗示的,我如何检查,而无需编译包自己?就我而言,我将从其他地方构建一个软件包。如何在创建RPM包之前检查依赖关系?
编辑:对不起,我是不清楚。我的意思是“从别处构建包”是我必须从源代码创建一个RPM包,而不是通过安装它。无需运行./configure,还有其他方法可以检查吗?在RPM spec文件中,我必须放入BuildRequire,但它如何知道?例如,在SFML源文件中,它没有配置文件。
正如标题所暗示的,我如何检查,而无需编译包自己?就我而言,我将从其他地方构建一个软件包。如何在创建RPM包之前检查依赖关系?
编辑:对不起,我是不清楚。我的意思是“从别处构建包”是我必须从源代码创建一个RPM包,而不是通过安装它。无需运行./configure,还有其他方法可以检查吗?在RPM spec文件中,我必须放入BuildRequire,但它如何知道?例如,在SFML源文件中,它没有配置文件。
使用rpm -qp --requires
。例如:
rpm -qp --requires xchat-2.8.8-0.fc13.src.rpm
显示:
perl
perl(ExtUtils::Embed)
python-devel
openssl-devel
pkgconfig
tcl-devel
GConf2-devel
dbus-devel >= 0.60
dbus-glib-devel >= 0.60
glib2-devel >= 2.10.0
gtk2-devel >= 2.10.0
bison >= 1.35
gettext
/bin/sed
libtool
libsexy-devel
desktop-file-utils >= 0.10
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
良好的上游开发者通常包括他们需要建立(除自动工具&家庭当然)封装的最小所需版本。除此之外,你可以检查configure.ac文件。它需要关于自动工具的基本知识,但是如果你能读懂它,它会给你提供配置期间程序包检查的内容,而不用实际运行它。
另一种选择是有一个最低限度“的buildroot”不会有默认安装任何特殊的库。这样你就可以运行configure,它会失败,因为缺少依赖关系,所以你可以将它添加到你的列表中。然后冲洗&重复,直到包装建成。
最后但并非最不重要的,检查是否存在分布已经封装上述软件和看看他们的依赖。他们很可能是正确的。
在任何情况下,如果包是FLOSS,请与作者联系,并试图让他们列出任何具体的依赖他们的文档(自述,或与源分布的其他一些文件)英寸
更新1:请注意,对于同一个包,不同的发行版可能具有不同的名称。例如,“阿帕奇公地守护”中的Fedora,Gentoo中在Debian的世界“公地守护”和“开发的Java /公地守护”。