Je voudrais créer un tout nouveau package deb pour installer une série de fichiers. Si possible, je voudrais décompresser le dossier contenant ces fichiers dans le cadre de l'installation dans un emplacement de dossier connu. À défaut, certaines connaissances sur la façon de regrouper les dossiers et fichiers source seraient très utiles.
La question est - est-ce possible et si oui - comment?
Donnons un exemple:
~/mypluginfolder/
contient les fichiers x
, y
un sous-dossier appelé abc
et à l'intérieur d'un autre fichier appelé z
.
Je veux tarer ce dossier: tar -cvf myfiles.tar ~/mypluginfolder
Je suppose que mon paquet Debian ressemblerait à
myfiles.tar.gz
myfiles+ppafoss_0.1-1/
myfiles.tar
DEBIAN
changelog, compat, control, install, rules source
Est-il possible de décompresser en quelque sorte myfiles.tar
un emplacement de dossier connu par exemple
/usr/share/rhythmbox/plugins/
Ainsi, le résultat final serait:
/usr/share/rhythmbox/plugins/mypluginfolder
/usr/share/rhythmbox/plugins/mypluginfolder\x
/usr/share/rhythmbox/plugins/mypluginfolder\y
/usr/share/rhythmbox/plugins/mypluginfolder\abc\z
Si - en supposant que le tableau de bord a besoin de la source, des conseils sont demandés pour savoir où déposer les dossiers et fichiers source dans la structure du paquet deb.
Cela deviendra éventuellement une série de packages PPA de rampe de lancement individuels.
Ce que je préfère (mais peut-être pas en mesure d'atteindre ...) est de garder mon packaging au minimum - créer une série de packages à partir d'un modèle et ajuster le strict minimum (changelog etc + la structure du fichier tar / fichier & dossier) .
la source
Réponses:
Ci-dessous, je suppose que la source est ouverte (par exemple les scripts Python) qui ne sont donc liés à aucune architecture (par exemple amd64 ou i386), donc "tous". Si vous avez une source C, vous devez l'utiliser
Architecture: amd64 i386
dans votrecontrol
fichier source .création d'un package prêt pour Launchpad
Launchpad accepte uniquement les packages source, alors créez un
rules
qui installe les fichiers aux bons endroits. Pour plus de commodité, j'utiliserai debhelper . Le répertoire contenant vos fichiers devrait ressembler à:Un
debian/copyright
fichier peut également être utile pour informer les utilisateurs des licences associées au package. Je ne pense pas que vous ayez besoin d'unpostinst
script car il vous suffit d'extraire certains fichiers.compat
devrait contenir le niveau de compatibilité de debhelper, disons "8". (veuillez vous référer à la page de manuel de debhelper pour plus de détails)Le
changelog
fichier peut être édité avec ladch
commande, disponible dans ledevscripts
package. Lerules
(en utilisant debhelper) doit contenir:Rendez-le exécutable en utilisant
chmod 755 debian/rules
. Un paquet source peut être construit en utilisantdebuild -S
. Assurez-vous d'être dans un répertoire nommé<package-name>-<version>
. Plus d'informations sur leoverride_
comportement et ladh
commande peuvent être trouvées sur sa page de manuel .Le guide des nouveaux responsables Debian m'a été très utile pour comprendre cela, c'est une lecture recommandée. Des exemples d'emballage peuvent être trouvés sur https://github.com/Bumblebee-Project/bumblebee-ppa .
création d'un package à partir d'une arborescence de fichiers existante
dpkg-deb -b
peut être utilisé pour créer des tarballs à partir d'une arborescence de fichiers existante. Tout d'abord, commencez par créer un répertoire qui doit être nommé d'après votre package. Je suppose que vous voulez le nommermyplugin
et le mettre/usr/share/rhythmbox/plugins/mypluginfolder
. De plus, créez leDEBIAN
répertoire (en majuscules!) Pour stocker les informations sur le package:Copiez sur vos fichiers:
Ensuite, vous aurez besoin d'un soi-disant fichier de contrôle situé dans
myplugin/DEBIAN/control
lequel décrit le package. Le contenu d'un tel fichier est mis ci-dessous:Maintenant, vous pouvez éventuellement vérifier le contenu de votre package. La commande suivante répertorie le contenu des entrées de fichier et de répertoire de
myplugin
:Si vous êtes satisfait, construisez le package dans le répertoire courant:
Un nouveau fichier apparaîtra, nommé comme
<package>_<version>_<architecture>.deb
celui de cet exemplemyplugin_1.0-1_all.deb
. Vous pouvez utiliser leless
programme pour consulter le fichier. Par exempleless myplugin_1.0-1_all.deb
,.la source