RPM을 빌드하려고 하는데 다음 명령을 사용하여 RPM을 빌드하면 다음과 같습니다.
[root@vmdb SPEC]# rpmbuild -v -bb SPEC/supportScripts.spec
항상 다음 오류가 발생합니다.
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.gG9C7Y
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd /root/rpmbuild/BUILD
+ rm -rf supportScripts-1
+ /usr/bin/gzip -dc /root/rpmbuild/SOURCES/supportScripts-1.tar.gz
+ /bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd supportScripts-1
/var/tmp/rpm-tmp.gG9C7Y: line 34: cd: supportScripts-1: No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.gG9C7Y (%prep)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.gG9C7Y (%prep)
인터넷에서 이 오류가 발생하는 이유를 살펴보았는데 이는 %prep/%setup에서 사용하고 있던 매크로의 잘못된 매개변수 때문이었습니다. 문제를 해결하려면 무엇을 교체해야 할지 잘 모르겠습니다. 이는 실망스럽습니다. 내 사양 파일은 다음과 같습니다.
Name: supportScripts
Version: 1
Release: 1
Summary: All the support scripts bundled into an RPM.
BuildArch: noarch
Group: Development/Tools
License: GPL
URL: http://localhost
Source0: supportScripts-1.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%description
These are all the support tools we need for new Hardware Agent builds. This will package all the scripts support uses for new builds.
%prep
%setup -q
%install
mkdir -p "$RPM_BUILD_ROOT/opt"
cp -R * "$RPM_BUILD_ROOT/opt"
%files
/opt/
%clean
rm -rf $RPM_BUILD_ROOT
%post
chown -R support:support /opt/*
chmod -R 775 /opt/
업데이트: 이상하게도 rpm이 완전히 내장되어 있음을 발견했습니다 /root/rpmbuild/RPMS/noarch
. 다음 명령을 실행했습니다.
rpm -ivh supportScripts-1-1.noarch.rpm
모든 스크립트의 압축을 풀면 기적적으로 스크립트가 거기에 있습니다! 다음 질문은 내가 실행하는 rpmbuild 명령에 문제가 있는지 걱정해야 합니까?입니다.
답변1
RPM은 귀하의 패키지가 Unix 소프트웨어의 표준 패키징 지침을 따를 것으로 기대합니다. 이것GNU 릴리스 가이드일반적이지만 GNU가 아닌 많은 소프트웨어도 이러한 규칙을 따릅니다.
특히, supportScripts, 버전 1이라는 패키지가 있으므로 tarball이 호출될 것으로 예상되며 supportScripts-1.tar.gz
, 이는 라는 디렉터리에 추출될 것으로 예상됩니다 supportScripts-1
.
RPM이 비표준 시나리오에 대처하는 방법은 여러 가지가 있을 수 있지만 가장 쉬운 방법은 예상되는 시나리오를 따르는 것입니다.