在 Unix 中构建可分发的二进制文件

在 Unix 中构建可分发的二进制文件

我的目的是生成可分发的二进制文件 - 我正在构建机器上执行 ./configure - make - make install,并且我存档了安装目录的内容(我在执行 ./configure 和 make install 时为其添加了前缀的目录),并将其移动到另一台机器上的另一个用户下进行测试。经过测试,我发现复制的文件仍然试图访问构建机器上的路径上的某些文件 - 因此我得到了permissions denied错误。之前我以为这可能是tar提取时的问题,但多亏了丹尼尔·贝克他帮助我意识到这与归档过程无关。

我没有 root/sudo 权限。关键是 - 如何在一台机器上构建并在许多其他机器上使用安装文件而不会遇到与权限相关的问题?创建可普遍分发的 tarball 的规则是什么?

谢谢。

答案1

问题是许多 Unix 程序是不可重定位的。它们总是在你给 configure 的路径中搜索文件(而不是相对于它自己的位置)。如果你想让它可重定位,这样它就可以安装在任何用户目录(或其他任何地方)中,并且仍然能找到它的文件,那么除了修改程序以使其以这种方式运行之外,没有其他方法了。

对于创建一般可分发的 tarball,特别是对于从源代码安装的程序,没有通用规则。大多数 Unix 发行版都有某种特殊的软件包系统来分发二进制文件。最好使用那个/那些。大多数以 tarball 中的二进制文件形式提供的商业应用程序使用环境变量来定位其文件,并使用设置此变量的包装器 shell 脚本(例如,通过搜索相对于其自身路径的文件)。然后,您可能必须再次修改程序以以这种方式运行。

答案2

tar --no-same-owner解压 tarball 时使用(对于 GNU 版本)--no-same-permissions也可能有用。

相关内容