可重定位的rpm-安装失败,并出现以下错误:在文件/ utp上解压缩归档失败:cpio:mkdir失败-没有这样的文件或目录

问题描述 投票:0回答:1

鉴于此规格

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:...

rpmbuild rpm-spec
1个回答
0
投票

我通过在%install和%files中添加更多说明来解决此问题。

%install
mkdir -p %{buildroot}/opt/
cp -r ./* %{buildroot}/opt/utp

%files
/opt/%{name}
© www.soinside.com 2019 - 2024. All rights reserved.