Estou tentando criar um arquivo RPM para o utilitário wget. Ambas as minhas tentativas (com sudo e sem sudo) de usar o comando rpmbuild falharam ao criar um arquivo .rpm.
Eu executo um comando "sudo rpmbuild" para usar um arquivo de especificações. Mas recebo estes erros:
erro: Arquivo não encontrado: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wget erro: Arquivo não encontrado: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr /local/share/man/man1/wget.1
Se eu criar manualmente os caminhos dos diretórios e copiar manualmente os arquivos, terei outros problemas no futuro. Acho que algo está errado se o comando rpmbuild espera que os arquivos principais estejam nos locais acima.
Eu li que era recomendado não usar o sudo. Quando não uso o sudo, o comando rpmbuild ( rpmbuild -v -bb --clean SPECS/wget.spec
) mostra isto:
Executando (%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: não é possível remover 'wget-1.19/po/[e-mail protegido]': Permissão negada rm: não é possível remover 'wget-1.19/po/zh_CN.po': Permissão negada rm: não é possível remover 'wget-1.19/po/id.gmo': Permissão negada rm: não é possível remover 'wget-1.19/po /gl.gmo': Permissão negada...
Vejo outras linhas "rm não pode remover ... Permissão negada". Eu esperava que o comando rpmbuild funcionasse. Alterei as permissões da pasta wget-1.19 para 777 (via sudo chmod) com o proprietário e o grupo sendo idênticos ao usuário que executa o comando rpmbuild. Eu ainda tinha o problema.
O que posso fazer para criar um pacote RPM do utilitário wget?
# 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
O texto acima foi modificado, mas fortemente baseado no exemplo do arquivo de especificações aqui:https://www.ibm.com/developerworks/library/l-rpm1/index.html
Responder1
Esse erro:
erro: Arquivo não encontrado: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wget
significa que você especificou este arquivo na seção %files:
%files
/usr/local/bin/wget
então rpmbuild está esperando este arquivo no caminho $RPM_BUILD_ROOT/usr/local/bin/wget, mas ele não está lá. Portanto este erro. Vice-versa para a página de manual.
Você pode executar rpmbuild -bi
o que irá parar logo após %install
a fase e verificar o conteúdo de /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/ onde make install
realmente colocar os arquivos.
EUadivinharisso também
%install
make install prefix=$RPM_BUILD_ROOT/usr/local
ou
%files
%defattr(-,root,root)
/usr/bin/wget
%doc %attr(0444,root,root) /usr/share/man/man1/wget.1
corrigirá seu erro. (apenas um desses!)