Je construis un paquet à partir de ma propre source en utilisant dh_make et dpkg-buildpackage. Le fichier d'installation dans/debian spécifie les destinations des fichiers de projet. Pour que le programme installé fonctionne, il doit être exécutable/avoir les droits d’exécution avec chmod. En particulier, il s'agit d'un script python et d'un fichier .desktop.
Comment définir ces autorisations dans la configuration? En les copiant uniquement vers leurs destinations, cela n’est pas fait. Ce serait bien pour moi si je pouvais déclencher une commande à la fin de l'installation, ou quelque chose du genre, mais je ne sais pas comment l'inclure.
Le fichier .desktop n'a pas besoin d'autorisations d'exécution, contrairement à votre script .py.
braiam@bt:~$ ls -l /usr/share/app-install/desktop/deluge.desktop
-rw-r--r--. 1 root root 1276 Aug 6 2012 /usr/share/app-install/desktop/deluge.desktop
braiam@bt:~$ ls -l /usr/bin/deluge
-rwxr-xr-x 1 root root 289 Jan 27 2013 /usr/bin/deluge
Avant que l’emballage n’ait défini le bit exécutable sur le script python, dpkg se chargera du reste.
Le fichier .desktop est un fichier de configuration lu par xdg, et ses propres variables sont définies pour exécuter le binaire requis:
cat /usr/share/app-install/desktop/deluge.desktop
[...]
GenericName=BitTorrent Client
X-GNOME-FullName=Deluge BitTorrent Client
Comment=Download and share files over BitTorrent
Exec=deluge-gtk %U
Icon=deluge
Terminal=false
Type=Application
Categories=Network;FileTransfer;P2P;GTK
StartupNotify=true
MimeType=application/x-bittorrent;x-scheme-handler/magnet;
Comme vous le voyez, il contient une variable Exec
qui s’occupe de l’exécution lors de l’accès au fichier.
Vous pouvez créer un script de post-installation:
gedit debian/packagename.postinst
Ceci est juste un script normal, donc les instructions suivantes suffiront:
#!/bin/sh
set -e
chmod 755 /path/to/pythonscript.py
exit 0
Vous pouvez également empêcher le fichier d'avoir ses autorisations modifiées par dh_fixperms
. Cela peut être fait dans debian/rules
:
%:
dh $@ --with python2
override_dh_fixperms:
dh_fixperms --exclude path/to/pythonscript.py
La première option est préférable car dh_fixperms
effectue d'autres tâches utiles, telles que le changement du propriétaire d'un fichier et l'exclusion de ce fichier empêchant dh_fixperms
de faire quoi que ce soit d'utile. Notez également que dans la première option, il y a une barre oblique précédente /path/to/pythonscript.py car il s’agit d’un chemin absolu, alors que la deuxième option est relative au sous-répertoire debian.
EDIT: @AlexisWilke a mentionné une meilleure alternative à l'option 2, à savoir:
%:
dh $@ --with python2
override_dh_fixperms:
dh_fixperms
chmod 755 path/to/pythonscript.py
Cela permet à dh_fixperms
d’exercer sa magie suivie de la correction mineure nécessaire.