Linux 如何在创建RPM包之前检查依赖关系?

Linux 如何在创建RPM包之前检查依赖关系?,linux,rpm,Linux,Rpm,正如标题所示,如何在不必自己编译包的情况下进行检查?在我的例子中,我将从其他地方构建一个包 编辑:很抱歉不清楚。我所说的“从其他地方构建包”是指我必须从源代码创建RPM包,而不是通过安装它。不必运行./configure,还有其他检查方法吗?在RPM规范文件中,我必须输入BuildRequire,但是它怎么知道呢?例如,在SFML源代码中,它没有配置文件。使用rpm-qp--requires。例如: rpm -qp --requires xchat-2.8.8-0.fc13.src.rpm

正如标题所示,如何在不必自己编译包的情况下进行检查?在我的例子中,我将从其他地方构建一个包

编辑:很抱歉不清楚。我所说的“从其他地方构建包”是指我必须从源代码创建RPM包,而不是通过安装它。不必运行./configure,还有其他检查方法吗?在RPM规范文件中,我必须输入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
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
野牛>=1.35
gettext
/bin/sed
利布托
利伯德维尔
桌面文件utils>=0.10

rpmlib(FileDigests)优秀的上游开发人员通常包括他们需要构建的包的最低版本(当然除了autotools和family)。除此之外,您还可以检查configure.ac文件。它需要有关自动工具的基本知识,但如果您能阅读它,它会让您了解在配置期间软件包检查的内容,而无需实际运行它

另一种选择是使用最小的“buildroot”,默认情况下不会安装任何特殊的库。通过这种方式,您可以运行configure,它将由于缺少依赖项而失败,因此您可以将其添加到列表中。然后冲洗并重复,直到包装成型

最后但并非最不重要的一点是,检查一些发行版是否已经打包了上述软件,并查看它们的依赖关系。他们很可能是正确的

在任何情况下,如果包是FLOSS,请与作者联系,并尝试让他们在文档中列出任何特定的依赖项(自述文件,或与源文件一起分发的其他文件)

更新1:请注意,不同的发行版可以对同一个包使用不同的名称。例如,Fedora中的“ApacheCommons守护程序”,DebianWorld中的“commons守护程序”,Gentoo中的“devJava/commons守护程序”