【发布时间】:2015-11-08 18:48:18
【问题描述】:
通常一个 rpm 依赖于许多其他包或库。这对于没有互联网访问的大规模部署来说并不容易。
由于 yum 可以自动解决依赖关系。是否可以构建可移植的可执行文件?以便我们可以将其复制到具有相同操作系统的其他机器上。
【问题讨论】:
-
你想要的词是“静态的”——而 yum 或 rpm 并没有真正改变这种情况。
标签: linux centos rpm yum rpmbuild
通常一个 rpm 依赖于许多其他包或库。这对于没有互联网访问的大规模部署来说并不容易。
由于 yum 可以自动解决依赖关系。是否可以构建可移植的可执行文件?以便我们可以将其复制到具有相同操作系统的其他机器上。
【问题讨论】:
标签: linux centos rpm yum rpmbuild
如果您想要安装已知的 RPM 集合,yum 提供了一个downloadonly 插件。这样,您应该能够一次性收集所有相关的 RPM,以便在断开连接的机器上安装您想要的东西。
【讨论】:
构建没有运行时库依赖项的二进制文件的一般方法是将其构建为静态的,即。使用 gcc 的 -static 参数,该参数链接所需的库的静态版本,以便它们包含在生成的可执行文件中。这不会捆绑任何数据文件依赖项或外部可执行文件(即libexec-style helpers),但更简单的应用程序通常不需要它们。
对于更复杂的需求(涉及数据文件,或由于某种原因无法链接依赖链的元素),请考虑使用AppImageKit——它将应用程序及其依赖链捆绑到一个可运行的 ISO。请参阅文档/链接at PortableLinuxApps.org。
在这两种情况下,rpm 或 yum 都与此无关。构建一个打包静态可执行文件的 RPM 当然是可能的,但这只是改变规范文件的%build 部分,使其将-static 传递给 gcc,而不是做任何特定于 RPM 的事情。
顺便说一下,我们不总是使用静态库有令人信服的理由!
【讨论】: