créer un paquet .deb à partir de scripts ou de binaires

70

J'ai cherché un moyen simple de créer des paquets .deb pour des choses qui n’ont pas de code source à compiler (configs, shellscripts, logiciels propriétaires). Cela posait un problème car la plupart des tutoriels de package supposaient que vous souhaitiez compiler une archive source. Ensuite, j'ai trouvé ce petit tutoriel ).

Par la suite, j'ai créé un petit script pour créer un référentiel simple. Comme ça:

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

J'ai ajouté la clé au trousseau de clés apt et inclus la source comme ceci:

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

Il semble que le dépôt lui-même fonctionne bien (j'ai rencontré quelques problèmes, pour les réparer, je devais ajouter les paquets deux fois et faire le contournement du fichier temporaire pour le fichier Release). Je mets aussi du .deb téléchargé dans le repo, il semble qu'ils travaillent aussi sans problèmes. Mais mes paquets créés par moi-même n'ont pas ... Wenn je fais sudo apt-get update , ils causent des erreurs comme ceci:

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.

Est-ce que quelqu'un a une idée de ce que j'ai mal fait?

UPDATE 2012-03-06: Juste un indice pour une autre personne qui cherche un moyen simple de créer des DEB: Jetez un coup d’œil à FPM .

    
posée Thomas Deutsch 23.02.2011 - 12:11
la source

1 réponse

69

Le didacticiel que vous avez lié utilise une approche de bas niveau pour créer un package. Une telle approche n’est généralement pas recommandée et peut conduire à toutes sortes de problèmes si elle n’est pas faite avec soin.

La création d’un fichier .deb pour un script est très simple une fois que vous avez compris les principes de base de l’emballage. En bref:

# 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'ajout de scripts supplémentaires exige qu'ils soient copiés dans le répertoire et ajoutés au fichier debian / install - puis réexécutez simplement debuild. Vous devez également vérifier et mettre à jour les fichiers debian / * si nécessaire.

Vous devriez lire les pages de manuel relatives à: dh_make , dh_install et debuild

    
réponse donnée João Pinto 23.02.2011 - 14:27
la source

Lire d'autres questions sur les étiquettes