【发布时间】:2011-09-24 12:54:15
【问题描述】:
我正在尝试为我的软件包创建一个 RPM,它是使用 automake 和 libtool 构建的,但我遇到了一个问题:rpmbuild 在发现软件包的已安装程序包含包的可共享库的安装目录的路径名(由于automake 使用了ld 的-rpath 选项)。
我了解rpmbuild 这样做是为了保证包是可重定位的。我的问题是如何处理它。我可以取消使用可共享库(并失去它们的好处),或者我可以告诉automake 不要安装可共享库(这将阻止它使用-rpath 选项)然后无论如何都要安装它们。后一种选择的代价是要求用户总是有一个正确设置的LD_LIBRARY_PATH 环境变量——而且它看起来有点杂乱无章。
还有其他选择吗?
你会怎么做?
【问题讨论】:
-
如果您将库安装为与可执行文件不同的包,问题应该会消失。
-
虽然我不喜欢它,但这是另一种可能的解决方案。我会记住的。
-
@William Pursell:我知道这通常是在 debian 上完成的事情(参见例如,
zeromq-bin、libzmq0、libzmq-dev都来自一个源代码包)。您是否有显示 RPM 最佳做法的链接? -
@Jack 我没有链接——总的来说,我已经找到了这类不好和/或过时的文档。我将在今天晚些时候尝试发布一个示例规范文件,以换取我相信它应得的所有批评!
-
@Jack 这看起来很有希望:tinymelinux.com/doku.php/build-rpms:splitting(不过我还没有完全阅读)
标签: unix rpm automake libtool rpmbuild