鉴于此规格
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
%undefine __brp_mangle_shebangs
%description
A very nice description
# get a list of the files
%prep
# tar -zvtf %{SOURCE0} | awk '{printf "/opt/%s\n", $NF}' > %{_tmppath}/files.list
tar -zvtf %{SOURCE0} | awk '{printf "/%s\n", $NF}' > %{_tmppath}/files.list
tar -zxvf %{SOURCE0}
echo "=== prep ... done"
# no build here
# %build
%setup -q
echo "=== setup ... done"
%install
cp -r ./* %{buildroot}
echo "=== install ... done"
%clean
echo "=== clean ... done"
# %files -f %{_tmppath}/files.list
%files
/%{name}
%defattr(-,root,root)
我可以创建一个可重定位的rpm包
medi@medi:~/work> rpm -qp --queryformat "%{prefixes}\n" rpmbuild/RPMS/noarch/utp-1.0-1.el8.noarch.rpm
/opt
但是在使用]安装时失败>
medi@medi:~/work> rpm -i --prefix /tmp/opt rpmbuild/RPMS/noarch/utp-1.0-1.el8.noarch.rpm --dbpath /tmp/mydbpath --nodeps error: unpacking of archive failed on file /utp: cpio: mkdir failed - No such file or directory error: utp-1.0-1.el8.noarch: install failed
我的目的是在/ tmp / opt中安装此软件包并使用test dbpath。
在%file处理期间,我看到
Processing files: utp-1.0-1.el8.noarch D: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/utp: directory D: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/utp/README.txt: ASCII text D: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/utp/utg: directory etc etc
我觉得我需要在我的%files或%install中的某个位置使用'/ opt'你能说出什么问题吗?
给出此规范名称:utp版本:1.0版本:1%{?dist}摘要:一些摘要组:应用程序/工程许可证:专有URL:http://www.example.com来源0:...
我通过在%install和%files中添加更多说明来解决此问题。
%install
mkdir -p %{buildroot}/opt/
cp -r ./* %{buildroot}/opt/utp
%files
/opt/%{name}