cómo incluir un directorio en el paquete debuild
Frecuentes
Visto 5,895 veces
6
se crearía un paquete Debian simple en los siguientes pasos, los siguientes pasos serían un tutorial para principiantes
Considere que tengo un archivo, digamos test.sh, que simplemente imprimiría la prueba en la pantalla
#!/bin/sh
set -e
echo "this is sample debian package created " >&2
¿Cuál debería ser el resultado después de instalar el paquete debian? A) Quiero colocar el archivo anterior que llamé test.sh en /home/bla/Desktop/ después de instalar el paquete usando "dpkg -i test-1.0.deb"
Para lograr el proceso anterior, siga los pasos mencionados a continuación, ya que
mkdir test-1.0
cd test-1.0
#in order to place test.sh in /home/bla/Desktop, simply create the same directory structure in the test folder using this command
mkdir -p home/bla/Desktop/
cp test.sh home/bla/Desktop/
cd ..
cd ..
cd ..
mkdir DEBIAN
cd DEBIAN
agregue el archivo de control con los siguientes contenidos
Package: test
Version: 1.0
Section: devel
Priority: optional
Architecture: all
Essential: no
Depends: bash
Pre-Depends: no
Recommends: no
Maintainer: test <test@test.test>
Replaces: no
Provides: no
Description: A sample testpackage in order to demonstrate how to create debian packages
El paquete está listo, salga de la carpeta de prueba e ingrese dpkg --build test-1.0/
su paquete está listo y puede instalarlo usando dpkg -i test-1.0.deb
Si quiero hacer el mismo proceso con dh_make y debuild, no pude agregar la estructura de directorios donde quería que se colocara mi test.sh después de la instalación
pasos que seguí:
mkdir test-1.0
copiar la estructura de directorios como arriba
cd test-1.0/ && mkdir -p home/bla/Desktop/ cp test.sh home/bla/Desktop/
dh_make -n -s -e test@test.com
cd debian
rm *.ex *.EX
cd ..
debuild -us -uc
no importa qué mi test.sh no esté incluido en el paquete después, no sé cuál es la razón por la que he entendido del manual de debian
¿Alguien puede saber cómo hacerlo? Por favor, hágamelo saber lo antes posible. Solo quiero saber cómo puedo incluir los archivos en el paquete cuando construyo el paquete Debian usando debuild/dpkg-buildpackage como lo hice en el primer proceso, que es muy simple
1 Respuestas
13
Ejemplo de AQ/D utilizando dh* y dpkg-buildpackage:
1) Pepare el directorio de trabajo y el archivo de prueba (vamos a empaquetar "foo" script que debe instalarse en "/cualquiera/dir"):
mkdir test-0.0.1
cd test-0.0.1
echo -e "#\!/bin/sh\necho \"hi, i'm foo\"" > foo
chmod +x foo
2) Crea simple Makefile que se encargará de la instalación:
binary:
# we are not going to build anything
install:
mkdir -p $(DESTDIR)/any/dir
cp foo $(DESTDIR)/any/dir
3) Generar esqueleto de paquete:
dh_make -i --createorig
3a) Opcionalmente, ajuste el archivo de control de Debian
4) Construye el paquete:
dpkg-buildpackage -A -uc
5) Pruebe el contenido del paquete generado:
dpkg-deb -c ../test_0.0.1-1_all.deb | grep any
drwxr-xr-x root/root 0 2012-06-12 20:54 ./any/
drwxr-xr-x root/root 0 2012-06-12 20:54 ./any/dir/
-rwxr-xr-x root/root 30 2012-06-12 20:54 ./any/dir/foo
Edit: Ejemplo sin usar Makefile (si no vas a build cualquier cosa):
1) Crear datos de prueba:
mkdir test-0.0.1
cd test-0.0.1
mkdir contents
touch contents/a
touch contents/b
2) Crear esqueleto de paquete:
dh_make -i --createorig
3) Crean debian/prueba.instalar archivo con el siguiente contenido:
contents/ /usr/share/mycontents
4) Paquete de compilación:
dpkg-buildpackage -A -uc
5) Examinar el paquete construido:
dpkg-deb -c ../test_0.0.1-1_all.deb | grep contents
drwxr-xr-x root/root 0 2012-06-13 11:44 ./usr/share/mycontents/
drwxr-xr-x root/root 0 2012-06-13 11:38 ./usr/share/mycontents/contents/
-rw-r--r-- root/root 0 2012-06-13 11:37 ./usr/share/mycontents/contents/a
-rw-r--r-- root/root 0 2012-06-13 11:38 ./usr/share/mycontents/contents/b
Respondido el 13 de junio de 12 a las 09:06
muchas gracias, ¿y si tengo cientos de archivos? ¿Puedo incluir una bola tar de contenido y luego copiar el contenido en scripts postinst ... cualquier otra alternativa que no sea Makefile? foro.test17
@ usuario1430462: añadir cp yourdir/* $(DESTDIR)/
a Makefile o vea editar para un ejemplo sin Makefile :) - barti_ddu
Soy un poco infantil. ¿Puedo usar cualquier otro archivo que no sea Makefile? De alguna manera, tengo miedo de Makefile. Tengo exactamente 1145 archivos para copiar. pero me preocupa si necesito actualizar los archivos, debo considerar algunas cosas donde pierdo la actualización predeterminada del paquete debian, de todos modos, gracias por el excelente tutorial: foro.test17
@user1430462: considerando el segundo ejemplo, todos los archivos en el directorio contents
(incluidos los subdirectorios) se instalaría para /usr/share/mycontents
en el sistema de destino. - barti_ddu
@user1430462: en general, no debe empaquetar nada que vaya a /usr/local/*
(está dedicado exclusivamente al software local); para aplicaciones de terceros, debe elegir /opt/*
. - barti_ddu
No incluya directorios de inicio de usuario en el paquete en sí (es una idea horrible), coloque su ejecutable en una ubicación estándar (por ejemplo,
/usr/bin
) y cree un enlace a él (o mejor cree un archivo .desktop) conpostinst
script en su lugar. - barti_dduese fue un ejemplo, necesito crear un paquete que coloque todos los archivos en las carpetas respectivas como test1 en /tmp/test, test2 en /usr/test2 - forum.test17