寻找有人只是在%install放置文件时澄清宏.我创建了一个没有错误的RPM,它应该只从buildroot中获取文件,然后将它们转换为/ usr/lib.我在%安装的SPEC文件中有以下内容,并基于这篇文章.我虽然这足以让rpm将文件从buildroot复制到/ usr/lib位置.
这是我尝试过的,它构建:
%install
mkdir -p %{buildroot}/usr/lib
install -d %{buildroot}/usr/lib/
Run Code Online (Sandbox Code Playgroud)
重新思考,我想,好吧让我们告诉我想要复制文件的rpm.所以我试过这个:
%install
mkdir -p %{buildroot}/usr/lib
cp %{buildroot}/usr/lib/ /usr/lib/
Run Code Online (Sandbox Code Playgroud)
好吧,抱怨/ usr/lib/location不能被用户写入我在构建机器上创建rpm.我的印象是,%installspec文件的那一部分应该是在目标服务器上安装rpm时应该将文件复制到的位置的说明.我不希望它查看rpm构建服务器的本地文件系统.我虽然落后于此,但是应该构建RPM,但是如果我尝试将rpm安装为非特权用户,则在rpm安装之前不应该失败.在构建期间它不应该在意.我只是尝试将一些lib文件cp /解压缩到我安装rpm的服务器上的/ usr/lib.
我的假设是,rpm将在我正在安装rpm的服务器上创建BUILDROOT位置,然后将内容从buildroot位置cp到所提到的目标位置.
%install在程序包的构建期间,在您的计算机上执行该部分.在本节中,您应该在中创建文件结构%{buildroot}.这是不是你的任务是最终目的地复制客户机上.
所以你应该这样做:
%install
mkdir -p %{buildroot}/usr/lib
cp -a some-your-file-from-extracted-targz %{buildroot}/usr/lib/
Run Code Online (Sandbox Code Playgroud)
然后在%files部分:
%files
/usr/lib/foobar.bin
/usr/lib/somedir/
Run Code Online (Sandbox Code Playgroud)
然后,Rpm %files将从%buildroot中获取所有列出的文件,并将其放入包中.
| 归档时间: |
|
| 查看次数: |
8733 次 |
| 最近记录: |