如何创建可重定位的 rpm 包,无需编译
how to create a relocatable rpm package , no compile
我正在尝试创建 "relocatable RPM" 一堆脚本和 .png 文件。没有build/compile。我写了
Name: utp
Version: 1.0
Release: 1%{?dist}
Summary: some summary
Group: Applications/Engineering
License: Proprietary
URL: http://www.example.com
Source0: %{name}-%{version}.tgz
BuildArch: noarch
Prefix: /opt
%description
A very nice description
%prep
echo "=== prep ... done"
%setup -n utp
echo "=== setup ... done"
# %files -f %{_tmppath}/files.list
%files
然后我得到
medi@medi:~/work> rpm -qi -p rpmbuild/RPMS/noarch/utp-1.0-1.el8.noarch.rpm
Name : utp
Version : 1.0
Release : 1.el8
Architecture: noarch
Install Date: (not installed)
Group : Applications/Engineering
Size : 0
License : Proprietary
Signature : (none)
Source RPM : utp-1.0-1.el8.src.rpm
Build Date : Mon 17 Feb 2020 03:44:00 PM PST
Build Host : medi.example.com
Relocations : /opt
URL : http://www.example.com
Summary : some summary
Description :
A very nice description
和
medi@medi:~/work> rpm -ql -p rpmbuild/RPMS/noarch/utp-1.0-1.el8.noarch.rpm
(contains no files)
medi@medi:~/work>
问题很可能与“%files”有关。我试图指定一个列表(现在注释掉了),但是我 运行 变成了下面的
Processing files: utp-1.0-1.el8.noarch
error: Directory not found: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/opt/utp
error: File not found: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/opt/utp/utg
error: File not found: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/opt/utp/utg/UserGuide.txt
我的 file.list 看起来像
/opt/utp/
/opt/utp/utg
/opt/utp/utg/UserGuide.txt
/opt/utp/utg/install.txt
因为我想让它成为一个可重定位的(见前缀:/opt),我在前面加上了'/opt'。
总的来说,我觉得很迷茫。是的,我确实阅读了文档,但我错过了它。
您的 %build
和 %install
节应该仍然存在;一个解压缩您的图像源,另一个将它们复制到 buildroot 中的最终位置。
pkg 没有内容的原因是因为 %file 指令是空的,使用 -f 时必须注意文件的位置。经过多次阅读,我发现 %files 默认在 %{buildroot} 中查找文件,所以这个组合解决了它
%install
cp -r ./* %{buildroot}
%files
/%{name}
所以,现在我有了内容,但后来我 运行 进入了一些 shebang_mangling,我不得不禁用它。
我正在尝试创建 "relocatable RPM" 一堆脚本和 .png 文件。没有build/compile。我写了
Name: utp
Version: 1.0
Release: 1%{?dist}
Summary: some summary
Group: Applications/Engineering
License: Proprietary
URL: http://www.example.com
Source0: %{name}-%{version}.tgz
BuildArch: noarch
Prefix: /opt
%description
A very nice description
%prep
echo "=== prep ... done"
%setup -n utp
echo "=== setup ... done"
# %files -f %{_tmppath}/files.list
%files
然后我得到
medi@medi:~/work> rpm -qi -p rpmbuild/RPMS/noarch/utp-1.0-1.el8.noarch.rpm
Name : utp
Version : 1.0
Release : 1.el8
Architecture: noarch
Install Date: (not installed)
Group : Applications/Engineering
Size : 0
License : Proprietary
Signature : (none)
Source RPM : utp-1.0-1.el8.src.rpm
Build Date : Mon 17 Feb 2020 03:44:00 PM PST
Build Host : medi.example.com
Relocations : /opt
URL : http://www.example.com
Summary : some summary
Description :
A very nice description
和
medi@medi:~/work> rpm -ql -p rpmbuild/RPMS/noarch/utp-1.0-1.el8.noarch.rpm
(contains no files)
medi@medi:~/work>
问题很可能与“%files”有关。我试图指定一个列表(现在注释掉了),但是我 运行 变成了下面的
Processing files: utp-1.0-1.el8.noarch
error: Directory not found: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/opt/utp
error: File not found: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/opt/utp/utg
error: File not found: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/opt/utp/utg/UserGuide.txt
我的 file.list 看起来像
/opt/utp/
/opt/utp/utg
/opt/utp/utg/UserGuide.txt
/opt/utp/utg/install.txt
因为我想让它成为一个可重定位的(见前缀:/opt),我在前面加上了'/opt'。
总的来说,我觉得很迷茫。是的,我确实阅读了文档,但我错过了它。
您的 %build
和 %install
节应该仍然存在;一个解压缩您的图像源,另一个将它们复制到 buildroot 中的最终位置。
pkg 没有内容的原因是因为 %file 指令是空的,使用 -f 时必须注意文件的位置。经过多次阅读,我发现 %files 默认在 %{buildroot} 中查找文件,所以这个组合解决了它
%install
cp -r ./* %{buildroot}
%files
/%{name}
所以,现在我有了内容,但后来我 运行 进入了一些 shebang_mangling,我不得不禁用它。