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.
@ David, en fait je l'ai fait avec "dpkg-deb", c'est beaucoup plus facile, c'est pourquoi j'ai choisi Gilles, en listant les fichiers dans le dossier du paquet, cela me donne une vue claire du fichier à placer. Donc, je pense que sa réponse est meilleure ..
Daisy
J'ai également répertorié tous les fichiers du paquet.
Gigamegs
11
@ David je veux dire, affirmant que sa réponse est dérivée est une chose, mais "pas une très bonne réponse"? La réponse de Gilles est excellente. peu importe si votre réponse était première, la sienne est bien plus complète. Et il n’ya rien de mal à prendre une réponse existante et à la développer; c'est une bonne chose
Michael Mrozek
Réponses:
57
Faire un paquet source
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:
Modifiez 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ù.
Cliquez 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).
Editez 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).
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.
Sur Debian et dérivés
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
À la dure
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.
Conversion d'un paquet binaire à partir d'un format différent
Si vous avez déjà un paquet binaire d'une autre distribution, vous pouvez utiliser alien pour le convertir.
OMI c'est une copie de ma réponse? Qu'est-ce que tu penses?
Gigamegs
1
La réponse suppose que l’opérateur sait utiliser emacs. Emacs est-il vraiment nécessaire ici? Pour éditer les changelogs, je pense que l’on peut utiliser dch -i.
Faheem Mitha le
Qu'est- arce qui tarne fait pas ça ?
mmstick
@mmstick C'est un format différent. Je ne sais pas pourquoi les concepteurs du format deb ont choisi d'utiliser ar ici.
Gilles 'SO- arrête d'être méchant'
1
Si vous souhaitez modifier le nom et e - mail qui dh_make --createorigutilisations, vous devez export DEBEMAIL="[email protected]"et au export DEBFULLNAME="Firstname Lastname"préalable.
Ryan
10
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 <[email protected]>
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-binarycontrol.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
A propos 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.
Hibou57
@Bytemain, la réponse la plus votée semble en partie basée sur votre texte, mais elle ajoute des détails, et est mieux lisible. la séquence que nous pouvons copier / coller le rend particulièrement plus beau.
mariotomo
3
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.
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.
Cela semble être une excellente option pour suivre les paquets que vous devez installer à partir des sources. Pouvez-vous offrir plus de détails? Par exemple, au cours de l'installation, vous pouvez modifier les liens symboliques, supprimer des fichiers, modifier des fichiers de configuration, ajouter des démons, etc. Pouvez-vous facilement modifier sa sortie pour ajouter des scripts prerm et postrm?
AatG
Regardez sur wiki.debian.org/CheckInstall Si vous voulez changer les choses pendant l'installation - le moyen le plus simple est de modifier Makefile pour changer la section d'installation. prerm / postrm - je n'ai pas trouvé le moyen de le modifier. Ce n'est que pour les petits programmes qu'il permet une désinstallation simple.
Réponses:
Faire un paquet source
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 exemplemyapp-4.2-1
lors de votre première tentative d'empaquetage de Myapp V4.2) et exécutez-ledh_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 fichierdebian/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). Renommerdebian/postinst.ex
pourdebian/postinst
et ajouter vos commandes post-installation là - bas. Si vous mettez à jour ultérieurement votre paquet, exécutez-ledebchange -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).Faire un paquet binaire directement
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.Sur Debian et dérivés
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.À la dure
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éecontrol.tar.gz
(sans sous-répertoires) et un fichier texte appelédebian-binary
contenant le texte2.0
.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
.Conversion d'un paquet binaire à partir d'un format différent
Si vous avez déjà un paquet binaire d'une autre distribution, vous pouvez utiliser alien pour le convertir.
la source
dch -i
.ar
ce quitar
ne fait pas ça ?dh_make --createorig
utilisations, vous devezexport DEBEMAIL="[email protected]"
et auexport 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:
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
etdata.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
la source
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.
la source
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.la source
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!
Tous vos nouveaux fichiers .deb seront dans
new/
.Remarque : c'était sur squeeze - dpkg sur wheezy a --force-bad-version maintenant.
la source
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.
la source
la source