Erro ao tentar criar o RPM para o aplicativo java

2

Sou novo no empacotamento RPM e fiquei preso por um bom tempo e não consegui encontrar a causa raiz do problema. Não tenho certeza se entendi completamente o conceito de BuildRoot no arquivo de especificações.

Meu pacote de RPM acontece no meu diretório home: /home/virtual/rpmbuild .

Estou tentando empacotar um aplicativo java localizado em /home/virtual/rpmbuild/tmp/BDHistProcessor com a estrutura:

BDHistProcessor
 lib
 bin
 conf
 deploy

Aqui está o meu arquivo de especificação que eu criei:

%define _tmppath  /home/virtual/rpmbuild/tmp

Name:           BDHistProcessor
Version:        1.0.0
Release:        1%{?dist}
Summary:        component which feed data into DB

Group:        Applications/System   
License:      GPL  
URL:          https://www.tem.com/  
BuildRoot: %{tmppath}/%{name}

%description
Component which feed data into DB

%prep

%build

%install
rm -rf $RPM_BUILD_ROOT
cp -r  /home/virtual/rpmbuild/tmp/BDHistProcessor $RPM_BUILD_ROOT 

%files
%defattr(-,root,root)
%{buildroot}/BDHistProcessor/lib
%{buildroot}/BDHistProcessor/bin
%{buildroot}/BDHistProcessor/conf
%{buildroot}/BDHistProcessor/deploy
%{buildroot}/BDHistProcessor/README.txt

%doc
%changelog

A execução de rpmbuild -v -bb -clean SPECS/myRPM.spec retorna a saída:

[virtual@virtual rpmbuild]$ rpmbuild -v -bb --clean SPECS/myRPM.spec
Executing(%prep): /bin/sh -e /home/virtual/rpmbuild/tmp/rpm-tmp.t2AMGe
+ umask 022
+ cd /home/virtual/rpmbuild/BUILD
+ exit 0
Executing(%build): /bin/sh -e /home/virtual/rpmbuild/tmp/rpm-tmp.1unXP8
+ umask 022
+ cd /home/virtual/rpmbuild/BUILD
+ exit 0
Executing(%install): /bin/sh -e /home/virtual/rpmbuild/tmp/rpm-tmp.SoaH02
+ umask 022
+ cd /home/virtual/rpmbuild/BUILD
+ rm -rf /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64
+ cp -r /home/virtual/rpmbuild/tmp/BDHistProcessor /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64
+ /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip
+ /usr/lib/rpm/brp-strip-static-archive
+ /usr/lib/rpm/brp-strip-comment-note
Processing files: BDHistProcessor-1.0.0-1.el6.x86_64
error: File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/lib
error: File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/bin
error: File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/conf
error: File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/deploy
error: File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/README.txt


RPM build errors:
    File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/lib
    File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/bin
    File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/conf
    File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/deploy
    File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/README.txt

Não sei ao certo como os caminhos são alternados no relatório de erros. Alguém pode, por favor, esclarecer o que estou fazendo errado aqui?

    
por jaksky 16.12.2013 / 17:38

3 respostas

1

Plano de fundo - configuração do rpmbuild

Como você criou seu diretório rpmbuild ? Você usou uma ferramenta como rpmdev-setuptree ? Eu sempre recomendo que os novatos comecem usando este pacote, rpmdevtools .

Exemplo

Para começar, não tenho área de expansão, como usuário saml .

$ ls -la | grep -E "rpmbuild|\.rpm"
$

Em seguida, instale o pacote rpmdevtools .

$ sudo yum install rpmdevtools

Depois de ter sido instalado, você terá agora outro aplicativo que pode ser usado para criar o diretório rpmbuild .

$ rpmdev-setuptree

Ele não diz nada, mas silenciosamente fez o seguinte para você:

$ ls -la | grep -E "rpmbuild|\.rpm"
drwxrwxr-x.   7 saml saml     4096 Dec 16 12:22 rpmbuild
-rw-rw-r--.   1 saml saml      620 Dec 16 12:22 .rpmmacros

Em seguida, você terá agora a seguinte estrutura de diretórios no diretório rpmbuild developers:

$ ls -l ~/rpmbuild
total 20
drwxrwxr-x. 2 saml saml 4096 Dec 16 12:22 BUILD
drwxrwxr-x. 2 saml saml 4096 Dec 16 12:22 RPMS
drwxrwxr-x. 2 saml saml 4096 Dec 16 12:22 SOURCES
drwxrwxr-x. 2 saml saml 4096 Dec 16 12:22 SPECS
drwxrwxr-x. 2 saml saml 4096 Dec 16 12:22 SRPMS

Seu problema

Seu problema parece estar na seção %files macro do arquivo .spec . Olhando para a saída das mensagens de erro:

error: File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/lib

Observe que o caminho BUILDROOT é repetido duas vezes. Você não precisa incluir a variável $buildroot na seção %files da macro, ela já está segmentando esse diretório automaticamente para você.

Tente isso:

%files
%defattr(-,root,root)
/usr/bin/BDHistProcessor/lib
/usr/bin/BDHistProcessor/bin
/usr/bin/BDHistProcessor/conf
/usr/bin/BDHistProcessor/deploy
/usr/bin/BDHistProcessor/README.txt

Coloque o que for o destino final dos pacotes no lugar de /usr/bin .

    
por 16.12.2013 / 18:32
0

Para criar RPMs simples (apenas lista de arquivos), estou usando um script simples. O processo para fazer um RPM é simples:

1) crie um diretório que corresponda ao nome do seu pacote e crie um arquivo de especificações dentro dele como "spec". Você precisa modificar todos os itens necessários em um arquivo de especificação, como plataforma, versões, grupo, licença, changelog. Você não precisa fornecer nenhum arquivo na especificação, a lista de arquivos será preenchida automaticamente.

2) crie uma sub-árvore com todos os arquivos necessários e faça todos os links simbólicos necessários.

Execute um script. Você pode instalar um script e um pacote de demonstração para testar as compilações de RPM a partir daqui: link

    
por 16.12.2013 / 21:46
-2

Isso funcionou para mim:

BuildRoot: /var/tmp/%{name}-buildroot
    
por 03.02.2015 / 18:08