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
오류를 수정해 드리겠습니다. (그 중 하나만!)