构build.rpm包与所有的依赖关系

我不确定是否推荐的方法,如果用户没有networking访问,并且我的软件需要,可以说:libgcc-4.3.0.0.rpm(例如),我想捆绑这个对于特定的受支持的操作系统(例如:RHEL 5.10)及其所有的依赖关系在一个.rpm。

最好的办法是什么?

谢谢,

您不需要捆绑依赖关系。 如果最终用户没有访问Internet,那就是他们的问题(他们使用安装介质来安装和更新软件包)。

我认为你正在寻找的应该是静态编译应用程序。 这将使得用户不太可能获得任何对他们不可用的依赖关系。

将所有的依赖包捆绑到一个RPM中是非常棘手的,尤其是因为你所build立的系统可能与你的目标有不同的包装组成(例如,你的目标已经安装了更新或者已经安装了冲突的包,你可能会无意中被覆盖)。

但是,您也可以获取所有必备软件包的列表,并同时安装它们。

假设你有两个系统(build和target),它们是相同的风格和释放(例如,在CentOS 6上为CentOS 6制作一个软件包列表),试试这个:

$ sudo yum install yum-utils # not necessary on the target $ mkdir package-bundle $ yumdownloader --destdir package-bundle `repoquery --resolve --requires $PACKAGE_NAME` $ tar -czvf package-bundle.tar.gz package-bundle 

在目标系统上:

 $ tar -xzvf package-bundle.tar.gz $ sudo yum install package-bundle/*.rpm 

上面使用repoquery而不是依靠yumdownloader来解决依赖关系,因为yumdownloader在设置--resolve标志时不会recursion地parsing。