1º Aula de empacotamento RPM

Espaço reservado para desenvolvimento de empacotamento de softwares Mageia no Brasil.

1º Aula de empacotamento RPM

Mensagempor macxi » Sáb Nov 30, 2013 11:28 am

OBS: 1º Aula de empacotamento RPM, elaborada pelo will, copiada do Forum MageiaBr

Configuração, conceitos, introdução para compilado é instalação.

Para começar esta serie de aulas sobre empacotamento rpm vamos preparar o nosso sistema, o básico é:

1 . Instalar uma serie de programas:



******************************************************************************

      Obs: tentei copias as aulas, mas dá aviso de erro:
          Not Implemented
          GET to /forum/posting.php not supported.
          Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
      Vou tentar novamente outra hora



*******************************
Avatar do usuário
macxi
Suporte Wiki Mageia Brasil
Suporte Wiki Mageia Brasil
 
Mensagens: 1547
Registrado em: Qua Abr 17, 2013 10:09 pm

Re: 1º Aula de empacotamento RPM

Mensagempor macxi » Qui Dez 12, 2013 9:33 pm

Segui a dica do Padula neste tópico: Re: Erro ao tentar postar).

E assim consegui colar a aula do will abaixo:





*****************************************************************

Configuração, conceitos, introdução para compilado é instalação.

Para começar esta serie de aulas sobre empacotamento rpm vamos preparar o nosso sistema, o básico é:
1 . Instalar uma serie de programas:
Código: Selecionar todos
urpmi --w get rpm-build rpmlint task-c++-devel task-c-devel tree bash-completion

Estes pacotes tem o básico para compilar programas c e c++, também esta o rpm-build, este é o programa usado para criar pacotes RPM.

Obs.: o parametro "--w get" serve para usar este programa para baixar os pacotes, é uma opção pessoal de cada um, mas esta opção a meu ver parece ser a que menos problemas traz, também isto pode ser configurado em:
Código: Selecionar todos
[rooot@localhost ~]# drakrpm-edit-media --expert

Na janela que aparece vamos a "Opções globais" e trocamos a opção "Programa de download a ser utilizado" para "w get".

2. Criar um arquivo de texto simples na nossa home, este arquivo pode ser criado com qualquer editor de textos. Será um arquivo oculto chamado ".rpmmacros".(O arquivo pode ser criado com o comando "touch .rpmmacros", ou mesmo em kword, gedit ou otro editor, colar o texto no editor y salvar como ".rpmmacros")Aqui o conteúdo dele:
Código: Selecionar todos
_topdir (echo $HOME)/rpm
_tmppath (echo $HOME)/rpm/tmp
#_signature gpg
#_gpg_name MageiaBr
#_gpg_path ~/.gnupg

packager packager <packager@packager.com>
distribution Mageia
vendor MageiaBR

distsuffix mgabr

Este arquivo indica certos parâmetros para o rpmbuild, vamos ver linha por linha:
Código: Selecionar todos
_topdir (echo $HOME)/rpm
_tmppath (echo $HOME)/rpm/tmp

Aqui somente estamos especificando quais serão os diretórios onde o rpmbuild vai trabalhar, veremos isso mas adiante.

Código: Selecionar todos
#_signature gpg
#_gpg_name MageiaBr
#_gpg_path ~/.gnupg

Estas três linhas estão comentadas porque não existe a necessidade de usá-las no momento, a sua função e indicar os dados para a assinatura do rpm. Lembrem que para a segurança do usuário os pacotes são assinados pela distro.

Código: Selecionar todos
packager packager <packager@packager.com>
distribution Mageia
vendor MageiaBR

Aqui esta a informação sobre o empacotador e a distro. Exemplo:
Código: Selecionar todos
[usuario@localhost ~]$ urpmf --packager nyxmms2
nyxmms2:Mageia Team <http://www.mageia.org>


Uma parte interessante para repos comunitários:
Código: Selecionar todos
distsuffix mgabr

