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

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

wget 유틸리티용 RPM 파일을 생성하려고 합니다. rpmbuild 명령을 사용하려는 두 가지 시도(sudo 사용 및 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

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

관련 정보