Como você usa o rpmbuild para fazer um pacote rpm quando há arquivos não encontrados ou erros de permissão?

1

Estou tentando criar um arquivo RPM para o utilitário wget. Ambas as minhas tentativas (com sudo e sem sudo) para usar o comando rpmbuild não criam um arquivo .rpm.

Eu corro um comando "sudo rpmbuild" para usar um arquivo de especificação. Mas eu recebo esses erros:

error: File not found: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wget error: File not found: /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/share/man/man1/wget.1

Se eu criar manualmente os caminhos de diretório e copiar manualmente os arquivos, me deparo com outros problemas no futuro. Eu acho que algo está errado se o comando rpmbuild espera que os arquivos de chave estejam nos locais acima.

Eu li que foi recomendado não usar o sudo. Quando não uso o sudo, o comando rpmbuild ( rpmbuild -v -bb --clean SPECS/wget.spec ) mostra isso:

Executing(%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: cannot remove 'wget-1.19/po/[email protected]': Permission denied rm: cannot remove 'wget-1.19/po/zh_CN.po': Permission denied rm: cannot remove 'wget-1.19/po/id.gmo': Permission denied rm: cannot remove 'wget-1.19/po/gl.gmo': Permission denied ...

Eu vejo outras linhas "rm cannot remove ... Permission denied". Eu esperava que o comando rpmbuild funcionasse. Eu alterei as permissões da pasta wget-1.19 para ser 777 (via sudo chmod) com o proprietário e o grupo sendo idênticos ao usuário executando o comando rpmbuild. Eu ainda tive 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 com base no exemplo do arquivo de especificação aqui: link

    
por Jermoe 29.11.2017 / 01:52

1 resposta

2

Este erro:

error: File not found: /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

assim o rpmbuild está esperando este arquivo no caminho $ RPM_BUILD_ROOT / usr / local / bin / wget mas ele não está lá. Portanto, esse erro. Vice versa para a página man.

Você pode executar rpmbuild -bi , que será interrompido logo após %install phase, e você poderá verificar o conteúdo de /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/, em que make install coloca os arquivos.

Eu acho que ou

%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

consertará seu erro. (apenas um desses!)

    
por 29.11.2017 / 13:53