我不确定这是否是推荐的方法,如果用户无法访问网络,而我的软件需要,比如说:libgcc-4.3.0.0.rpm(例如),我想将它捆绑到特定支持的操作系统(例如:RHEL 5.10)及其所有依赖项中,放在一个 .rpm 中。
最好的方法是什么?
谢谢,
答案1
将所有依赖项捆绑到单个 RPM 中会很棘手,尤其是因为您构建的系统可能与目标系统的软件包组成不同(例如,您的目标系统已安装了较新的或有冲突的软件包,您可能会无意中覆盖这些软件包)。
但是,你可以获取以下列表:全部必备软件包并安装它们全部同时。
假设您有两个系统(构建和目标),它们是相同的风格和版本(例如,在 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
上述用途回溯查询而不是依赖yum下载器解决依赖关系,如yum下载器--resolve
当设置标志时,似乎不会递归解析。
答案2
我认为您正在寻找的应该是静态编译应用程序。这将使用户不太可能获得任何尚未提供的依赖项。
答案3
您不需要捆绑依赖项。如果最终用户无法访问互联网,那是他们的问题。这些地方有多种方法来处理这个问题,例如使用安装媒体来安装和更新软件包、维护发行版的本地镜像等。