crear un paquete .deb a partir de scripts o binarios

70

Busqué una forma simple de crear paquetes .deb para cosas que no tienen código fuente para compilar (configs, shellscripts, software propietario). Esto fue un gran problema porque la mayoría de los tutoriales de paquetes están asumiendo que tiene un archivo fuente que desea compilar. Luego, encontré este breve tutorial (alemán ).

Después, creé un pequeño script para crear un repositorio simple. De esta manera:

rm /export/my-repository/repository/*
cd /home/tdeutsch/deb-pkg
for i in $(ls | grep my); do dpkg -b ./$i /export/my-repository/repository/$i.deb; done
cd /export/avanon-repository/repository
gpg --armor --export "My Package Signing Key" > PublicKey
apt-ftparchive packages ./ | gzip > Packages.gz
apt-ftparchive packages ./ > Packages
apt-ftparchive release ./ > /tmp/Release.tmp; mv /tmp/Release.tmp Release
gpg --output Release.gpg -ba Release

Agregué la clave al apt keyring e incluí la fuente como esta:

deb http://my.default.com/my-repository/ ./

Parece que el repositorio en sí está funcionando bien (me encontré con algunos problemas, para solucionarlos necesité agregar los paquetes dos veces y hacer la solución temporal para el archivo de versión). También coloqué algunos .deb descargados en el repositorio, parece que también están funcionando sin problemas. Pero mis paquetes creados por mí mismo no ... Cuando hago sudo apt-get update , están causando errores como este:

E: Problem parsing dependency Depends
E: Error occurred while processing my-printerconf (NewVersion2)
E: Problem with MergeList /var/lib/apt/lists/my.default.com_my-repository_._Packages
E: The package lists or status file could not be parsed or opened.

¿Alguien tiene una idea de lo que hice mal?

ACTUALIZACIÓN 2012-03-06: Solo una sugerencia para otra persona que está buscando una manera fácil de crear DEB: Eche un vistazo a FPM .

    
pregunta Thomas Deutsch 23.02.2011 - 12:11

1 respuesta

69

El tutorial que ha vinculado utiliza un enfoque de bajo nivel para crear un paquete. Tal enfoque generalmente no se recomienda y puede llevar a todo tipo de problemas cuando no se hace con cuidado.

Crear un .deb para un script es muy simple una vez que comprenda los conceptos básicos del empaquetado. En pocas palabras:

# Configure your paths and filenames
SOURCEBINPATH=~
SOURCEBIN=myscript.sh
DEBFOLDER=~/somescripts
DEBVERSION=0.1

DEBFOLDERNAME=$DEBFOLDER-$DEBVERSION

# Create your scripts source dir
mkdir $DEBFOLDERNAME

# Copy your script to the source dir
cp $SOURCEBINPATH/$SOURCEBIN $DEBFOLDERNAME 
cd $DEBFOLDERNAME

# Create the packaging skeleton (debian/*)
dh_make -s --indep --createorig 

# Remove make calls
grep -v makefile debian/rules > debian/rules.new 
mv debian/rules.new debian/rules 

# debian/install must contain the list of scripts to install 
# as well as the target directory
echo $SOURCEBIN usr/bin > debian/install 

# Remove the example files
rm debian/*.ex

# Build the package.
# You  will get a lot of warnings and ../somescripts_0.1-1_i386.deb
debuild

Agregar más scripts requiere que se copien en el directorio y se agreguen al archivo debian / install; luego, simplemente vuelva a ejecutar debuild. También debe verificar y actualizar los archivos debian / * según sea necesario.

Deberías leer las páginas man para: dh_make , dh_install , y debuild

    
respondido por el João Pinto 23.02.2011 - 14:27

Lea otras preguntas en las etiquetas