Geração de Pacotes


04/02/2004 - Geração de pacotes TGZ, RPM e DEB

Trabalhando como Analista de Suporte tenho que, muitas vezes, instalar sempre os mesmos softwares em novos clientes.
Verificando essa repetitividade resolvi estudar como gerar pacotes para que as futuras instalações sejam facilitadas e agilizadas.
Foi então que descobri o checkinstall! O checkinstall, durante a criação deste artigo, encontra-se na versão 1.5.3 com a versão 1.6.0 em beta 3.
Faça o download agora mesmo: http://asic-linux.com.mx/~izto/checkinstall/
O checkinstall permite a geração fácil de pacotes .tgz, .rpm e .deb. Para aqueles que não tem familiaridade com o .tgz, este não trata-se apenas de um tar compactado, mas sim um tar compactado especificamente estruturado para instalação do software no Slackware, utilizando o comando, por exemplo: installpkg pacote-0.1.tgz
Para instalá-lo é fácil, basta aquela tradicional combinação: make ; su ; make install
Qualquer dúvida leia o arquivo INSTALL dentro do diretório do checkinstall (após descompactá-lo).
Pois bem, vou me deter em como gerar os pacotes utilizando o checkinstall.

Basta que ao invés de digitar "make install", digitemos: checkinstall

Veja o exemplo de geração de um pacote .tgz (para Slackware):
Entenda [ENTER] como "pressione enter". Onde tem-se "..." entenda como texto não importante.

	root@kienetz:/usr/local/src/xchm-0.8.6# checkinstall
	
	checkinstall 1.5.3, Copyright 2001 Felipe Eduardo Sanchez Diaz Duran
		This software is released under the GNU GPL.
		 
	The package documentation directory ./doc-pak does not exist.
	Should I create a default set of package docs?  [y]: n

	...

	======================== Installation succesful ==========================
	
	Copying files to the temporary directory...OK
	Striping ELF binaries and libraries...OK
	Compressing man pages...OK
	Building file list...OK
	
	Please choose the packaging method you want to use.
	Slackware [S], RPM [R] or Debian [D]? S
	
	Please write a description for the package. Remember that pkgtool shows
	only the first one when listing packages so make that one descriptive.
	End your description with an empty line or EOF.
	>> Programa para leitura de arquivos .chm no Linux [ENTER]
	>> [ENTER]
	
	This package will be built according to these values:
	
	1 -  Summary: [ Programa para leitura de arquivos .chm no Linux ]
	2 -  Name:    [ xchm ]
	3 -  Version: [ 0.8.6 ]
	4 -  Release: [ 1 ]
	5 -  License: [ GPL ]
	6 -  Group:   [ Applications/System ]
	7 -  Architecture: [ i386 ]
	8 -  Source location: [ xchm-0.8.6 ]
	9 -  Alternate source location: [  ]
	
	Enter a number to change any of them or press ENTER to continue: [ENTER]
	
	...
	
	Done. The new package has been installed and saved to
	/usr/local/src/xchm-0.8.6/xchm-0.8.6-i386-1.tgz
	
	You can remove it from your system anytime using:
	
	      removepkg xchm-0.8.6-i386-1


Pronto! O arquivo .tgz já foi gerado no diretório indicado e já foi instalado (como seria ao executar make install).
Porém agora você tem a possibilidade de removê-lo com um simples: removepkg pacote.tgz

Claro que você pode descompactar o arquivo e examinar sua estrutura interna para fins didáticos, pois você pode querer acrescentar arquivos manualmente que não fazem parte da instalação padrão.

Para gerar RPM pouco muda, basta selecionar R ao invés de S na seleção do tipo de empacotamento e o arquivo é criado em /usr/src/rpm/RPMS/i386/ ao invés do diretório dos fontes no caso do TGZ (para Slackware).

É assim tão fácil para .DEB também.