Quiero crear un archivo DEB manualmente. Me gustaría proporcionar una carpeta que contenga datos para instalar y un script que se ejecutará después de la instalación.
es posible?
Quiero crear un archivo DEB manualmente. Me gustaría proporcionar una carpeta que contenga datos para instalar y un script que se ejecutará después de la instalación.
es posible?
Respuestas:
Mi recomendación es hacer un paquete fuente. Instale build-essential , debhelper , dh-make . Cambie al directorio donde están los archivos que desea instalar (el nombre del directorio debe tener la forma $PACKAGE-$VERSION
, por ejemplo, myapp-4.2-1
para su primer intento de empaquetar Myapp V4.2), y ejecútelo dh_make --createorig
. Responde a las preguntas. Debhelper creará la infraestructura básica necesaria para construir un paquete mediante la generación de archivos en un subdirectorio llamado debian
, tanto algunos archivos obligatorios como plantillas para archivos opcionales. Es posible que deba modificar algunos de estos archivos:
debian/rules
para construir lo que necesita construir e instale los archivos en el lugar correcto. Si solo necesita copiar algunos archivos y no compilar cosas, simplemente edite el archivo debian/install
para especificar qué archivos deben instalarse y dónde.debian/copyright
para agregar información de licencia sobre su paquete e información sobre dónde obtener la última versión (si corresponde).debian/changelog
para eliminar la referencia a un ITP (eso solo es relevante si está trabajando para el proyecto Debian). Cambiar el nombre debian/postinst.ex
de debian/postinst
y añadir sus comandos posteriores a la instalación allí. Si luego actualiza su paquete, ejecútelo debchange -i
para agregar una entrada de registro de cambios o edite el archivo en Emacs (con dpkg-dev-el instalado).Ejecute dpkg-buildpackage -rfakeroot -us -uc
para compilar el .deb
paquete (elimínelo -us -uc
si desea firmar el paquete con su clave PGP).
Si decide hacer un paquete binario directamente sin construirlo a partir de un paquete fuente, lo cual no es realmente más fácil porque no hay tantas herramientas para facilitar el proceso, necesitará cierta familiaridad básica con el formato de los paquetes deb. Se describe en el Manual de políticas de Debian , en particular el cap. 3 (formato de paquetes binarios) , cap. 5 (archivos de control) , cap. 6 (scripts de instalación) y apéndice B (manipulación de paquetes binarios) .
Asegúrese de que su paquete instala los archivos esperados /usr/share/doc/copyright
(que contienen la licencia del contenido del paquete, así como dónde encontrar la última versión del paquete) y /usr/share/doc/changelog.Debian.gz
(que contiene el registro de cambios del paquete deb). No los necesita si solo va a usar el paquete internamente, pero es mejor tenerlos.
Si tiene las herramientas de Debian disponibles, úselas dpkg-deb
para construir el paquete. En el directorio que contiene los datos a instalar, agregue un directorio llamado DEBIAN
en el nivel superior, que contenga los archivos de control y las secuencias de comandos de mantenimiento.
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
Si no tiene las herramientas de Debian, cree un archivo de los archivos que desea empaquetar data.tar.gz
, un archivo separado de los archivos de control llamados control.tar.gz
(sin subdirectorios) y un archivo de texto llamado debian-binary
y que contiene el texto 2.0
.
cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz
Se necesita al menos un archivo de control con los campos Package
, Maintainer
, Priority
, Architecture
, Installed-Size
, Version
, y cualquier declaración de dependencia necesaria.
Se llama al script que se ejecutará después de la instalación postinst
. Asegúrese de hacerlo ejecutable. Va al costado control
.
Si ya tiene un paquete binario de otra distribución, puede usar alien para convertirlo.
dch -i
.
ar
haciendo que tar
no es?
dh_make --createorig
usos, es necesario export DEBEMAIL="me@example.com"
y export DEBFULLNAME="Firstname Lastname"
de antemano.
En primer lugar, debe crear una carpeta de compilación y un archivo de sus archivos: tar czvf data.tar.gz files
Luego, en la carpeta de compilación, debe crear un archivo de control con algunas informaciones deseadas:
Package: xxxxxx
Version: 0.0.1
Section: user/hidden
Priority: optional
Architecture: armel
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: Your Name <xxx@xxx.xx>
Description: This is optional, but creates warnings if left out
Luego puede agregar de forma independiente los scripts de shell preinst, postint, prerm y postrm para controlar el comportamiento previo y posterior a la instalación y previo y posterior a la eliminación del archivo .deb y luego puede crear el archivo de control con tar: tar czvf control.tar.gz control preinst postinst prerm postrm
A continuación, necesita un archivo debian-binaria: echo 2.0 > debian-binary
. En su carpeta de compilación debería tener ahora estos archivos: debian-binary
control.tar.gz
y data.tar.gz
.
Finalmente necesitas un ar
paquete para crear el archivo .deb:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
esto podría valer la pena enfatizar que el orden es importante: el control debe venir antes que los datos.
Hago muchos paquetes, y hacer uno completo no es un asunto trivial. En una nota positiva, los archivos y las secuencias de comandos son mucho menos trabajo. Puede crear dicho paquete, de manera muy simple, con una herramienta conocida como debreate .
Debreate es una GUI realmente simple, solo para crear paquetes DEB simples. Puede especificar qué archivos, a dónde van y si / qué debe ejecutarse en la publicación / preinstalación / desinstalación. Solía hacer todos mis paquetes de la manera estándar, pero después de comenzar a usar esta herramienta, solo regresaré cuando sea necesario.
Consulte el Wiki de Debian sobre Empaquetado , tal vez equivs
(ver enlace) ya satisfaga sus requisitos.
La página de Wikipedia sobre el deb
formato de archivo también incluye muchos enlaces útiles.
Me encontré con esto con Zimbra 7 en Debian usando sus paquetes de Ubuntu. (Soy terco, me gusta Debian> bUbuntu a pesar de que Zimbra lo lanzó solo para Ubuntu). No estoy seguro de cómo trabajé antes, ¡estoy seguro de que no tuve que hacer esto cuando instalé esto anteriormente!
mkdir new
for i in *.deb
do echo `date`: working on $i
ar x $i
cd control
rm * 2> /dev/null
tar -xzpvf ../control.tar.gz
tr "_" "-" < control > control2
mv -v control2 control
tar -czpvf ../control.tar.gz .
cd ..
ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control
Todos sus nuevos archivos .deb estarán en new/
.
Nota : esto estaba en squeeze - dpkg en wheezy tiene --force-bad-version ahora.
Para la creación rápida de paquetes, puede usar el programa checkinstall. Realiza una instalación del programa, observa los cambios y crea un paquete deb o rpm.
$ apt-get install build-essential dh-make debhelper devscripts
$ wget http://nmap.org/dist/nmap-LAST.tar.bz2
$ tar xf nmap-LAST.tar.bz2
$ cd nmap-LAST
$ dh_make -s -e youremail@site.org -f ../nmap-LAST.tar.bz2
$ apt-get install libgtk2.0-dev flex bison libpcap0.8-dev \
libpcre3-dev binutils-dev python-all-dev
$ dpkg-buildpackage