rpmbuild文件的简单副本

时间:2016-07-15 17:07:22

标签: rpm rpmbuild

在发布文件时,寻找某人只是澄清%install宏。我创建了一个没有错误的RPM,它应该只从buildroot中获取文件,然后将它们转换为/ usr / lib。我在%文件的SPEC文件中有以下内容,基于this post。我虽然这足以让rpm将文件从buildroot复制到/ usr / lib位置。

这是我尝试过的,它构建了:

%install
mkdir -p %{buildroot}/usr/lib
install -d %{buildroot}/usr/lib/

重新思考,我想,好吧,让我们告诉我想要复制文件的rpm。所以我试过这个:

%install
mkdir -p %{buildroot}/usr/lib
cp %{buildroot}/usr/lib/ /usr/lib/

好吧,抱怨/ usr / lib / location不能被用户写入我在构建机器上创建rpm。我的印象是,规范文件的%install部分应该是在目标服务器上安装rpm时应该将文件复制到的位置的说明。我不希望它查看rpm构建服务器的本地文件系统。我虽然落后于此,但是应该构建RPM,但是如果我尝试将rpm安装为非特权用户,则直到rpm安装才会失败。在构建期间它不应该在意。我只是尝试将一些lib文件cp /解压缩到我安装rpm的服务器上的/ usr / lib。

我的假设是,rpm会在我正在安装rpm的服务器上创建BUILDROOT位置,然后将内容从buildroot位置cp到所提到的目标位置。

1 个答案:

答案 0 :(得分:9)

在程序包的构建期间,在您的计算机上执行

%install部分。在本节中,您应该在%{buildroot}中创建文件结构。在客户端计算机上复制最终目标是的任务。

所以你应该这样做:

%install
mkdir -p %{buildroot}/usr/lib
cp -a some-your-file-from-extracted-targz %{buildroot}/usr/lib/

然后在%files部分:

%files
/usr/lib/foobar.bin
/usr/lib/somedir/

Rpm将从%buildroot获取%files部分中列出的所有文件并将其放入包中。