cómo incluir un directorio en el paquete debuild

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í:

  1. mkdir test-1.0
  2. copiar la estructura de directorios como arriba

    cd test-1.0/ && mkdir -p home/bla/Desktop/
    cp test.sh home/bla/Desktop/
    
  3. dh_make -n -s -e test@test.com

  4. cd debian
  5. rm *.ex *.EX
  6. cd ..
  7. 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

preguntado el 12 de junio de 12 a las 16:06

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) con postinst script en su lugar. -

ese 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 -

1 Respuestas

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 es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.