파일을 찾을 수 없거나 권한 오류가 발생한 경우 rpmbuild를 사용하여 rpm 패키지를 만드는 방법은 무엇입니까?

파일을 찾을 수 없거나 권한 오류가 발생한 경우 rpmbuild를 사용하여 rpm 패키지를 만드는 방법은 무엇입니까?

wget 유틸리티용 RPM 파일을 생성하려고 합니다. rpmbuild 명령(sudo 포함 및 제외)을 사용한 두 번의 시도에서 .rpm 파일을 생성하지 못했습니다.

사양 파일을 사용하기 위해 "sudo rpmbuild" 명령을 실행합니다. 하지만 다음과 같은 오류가 발생합니다.

오류: 파일을 찾을 수 없음: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wget 오류: 파일을 찾을 수 없음: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64 /usr /local/share/man/man1/wget.1

디렉토리 경로를 수동으로 생성하고 파일을 수동으로 복사하면 다른 문제가 발생합니다. rpmbuild 명령이 중요한 파일이 위 위치에 있을 것으로 예상한다면 뭔가 잘못된 것 같습니다.

sudo를 사용하지 않는 것이 좋습니다. sudo를 사용하지 않을 때 rpmbuild 명령( rpmbuild -v -bb --clean SPECS/wget.spec)은 다음을 표시합니다.

실행(%prep): /bin/sh -e /var/tmp/rpm-tmp.NiuIFV + umask 022 + cd /home/ec2-user/mywget/BUILD + cd /home/ec2-user/mywget/BUILD + rm -rf wget-1.19 rm: 'wget-1.19/po/를 삭제할 수 없습니다.[이메일 보호됨]': 권한이 거부됨 rm: 'wget-1.19/po/zh_CN.po'를 삭제할 수 없음: 권한이 거부됨 rm: 'wget-1.19/po/id.gmo'를 삭제할 수 없음: 권한이 거부됨 rm: 'wget-1.19/po를 삭제할 수 없음 '/gl.gmo': 권한이 거부되었습니다...

다른 "rm은 삭제할 수 없습니다...권한이 거부되었습니다"라는 줄이 표시됩니다. rpmbuild 명령이 작동하기를 원합니다. wget-1.19 폴더의 권한을 777(sudo chmod를 통해)로 변경했으며 해당 소유자와 그룹은 rpmbuild 명령을 실행하는 사용자와 동일합니다. 여전히 문제가 있습니다.

wget 유틸리티의 RPM 패키지를 만드는 방법은 무엇입니까?

# This is a sample spec file for wget

%define _topdir     /home/ec2-user/mywget
%define name            wget 
%define release     1
%define version     1.19
%define buildroot %{_topdir}/%{name}-%{version}-root

BuildRoot:  %{buildroot}
Summary:        GNU wget
License:        GPL
Name:           %{name}
Version:        %{version}
Release:        %{release}
Source:         %{name}-%{version}.tar.gz
Prefix:         /usr
Group:          Development/Tools

%description
The GNU wget program downloads files from the Internet using the command-line.

%prep
%setup -q

%build
./configure
make

%install
make install prefix=$RPM_BUILD_ROOT/usr

%files
%defattr(-,root,root)
/usr/local/bin/wget

%doc %attr(0444,root,root) /usr/local/share/man/man1/wget.1

위 내용은 수정되었지만 여기에 있는 사양 파일 예를 크게 기반으로 합니다.https://www.ibm.com/developerworks/library/l-rpm1/index.html

답변1

이 오류:

오류: 파일을 찾을 수 없습니다: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wget

%files 섹션에 이 파일을 지정했다는 의미입니다.

%files
/usr/local/bin/wget

따라서 rpmbuild는 이 파일이 $RPM_BUILD_ROOT/usr/local/bin/wget 경로에 있을 것으로 예상하지만 거기에는 없습니다. 따라서 이 오류가 발생합니다. 맨페이지와 그 반대.

실행하면 rpmbuild -bi스테이지가 끝난 후 중지되며, %install파일이 실제로 배치된 /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/의 내용을 확인할 수 있습니다.make install

추측하다어느 하나

%install
make install prefix=$RPM_BUILD_ROOT/usr/local

또는

%files
%defattr(-,root,root)
/usr/bin/wget
%doc %attr(0444,root,root) /usr/share/man/man1/wget.1

오류를 수정해 드리겠습니다. (그 중 하나만!)

관련 정보