Compilar un programa y empaquetarlo en .deb
Bien este es un texto en el cual se explica paso a paso como compilar un programa y empaquetarlo en .deb
NECESITAMOS:
- build-essential
- gcc & make
- devscripts
- dh-make
- autoconf
- automake
- linda
- gnupg
- fakeroot
Bajar todo por APT-GET.
Una cosa importante y se me olvidaba es que en el makefile especifiquen que el prefix es /usr, ya que en debian no podemos empaquetar algo que se instale en /usr/local (de hecho se puede, pero no se debe).
Bien, de manera rapida les digo como hice un paquete deb. Primero supongamos que queremos empaquetar el ultimo snapshot de gaim. Los pasos serian asi:
baje el cvs de gaim, las instrucciones para ello lo encuentran en su pagina; luego hice un directorio llamado “deva”en mi home, ahi meti el source en .tar.gz, lo descomprimi e hice:
./autogen.sh
dh_make -e omar@blahblahblah.com -f ../gaim-2.0.0cvs.tar.gz
en el directorio de sources de gaim, Ahi se nos va a crear un directorio llamado “debian” editamos el archivo de control poniendo las dependencias necesarias las pueden averiguar de esta forma:
objdump -p /path/al/binario|grep -i needed
luego:
dpkg -S coso.x.so
con eso averiguan que paquete necesita.
Una vez hecho esto en su fichero de control ponen si hace conflicto con alguno (Conflict:) lo que provee con Provides: alguno que lo reemplace con Replaces:,etc.. (para ver un ejemplo de un archivo de control, hagan apt-cache show programa).
En el mismo directorio de debian esta el archivo copyright donde debemos poner el que debianizo el
paquete (osea nosotros) y el upstream author, osea el que escribio el programa, ademas de incluir la licencia.
Tambien vamos a editar el changelog con los cambios que hemos hecho.
El README.debian lo borramos si esque nuestro paquete debianizado no tiene ninguna diferencia con el original (osea q al debianizarlo hayamos cambiado algo).
El conffile.ex sirve para indicar que no sobreescriba alguna
configuracion de ese paquete viejo (por ejemplo algun archivo en /etc).
Si el user ha editado a mano y luego le sobreescribimos esto pues sera muy molesto, esto ya depende del programa.
El archivo de cron.* tambien hay que borrarlo, ese archivo indica si la tarea se debe ejecutar cada X tiempo.
El archivo dirs es donde se deberia instalar pero como el configure ya le define un path no hace falta, asi que se borra tambien.
Los archivos emacs-* sirven para que si nuestros paquetes son archivos de emacs que pueden ser compilados en tiempo de instalacion, lo definamos aqui, pero como no eraa mi caso pues remove.
El init.d.x tambien lo borramos a menos que estemos empaquetando un demonio que inicie al cargarse el sistema..asi que remove tambien xD.
Debemos de poner una pagina man en manpage.1.ex, y un archivo del menu de debian en menu.ex.
Algo importantisimo es el archivo rules, que es un Makefile este le indica al make que hacer..Lo pueden editar aunque en mi caso no fue necesario ahora viene lo mejor
ejecutamos:
dpkg-buildpackage -rfakeroot
y ahi se nos debio de crear todo, para una proxima modificacion solo
hariamos:
debian/rules binary
y listo, ahi queda nuestro deb, lo pueden firmar con Gnupg si quieren, aunque yo no lo hice Bueno, como sea, esto les da una vaga idea de como empaquetar.
Si tienes alguna duda o no entiendes los ejemplos dados ahi, y en los mismos archivos de debian, consulta la documentacion oficial.
ah algo mas, no necesitas de ser DD para hacer un deb, pero si quieres si quieres serlo lee mas, y adopta un paquete que no tenga quien lo desarrolle.
autor: omar

Un comentario en “Compilar un programa y empaquetarlo en .deb”
Millions long for immortality who do not know what to do with themselves on a rainy Sunday afternoon — Susan Ertz
Because of what you have done the heavens have become part of man’s world… For one priceless moment in the whole history of man all of the people on this Earth are truly one.
Beware of computer programmers that carry screwdrivers — Leonard Brandwein
Build a man a fire, and he’ll be warm for a day Set a man on fire, and he’ll be warm for the rest of his life — Terry Pratchett
February 20, 2008 @ 14:04