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

J’ai cherché un moyen simple de créer des paquets .deb pour des choses qui n’ont pas de code source à comstackr (configs, shellscripts, logiciels propriétaires). C’était un problème car la plupart des tutoriels de paquet supposent que vous avez une archive source que vous voulez comstackr. Ensuite, j’ai trouvé ce court tutoriel (allemand).

Ensuite, 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 d’apt et ai inclus la source comme ceci:

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

Il semble que le référentiel lui-même fonctionne bien (j’ai rencontré quelques problèmes; pour les résoudre, j’ai dû append les packages à deux resockets et créer la solution de contournement de fichier temporaire pour le fichier Release). J’ai également mis quelques fichiers .deb téléchargés dans le repository, il semble qu’ils fonctionnent aussi sans problèmes. Mais mes paquets créés par moi-même ne sont pas … Quand je fais des sudo apt-get update , ils causent 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 at-il une idée de ce que j’ai mal fait?

UPDATE 2012-03-06: Juste un conseil pour une autre personne à la recherche d’un moyen facile de créer des DEB: jetez un coup d’œil à FPM .

Le tutoriel que vous avez lié utilise une approche de bas niveau pour la construction d’un package. Une telle approche n’est généralement pas recommandée et peut entraîner toutes sortes de problèmes si elle n’est pas effectuée avec soin.

La création d’un fichier .deb pour un script est très simple une fois que vous avez compris les bases du packaging. En un mot:

 # 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 nécessite leur copie dans le répertoire et leur ajout au fichier debian / install. Il suffit ensuite de réexécuter debuild. Vous devez également vérifier et mettre à jour les fichiers debian / * selon les besoins.

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