2012-06-12 6 views
5

se crearía un paquete Debian simple en los pasos siguientes, los siguientes pasos serían tutorial para principiantescómo incluir un directorio en el paquete debuild

en cuenta que tengo un archivo digamos test.sh que acaba de imprimir prueba en la pantalla

#!/bin/sh 
set -e 
echo "this is sample debian package created " >&2 

¿Cuál debería ser la salida después de instalar el paquete Debian? A) Quiero colocar el archivo de arriba que nombré como 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 

añadir el archivo de control con el siguiente contenido

Package: test 
Version: 1.0 
Section: devel 
Priority: optional 
Architecture: all 
Essential: no 
Depends: bash 
Pre-Depends: no 
Recommends: no 
Maintainer: test <[email protected]> 
Replaces: no 
Provides: no 
Description: A sample testpackage in order to demonstrate how to create debian packages 

paquete está listo llegado fuera de la carpeta de prueba y entrar en dpkg --build prueba-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 directorio donde quería mi test.sh a ser colocado después de la instalación

pasos que he seguido:

  1. mkdir test-1.0
  2. copiar la estructura de directorio como anteriormente

    cd test-1.0/ && mkdir -p home/bla/Desktop/ 
    cp test.sh home/bla/Desktop/ 
    
  3. dh_make -n -s -e [email protected]

  4. cd debian
  5. rm *.ex *.EX
  6. cd ..
  7. debuild -us -uc

sin importar que mi test.sh no está del todo incluido en el paquete después, i donot saber ¿cuál es la razón por la cual es lo que he entendido desde el manual de debian

puede alguien saber hacerlo, permítame lo antes posible .., Sólo quiero saber cómo puedo incluir los archivos en el paquete cuando la construcción de paquetes de Debian usando debuild/dpkg-buildpackage como he hecho en el primer proceso que es muy sencillo ejemplo

+0

No incluya los directorios principales de los usuarios en el paquete en sí (es una idea horrible), ponga su ejecutable en la ubicación estándar (p.ej. '/ usr/bin') y crea un enlace a él (o mejor crea el archivo .desktop) con el script' postinst' en su lugar. –

+0

que 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 –

Respuesta

11

AQ/D utilizando dh *y dpkg-buildpackage:

1) pepare directorio de trabajo y archivo de prueba (vamos a empaquetar "foo" script que debe ser instalado a "/ ninguna/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) Crear sencilla 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 paquete esqueleto:

dh_make -i --createorig 

3a) Opcional y ajustar archivo de control debian

4) Construir el paquete:

dpkg-buildpackage -A -uc 

5) de prueba generada contenido del paquete:

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 

Editar: Ejemplo sin usar Makefile (si no se va a acumulación nada):

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 paquete de esqueleto:

dh_make -i --createorig 

3) Crear debian/test.instalar archivo con contenido siguiente:

contents/ /usr/share/mycontents 

4) de construcción del paquete:

dpkg-buildpackage -A -uc 

5) Examinar paquete de construcción:

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 
+0

muchas gracias, ¿qué pasa si tengo cientos de archivos? una bola de contenido de alquitrán y luego copiar el contenido en guiones postinst ... cualquier otra alternativa que no sea Makefile –

+0

@ user1430462: agregar 'cp yourdir/* $ (DESTDIR) /' a Makefile o ver edición para el ejemplo de Makefile-free :) –

+0

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, estaba pensando en copiar el contenido en la carpeta tmp más tarde copiar todos los archivos en las posiciones respectivas utilizando secuencias de comandos postinst, pero me preocupa que si necesito actualizar los archivos, necesito considerar algunas cosas en las que pierdo la actualización predeterminada del paquete Debian, de todos modos gracias por el excelente tutorial –

Cuestiones relacionadas