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-1lors 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/rulespour 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/installpour spécifier quels fichiers doivent être installés où.debian/copyrightsur 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/changelogpour supprimer la référence à un ITP (cela ne concerne que si vous travaillez pour le projet Debian). Renommer debian/postinst.expour debian/postinstet ajouter vos commandes post-installation là - bas. Si vous mettez à jour ultérieurement votre paquet, exécutez-le debchange -ipour 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 -ucpour construire le .debpackage (à supprimer -us -ucsi 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-debpour construire le paquet. Dans le répertoire contenant les données à installer, ajoutez un répertoire appelé DEBIANau 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-binarycontenant 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.
arce qui tarne fait pas ça ?
dh_make --createorigutilisations, 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.gzet data.tar.gz.
Enfin, vous avez besoin d’un arpaquet 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.gzil 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 debformat 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