Je voudrais créer un nouveau paquet deb pour installer des séries de fichiers. Si possible, j'aimerais décompresser le dossier contenant ces fichiers dans le cadre de l'installation dans un emplacement de dossier connu. À défaut, il serait très utile de savoir comment conditionner les dossiers et les fichiers sources.
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 de celui-ci, 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 myfiles.tar
dans un 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 - le tableau de bord a besoin d’être source, nous recherchons des endroits où déposer les dossiers et fichiers sources dans la structure du paquet deb.
Cela finira par devenir une série de packages PPA de tableau de bord individuels.
Ce que je préfère (mais que je ne serais peut-être pas capable de réaliser ...) est de garder mon emballage au minimum - créer une série de paquets à partir d'un modèle et ajuster le strict minimum (changelog etc + la structure du fichier tar/fichier et dossier) .
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), d'où "tous". Si vous avez une source C, vous devez utiliser Architecture: AMD64 i386
dans votre fichier source control
name__.
Cela finira par devenir une série de packages PPA de tableau de bord individuels.
Ce que je préfère (mais que je ne serais peut-être pas capable de réaliser ...) est de garder mon emballage au minimum - créer une série de paquets à partir d'un modèle et ajuster le minimum (fichier de modifications, etc. + le fichier tar).
Launchpad n'accepte que les packages source. Créez donc un rules
qui installe les fichiers aux emplacements appropriés. Pour plus de commodité, je vais utiliser debhelper . Le répertoire avec vos fichiers devrait ressembler à:
debian/changelog
debian/control
debian/rules
debian/compat
mypluginfolder/...
Un fichier debian/copyright
peut également être utile pour informer les utilisateurs des licences associées au package. Je ne pense pas que vous ayez besoin d'un script postinst
car il vous suffit d'extraire certains fichiers. compat
devrait contenir le niveau de compatibilité de debhelper, par exemple "8". (veuillez vous référer à la page de manuel de debhelper pour plus de détails)
Le fichier changelog
peut être modifié à l'aide de la commande dch
name__, disponible dans le package devscripts
name__. rules
(utilisant debhelper) devrait contenir:
#!/usr/bin/make -f
%:
dh $@
override_dh_install:
dh_install mypluginfolder/ /usr/share/rhythmbox/plugins
Rendez-le exécutable en utilisant chmod 755 debian/rules
. Un paquet source peut être construit en utilisant debuild -S
. Assurez-vous de vous trouver dans un répertoire nommé <package-name>-<version>
. Vous trouverez plus d'informations sur le comportement override_
et la commande dh
à la page page de manuel correspondante .
Le Guide du nouveau responsable Debian m'a été très utile pour comprendre ceci, il est recommandé de le lire. Des exemples d’emballages peuvent être trouvés sur https://github.com/Bumblebee-Project/bumblebee-ppa .
dpkg-deb -b
peut être utilisé pour créer des archives à partir d'une arborescence de fichiers existante. Commencez par créer un répertoire qui doit être nommé d'après votre paquet. Je suppose que vous voulez le nommer myplugin
et le mettre dans /usr/share/rhythmbox/plugins/mypluginfolder
. En outre, créez le répertoire DEBIAN
(majuscule!) Pour stocker les informations sur le package:
mkdir -p myplugin/usr/share/rhythmbox/plugins/mypluginfolder
mkdir myplugin/DEBIAN
Copiez vos fichiers:
cp -r ~/mypluginsfolder myplugin/usr/share/rhythmbox/plugins
Ensuite, vous aurez besoin d’un fichier appelé control situé à myplugin/DEBIAN/control
qui décrit le paquet. Le contenu d'un tel fichier est indiqué ci-dessous:
Package: myplugin
Version: 1.0-1
Maintainer: You <[email protected]>
Architecture: all
Description: plugins for Rhythmbox
Longer description here
.
As you can see, new paragraph are split by a single dot,
and lines have to be indented by one space.
Maintenant, vous pouvez éventuellement vérifier le contenu de votre paquet. La commande suivante répertorie le contenu des entrées de fichier et de répertoire de myplugin
name__:
find myplugin -ls
Si vous êtes satisfait, construisez le paquet dans le répertoire en cours:
dpkg-deb -b myplugin .
Un nouveau fichier apparaîtra, nommé ainsi: <package>_<version>_<architecture>.deb
qui est dans cet exemple myplugin_1.0-1_all.deb
. Vous pouvez utiliser le programme less
pour jeter un coup d'œil dans le fichier. Par exemple, less myplugin_1.0-1_all.deb
.