Criando um RPM simples no Oracle Linux (RedHat) usando o rpm build

0

Eu quero fazer um RPM usando um determinado usuário, a partir de um local de diretório de compilação especificado. O RPM contém vários arquivos ou um gzip e deve copiar esses arquivos para um local predefinido (portanto, ele deve ser reposicionável).

Eu já estive no site do Fedora e em outros tutoriais (incluindo o Stack Overflow), mas nada parece funcionar. Tudo o que consegui (na melhor das hipóteses) foi apenas um src.rpm que dá um erro ao tentar escrever em% sourcedir / usr / src / redhat / SOURCES por alguma razão.

Tudo que eu quero é um arquivo de especificação que possa criar um RPM que possa manipular um gzip ou vários arquivos de texto simples, descompactá-lo / copiá-los para o local predefinido. A compilação do rpm deve gerar um arquivo rpm no diretório RPM.

Não estou interessado em outras ferramentas que criam RPMs, mas em como criar uma usando o rpm build.

Usando o RPM versão 4.4.2.3

    
por random 25.11.2013 / 21:47

1 resposta

1

Haverá um pouco mais de informação do que você pediu. Eu suponho que o pôster original da questão sabe como o rpmbuild funciona, mas talvez outra pessoa não o faça.

Procedimento simples para criar um RPM instalando dois arquivos.

Crie hierarquia de diretórios para o rpmbuild: mkdir -p ~/rpmbuild/{SPEC,SOURCES} .

Copie algum conteúdo de exemplo para seus arquivos RPM fictícios (esses são necessários ao usar o arquivo SPEC mais adiante neste exemplo): cp /etc/profile ~/rpmbuild/SOURCES/dummy.file && cp /etc/shells ~/rpmbuild/dummy.another.file .

Cole o seguinte em ~/rpmbuild/SPEC/dummyrpmfile.spec :

Summary:        A dummy RPM. Creates file /etc/dummy/file.
Name:           dummyrpmfile
Version:        0.1
Release:        1
Vendor:         Super User
Packager:       Super User
License:        GPL
Group:          System Environment/Base
BuildArch:      noarch
Source0:        dummy.file
Source1:        dummy.another.file
Prefix:         /etc/dummy    

%description
A dummy RPM. Creates file /etc/dummy/file. And also directory /etc/dummy.
Very cool package. You should install this. Oh, yes, and it also makes
/etc/dummy/another.file too.

%install
# create directory /etc/dummy
%{__install} -d -m0755 %{buildroot}/etc/dummy
# and copy the file from SOURCES/file to <buildroot>/etc/dummy
%{__install} -m 0644 %{SOURCE0} %{buildroot}/etc/dummy/file
%{__install} -m 0644 %{SOURCE1} %{buildroot}/etc/dummy/another.file

%files
/etc/dummy/file
/etc/dummy/another.file

Em seguida, execute cd ~/rpmbuild && rpmbuild -ba SPEC/dummyrpmfile.spec .

Isso deve produzir um RPM 'noarch' caso seja apenas um dado e tal que não tem diferenças entre arquiteturas de 32 e 64 bits, por exemplo. Os resultados devem estar em ~/rpmbuild/RPMS/noarch/dummyrpmfile.rpm .

Links de ajuda: Como o prefixo funciona .

    
por 26.11.2013 / 14:45