crea un pacchetto .deb da script o binari

70

Ho cercato un modo semplice per creare pacchetti .deb per cose che non hanno codice sorgente da compilare (configs, shellscripts, software proprietario). Questo è stato un grosso problema perché la maggior parte delle esercitazioni sui pacchetti presuppone che tu abbia un pacchetto sorgente che desideri compilare. Poi ho trovato questo breve tutorial (tedesco ).

Successivamente, ho creato un piccolo script per creare un repository semplice. In questo modo:

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

Ho aggiunto la chiave al portachiavi apt e ho incluso la fonte in questo modo:

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

Sembra che il repository stia funzionando bene (ho incontrato alcuni problemi, per risolverli dovevo aggiungere i pacchetti due volte e rendere la soluzione temporanea al file Release per il file temp). Ho anche messo un po 'di .deb scaricato nel repository, sembra che stiano funzionando anche senza problemi. Ma i pacchetti creati da me non hanno ... Wenn ho fatto sudo apt-get update , stanno causando errori come questo:

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.

Qualcuno ha idea di cosa ho fatto di sbagliato?

AGGIORNAMENTO 2012-03-06: solo un suggerimento per un'altra persona che sta cercando un modo semplice per creare DEB: dai un'occhiata a FPM .

    
posta Thomas Deutsch 23.02.2011 - 12:11

1 risposta

69

Il tutorial che hai collegato utilizza un approccio di basso livello per la creazione di un pacchetto. Un approccio di questo tipo non è generalmente raccomandato e può portare a tutti i tipi di problemi se non eseguito con attenzione.

Creare un file .deb per uno script è molto semplice una volta capito le basi della confezione. In poche parole:

# 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

L'aggiunta di altri script richiede che vengano copiati nella directory e aggiunti al file debian / install, quindi eseguire nuovamente debuild. Dovresti anche controllare e aggiornare i file debian / * come richiesto.

Dovresti leggere le pagine man di: dh_make , dh_install e debuild

    
risposta data João Pinto 23.02.2011 - 14:27

Leggi altre domande sui tag