在发布文件时,寻找某人只是澄清%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到所提到的目标位置。
答案 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
部分中列出的所有文件并将其放入包中。