Identificaçao de onde vem o rpm, neste caso "mgabr" para o caso de pacotes criados nesta comunidade, exemplo:
Código: Selecionar todos
[usuario@localhost ~]$ urpmf --filename nyxmms2
nyxmms2:nyxmms2-0.8-2.mga.i586.rpm


3. Criar uma árvore de diretórios.
O rpmbuild precisa de diretórios de trabalho, no .rpmmacros já esta identificado o diretório ~/rpm como diretório base,mas dentro dele vamos criar alguns outros diretórios.
Para criá-los pela terminal:
Código: Selecionar todos
[usuario@localhost ~]$ mkdir -p ~/rpm/{BUILD,RPMS/i586,RPMS/x86_64,RPMS/noarch,SOURCES,SRPMS,SPECS,tmp}

Agora vemos como ficou:
Código: Selecionar todos
[usuario@localhost ~]$ tree rpm/
rpm/
├── BUILD
├── RPMS
│ ├── i586
│ ├── noarch
│ └── x86_64
├── SOURCES
├── SPECS
├── SRPMS
└── tmp

9 directories, 0 files


BUILD - Diretório de trabalho do rpmbuild
RPMS - Onde serão gerados o rpms, dependendo da arquitetura estarão dentro de i586, noarch ou x86_64
SOURCES - Onde o empacotador vai colocar os tarballs dos programas a empacotar. Enténdase "tarball" como o pacote que contém o código fonte do programa.
SPECS - SPEC é a estençao dos arquivos que vão gerar os rpm, este arquivo será o que o rpmbuild vai "ler" para gerar o pacote, ele é editado inteiramente pelo empacotador.
SRPMS - Aqui o rpmbuild vai gerar os arquivos src.rpm, estes arquivos contem tanto o tarball como o spec, por tanto estes arquivos podem ser considerados como arquivos "fonte" dos rpm, a partir deles podem ser gerado/ atualizado/ reempacotado/ novamente o rpm.
TMP - Diretório temporal de trabalho do rpmbuild.



Conclusão
Ja temos agora basicamente tudo o necessário para empacotar, só falta esclarecer algumas coisas.
a) Todo o processo de empacotado será basicamente uma "compilação e instalação" normal, a diferença é que em lugar de compilar é instalar o programa, todos esses passos vamos escrevê-los no arquivo SPEC, o rpmbuild vai pegar essa informação e criará o rpm, por tanto, o que estamos fazendo e simular uma instalação, essa simulação vai ser levada a cabo dentro do diretório ~/rpm e não vai afetar o resto do sistema. O rpmbuild sera usado como usuário comum nunca como rooot, não vamos precisar do rooot durante o empacotado, somente vai ser necessário para a instalação de dependências.
b) Para empacotar agora śo é necessário o tarball do programa, que vamos colocar dentro do diretório SOURCES, nunca devemos mexer nesse arquivo, deve ficar igual a como esta no site do projeto/desenvolvedor. Todo o trabalho do empacotador fica escrito no arquivo SPEC, não se edita de nenhuma forma o tarball, assim guardamos a integridade do programa.
c) Para empacotar não podemos ter configurados repositórios não oficiais, e também não podemos ter pacotes *-devel que não sejam oficiais.
d) Sempre devemos ter o sistema atualizado, urpmi --auto-update --auto-select
e) É recomendado configurar a terminal que vamos usar para que não limite o histórico, em todas as terminais deve ter uma opção para "guardar" n número de linhas na memoria, esta opção deve estar em um número superior a 500.
Avatar do usuário
macxi
Suporte Wiki Mageia Brasil
Suporte Wiki Mageia Brasil
 
Mensagens: 1547
Registrado em: Qua Abr 17, 2013 10:09 pm

Re: 1º Aula de empacotamento RPM

Mensagempor unix007 » Qua Fev 04, 2015 7:28 am

Perfeito,consegui criar com esse passo a passo.
O seu recalque bate no IPTABLES e dropa.
Avatar do usuário
unix007
Colaborador Intermediario Mageia
Colaborador Intermediario Mageia
 
Mensagens: 118
Registrado em: Qui Jan 29, 2015 9:39 pm
Localização: Jaraguá do sul,SC


Voltar para Empacotamento de software

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron