Je veux créer un fichier DEB manuellement. Je voudrais juste fournir un dossier contenant des données à installer et un script à exécuter après l'installation.
Est-ce possible?
Je veux créer un fichier DEB manuellement. Je voudrais juste fournir un dossier contenant des données à installer et un script à exécuter après l'installation.
Est-ce possible?
Réponses:
Ma recommandation est de faire un paquet source. Installez build-essential , debhelper , dh-make . Allez dans le répertoire où se trouvent les fichiers que vous voulez installer (le nom du répertoire doit être de la forme $PACKAGE-$VERSION
, par exemple myapp-4.2-1
lors de votre première tentative d'empaquetage de Myapp V4.2) et exécutez-le dh_make --createorig
. Répondez aux questions. Debhelper créera l'infrastructure de base nécessaire à la création d'un paquet en générant des fichiers dans un sous-répertoire appelé debian
, à la fois des fichiers obligatoires et des modèles pour les fichiers facultatifs. Vous devrez peut-être modifier certains de ces fichiers:
debian/rules
pour créer ce qui doit être créé et installez les fichiers au bon endroit. Si vous avez juste besoin de copier des fichiers et de ne pas compiler, modifiez simplement le fichier debian/install
pour spécifier quels fichiers doivent être installés où.debian/copyright
sur Modifier pour ajouter des informations sur la licence de votre package et des informations sur l'emplacement où obtenir la dernière version (le cas échéant).debian/changelog
pour supprimer la référence à un ITP (cela ne concerne que si vous travaillez pour le projet Debian). Renommer debian/postinst.ex
pour debian/postinst
et ajouter vos commandes post-installation là - bas. Si vous mettez à jour ultérieurement votre paquet, exécutez-le debchange -i
pour ajouter une entrée au journal des modifications ou éditez le fichier dans Emacs (avec dpkg-dev-el installé).Exécuter dpkg-buildpackage -rfakeroot -us -uc
pour construire le .deb
package (à supprimer -us -uc
si vous souhaitez signer le package avec votre clé PGP).
Si vous décidez de créer directement un paquet binaire sans le construire à partir d'un paquet source, ce qui n'est pas vraiment facile car il n'y a pas autant d'outils pour faciliter le processus, vous aurez besoin d'une connaissance de base du format des paquets deb. Cela est décrit dans le Manuel de la stratégie Debian , en particulier ch. 3 (format des paquets binaires) , ch. 5 (fichiers de contrôle) , ch. 6 (scripts d'installation) et l' annexe B (manipulation des packages binaires) .
Vous assurez-vous que votre paquet installe les fichiers attendus /usr/share/doc/copyright
(contenant la licence du contenu du paquet, ainsi que l'emplacement où se trouve la dernière version du paquet) et /usr/share/doc/changelog.Debian.gz
(contenant le journal des modifications du paquet deb). Vous n'en avez pas besoin si vous n'utilisez le paquet qu'en interne, mais il est préférable de l'avoir.
Si vous avez les outils Debian disponibles, utilisez-les dpkg-deb
pour construire le paquet. Dans le répertoire contenant les données à installer, ajoutez un répertoire appelé DEBIAN
au plus haut niveau, contenant les fichiers de contrôle et les scripts de responsable.
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
Si vous ne possédez pas les outils Debian, créez une archive des fichiers que vous voulez grouper data.tar.gz
, une archive distincte des fichiers de contrôle appelée control.tar.gz
(sans sous-répertoires) et un fichier texte appelé debian-binary
contenant le texte 2.0
.
cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz
Vous avez besoin d' au moins un fichier de contrôle avec les champs Package
, Maintainer
, Priority
, Architecture
, Installed-Size
, Version
, et toute déclaration de dépendance nécessaire.
Le script à exécuter après l'installation est appelé postinst
. Assurez-vous de le rendre exécutable. Il va à côté control
.
Si vous avez déjà un paquet binaire d'une autre distribution, vous pouvez utiliser alien pour le convertir.
dch -i
.
ar
ce qui tar
ne fait pas ça ?
dh_make --createorig
utilisations, vous devez export DEBEMAIL="me@example.com"
et au export DEBFULLNAME="Firstname Lastname"
préalable.
Tout d'abord, vous devez créer un dossier de construction et une archive de vos fichiers: tar czvf data.tar.gz files
Ensuite, dans le dossier de construction, vous devez créer un fichier de contrôle avec les informations demandées:
Package: xxxxxx
Version: 0.0.1
Section: user/hidden
Priority: optional
Architecture: armel
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: Your Name <xxx@xxx.xx>
Description: This is optional, but creates warnings if left out
Ensuite, vous pouvez ajouter indépendamment des scripts de shell preinst, postint, prerm et postrm pour contrôler le comportement du fichier .deb avant et après l'installation et avant et après son retrait, puis vous pouvez créer l'archive de contrôle avec tar: tar czvf control.tar.gz control preinst postinst prerm postrm
Ensuite , vous avez besoin d' un fichier debian-binaire: echo 2.0 > debian-binary
. Dans votre dossier de construction, vous devriez maintenant avoir ces fichiers: debian-binary
control.tar.gz
et data.tar.gz
.
Enfin, vous avez besoin d’un ar
paquet pour créer le fichier .deb:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
il pourrait être utile de souligner l'ordre est important: le contrôle doit venir avant que les données.
Je fais beaucoup de paquets, et en faire un complet n'est pas une mince affaire. Sur une note positive, les fichiers et les scripts sont beaucoup moins efficaces. Vous pouvez créer un tel paquet, très simplement, avec un outil appelé debreate .
Debreate est une interface graphique très simple, pour créer simplement des paquets DEB simples. Vous pouvez simplement spécifier quels fichiers, où ils vont, et si / quoi exécuter sur post / pré-installation / désinstaller. J'avais l'habitude de faire tous mes paquets de la manière standard, mais après avoir commencé à utiliser cet outil, je ne reviendrai que lorsque cela sera nécessaire.
Voir le wiki de Debian sur l’emballage , peut-être equivs
(voir lien) déjà satisfait à vos exigences.
La page de Wikipedia sur le deb
format de fichier comprend également de nombreux liens utiles.
J'ai utilisé Zimbra 7 sur Debian avec ses paquets Ubuntu. (Je suis têtu, j'aime Debian> bUbuntu bien que Zimbra n'ait été publié que pour Ubuntu.) Je ne suis pas sûr de savoir comment j'ai résolu ce problème auparavant, je suis certain que je n'avais pas à le faire lorsque j'ai déjà installé cela auparavant!
mkdir new
for i in *.deb
do echo `date`: working on $i
ar x $i
cd control
rm * 2> /dev/null
tar -xzpvf ../control.tar.gz
tr "_" "-" < control > control2
mv -v control2 control
tar -czpvf ../control.tar.gz .
cd ..
ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control
Tous vos nouveaux fichiers .deb seront dans new/
.
Remarque : c'était sur squeeze - dpkg sur wheezy a --force-bad-version maintenant.
Pour créer rapidement des packages, vous pouvez utiliser le programme checkinstall. Il installe le programme, surveille les modifications et en crée un paquet deb ou rpm.
$ apt-get install build-essential dh-make debhelper devscripts
$ wget http://nmap.org/dist/nmap-LAST.tar.bz2
$ tar xf nmap-LAST.tar.bz2
$ cd nmap-LAST
$ dh_make -s -e youremail@site.org -f ../nmap-LAST.tar.bz2
$ apt-get install libgtk2.0-dev flex bison libpcap0.8-dev \
libpcre3-dev binutils-dev python-all-dev
$ dpkg-buildpackage