Crear paquetes .deb a partir dun .tar.gz

Imaxe de oscar
Enviado por oscar en 10 Abril, 2008 - 08:14.

Dunha forma moi sinxela vou explicar coma crear un paquete .deb a partires dun .tar.gz. Existen varios métodos, pero eu usarei checkinstall que considero que é o máis sinxelo de todos.

Por que creares un paquete .deb e non instalar directamente o .tar.gz? Moi sinxelo, porque se instalamos directamente o .tar.gz e logo queremos eliminalo paquete teremos que ir buscando polo disco duro onde meteu os arquivos e borrándoos a man. Co paquete .deb o instalaremos unha vez creado coma un paquete debian máis e logo o poderemos desinstalar tamén de igual maneira borrando xa os arquivos sen problema.

Antes de ren teremos que instalalo paquete checkinstall porque non ven por defecto nas instalacións.

Descripción do paquete

administrador@gsipc5:/tmp$ apt-cache search -n checkinstall
checkinstall - installation tracker

Instalamos o mesmo

administrador@gsipc5:/tmp$ apt-get install checkinstall

Podemos ver unha descripción do mesmo unha vez xa instalado se facemos man checkinstall e veremos onde pon descripción algo coma isto:

administrador@gsipc5:/tmp$ man checkinstall
DESCRIPTION
       checkinstall  is  a  program  that monitors an installation procedure(such as
       make install, install.sh ), and creates a standard package for your distribution
       (currently deb, rpm and tgz packages are supported) that you
       can install through your distribution’s package management system (dpkg,
       rpm or installpkg).
       Note that for most useful actions, checkinstall must be run as root.

Temos tamén que o programa lee as opcións do ficheiro /etc/checkinstallrc, inda que istas serán sobreescritas por aquelas que nos lle pasemos por defecto dende a liña de comandos se lle indicamos algunha (No noso caso non sobreescribiremos ningunha opción dende a liña de comandos xa que as que veñen por defecto sírvennos)

Baixamos o paquete .tar.gz do que queiramos crealo .deb e o desempaquetamos

administrador@gsipc5:/tmp$ tar xfzv paquete.tar.gz
administrador@gsipc5:/tmp$cd paquete

Facemos o configure e o make coma se fora un paquete normal .tar.gz, mais non facemos o make install

administrador@gsipc5:/tmp/paquete$./configure
administrador@gsipc5:/tmp/paquete$make

En vez do make install executamos o checkinstall que nos irá levando por unha serie de pasos:

administrador@gsipc5:/tmp/paquete$sudo checkinstall
checkinstall 1.6.1, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
           Este software es distribuído de acuerdo a la GNU GPL

Á seguinte pregunta contestarei que non xa que non creo crear documentación

The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]: n
*****************************************
**** Debian package creation selected ***
*****************************************
Este paquete será creado de acuerdo a estos valores:
0 -  Maintainer: [ administrador@dominio.com ]
1 -  Summary: [ Lemur 4.5 ]
2 -  Name:    [ lemur ]
3 -  Version: [ 4.5 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ lemur-4.5 ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]

Meto 0 pra cambiar ó usuario que é o mantedor e póñome eu (por defecto colle usuario co que estás logueando e nome da máquina

Introduce un número para cambiar algún dato u oprime ENTER para continuar:0
Enter the maintainer's name and e-mail address:
>> oscar@dominio.com
Este paquete será creado de acuerdo a estos valores:
0 -  Maintainer: [ oscar@dominio.com ]
1 -  Summary: [ Lemur 4.5 ]
2 -  Name:    [ lemur ]
3 -  Version: [ 4.5 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ amd64 ]
8 -  Source location: [ lemur-4.5 ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
Introduce un número para cambiar algún dato u oprime ENTER para continuar:
Installing with make install...

Ó final de todo o proceso se todo foi ben tenos que aparecer algo coma isto:

**********************************************************************
 Done. The new package has been installed and saved to
 /tmp/paquete/paquete_amd64.deb
 You can remove it from your system anytime using:
      dpkg -r lemur
**********************************************************************

Agora xa temos o paquete na dirección que nos indica e poderémolo instalar con:

administrador@gsipc5:/tmp/paquete$sudo dpkg -i paquete_amd64.deb

E pra removelo será o mesmo pero ca opción -r tal e coma nos indica o checkinstall ó rematar de executarse

Espero que os serva de axuda,
Óscar Casal Sánchez

Mail: oscar.casal[at]gmail.com


( categorías: )
Imaxe de Paco

E as dependencias

como resolve o tema das dependencias do pacote??

 

Mess with the Best, Die like the Rest.

Imaxe de oscar

Dependencias

   Boas Paco,

   Ti date conta que fas o configure e o make o paso que troca é que non fas o make install, co cal o tema das dependencias queda resolto xa antes.

   O único que fas cando fas un make install é copiar os arquivos que compilaches ás rutas definitivas, entón o que facemos é en vez de iso empaquetalo e logo instalalo pra así facilmente desinstalalo sen deixar rastro se queremos. Ou pra crear diferentes versións empaquetadas do mesmo.

 

Imaxe de Paco

Okis pero si...

Okis, e que pasa se compilas dinamicamente?

Supoño que terá algún sistema de control, lendo o Makefile ou algo polo estilo...

Falo dende o descoñecemento mais que nada por curiosidade ...

 

Mess with the Best, Die like the Rest.

Imaxe de oscar

Como ya te dije el make

Como ya te dije el make install lo único que hace es:

cp librería /lib/

cp etc/fichero /etc/fichero

Con lo cual el make install no comprueba nada. El checkinstall lo que hace es empaquetar todo lo que ya tienes compilado y crear un deb. Así que de cascarte te cascará en el make por problemas de librerías, pero una vez que has hecho el mail si lo empaquetas no cascará, más si es como dices tú librerías estácticas.