75 votes

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

J'ai cherché un moyen simple de créer des paquets .deb pour des choses qui n'ont pas de code source à compiler (configs, scripts shell, logiciels propriétaires). C'était un problème parce que la plupart des tutoriels sur les paquets supposent que vous avez une archive source que vous voulez compiler. Puis j'ai trouvé ce court tutoriel (allemand).

Ensuite, j'ai créé un petit script pour créer un dépôt simple. Comme ceci :

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 porte-clés d'apt et inclus la source comme ceci :

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

Il semble que le repo lui-même fonctionne bien (j'ai rencontré quelques problèmes, pour les résoudre j'ai dû ajouter les paquets deux fois et faire en sorte que le fichier temporaire fonctionne pour le fichier Release). J'ai également placé quelques .deb téléchargés dans le repo, il semble qu'ils fonctionnent également sans problème. Mais les paquets que j'ai créés moi-même ne fonctionnent pas... Si je fais sudo apt-get update ils provoquent des erreurs comme celle-ci :

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.

Quelqu'un a-t-il une idée de ce que j'ai fait de mal ?

MISE À JOUR 2012-03-06 : Juste un conseil pour une autre personne qui cherche un moyen facile de créer des DEBs : Jetez un coup d'oeil à FPM .

75voto

Lorin Hochstein Points 11816

Le tutoriel que vous avez cité utilise une approche de bas niveau pour construire un paquet. Une telle approche n'est généralement pas recommandée et peut conduire à toutes sortes de problèmes si elle n'est pas réalisée avec soin.

Créer un .deb pour un script est très simple une fois que vous avez compris les bases du packaging. En quelques mots :

# 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 plus de scripts nécessite qu'ils soient copiés dans le répertoire et ajoutés au fichier debian/install -- puis il suffit de relancer debuild. Vous devriez également vérifier et mettre à jour les fichiers debian/* si nécessaire .

Vous devriez lire les pages de manuel pour : dh_make , dh_install y debuild

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X