relocatable rpm --install завершается с ошибкой: распаковка архива не удалась для файла / utp: cpio: mkdir завершилась неудачно - такого файла или каталога нет - PullRequest
0 голосов
/ 20 февраля 2020

Учитывая это spe c

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.

Во время обработки% файлов я вижу

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

У меня такое чувство, что мне нужно иметь «/ opt» где-то в моих файлах% или% install Можете ли вы сказать, что не так?

1 Ответ

0 голосов
/ 20 февраля 2020

Я исправил эту проблему, добавив дополнительные инструкции в% install и% files.

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

%files
/opt/%{name}
...