通过 rpmbuild 打包符号链接?
Posted
技术标签:
【中文标题】通过 rpmbuild 打包符号链接?【英文标题】:Packaging symlinks via rpmbuild? 【发布时间】:2011-11-23 05:35:06 【问题描述】:是否可以让 rpmbuild 在打包时保留符号链接?
当前的行为是创建文件副本,我想避免这样做。
【问题讨论】:
【参考方案1】:我不这么认为。我在我的包中使用了安装后脚本设置符号链接。
【讨论】:
【参考方案2】:当然它支持符号链接。但是您实际上必须打包符号链接而不是将内容复制到 buildroot。将符号链接打包到名为 /newbin 的 /bin 目录的示例规范
Name: test
Version: 1.0
Release: 1%?dist
Summary: nothing
License: GPLv2
Source0: nothing
%description
%install
rm -rf %buildroot
mkdir %buildroot
ln -sf /bin %buildroot/newbin
%files
/newbin
您还需要 SOURCES 目录中的 nothing
文件才能成功构建 rpm。使用 rpm 4.9.1.2 测试
【讨论】:
我会对 Stan 上面所说的进行一些更改,因为 -f 在创建链接中,所以不需要删除。 @Jane - 我不同意。清理 buildroot 以删除%install
开头的杂物通常是个好主意。例如,假设以前版本的软件包安装了第二个文件“%buildroot/newlib
”,但当前版本没有安装该文件。软件包的当前版本不会知道该文件,因此不会从 buildroot 中删除(按照您的建议)。通常,当前的 rpmbuild 实例不知道构建根目录中可能存在任何旧的垃圾。最好在安装步骤之前对整个 buildroot 进行核对。
在 buildroot 中创建符号链接不是一个好主意,原因有两个:1) 您不应该指向 buildroot 之外的任何内容。 2)如果您确实链接到您的 buildroot 中的某些内容(例如,假设您创建了一个 %buildroot/bin 并链接到该文件,那么复制文件部分中的文件将复制指向您的 buildroot 的链接,而不是实际的链接/bin 目录。最好的方法是使用 %ghost 文件并在 %post 部分中创建符号链接(请参阅下面的我的帖子)。【参考方案3】:
我知道这个 Q 已经过时了,但我是这样做的。
在 %install 部分,只需触摸将成为符号链接的文件。
touch %buildroot[path to your file]
在 %files 部分中,将其指定为 %ghost 文件:
%ghost [path to symlink file]
通过这样做,它将作为包文件的一部分列出,并且在卸载包时也会自动删除。
最后,在 %post 部分创建符号链接:
ln -sf [file to link to] [symlink]
【讨论】:
以上是关于通过 rpmbuild 打包符号链接?的主要内容,如果未能解决你的问题,请参考以下文章