Nous avons un certain nombre de fichiers .deb construits à la main (avec fpm et jenkins) dans un référentiel Apt local (reprepro). Ces .debs contiennent un fichier .desktop qui sera récupéré par xdg-desktop dans un script post-inst.
Si nous installons le fichier deb à la main, sur un nouveau système, tout va bien.
Si nous installons une nouvelle version avec apt-get install, nous obtenons cette erreur
xdg-desktop-menu: file '/usr/local/share/applications/customthingy.desktop' does not exist
Si je télécharge le fichier deb avec apt-get install -d customthingy et exécute
dpkg -i /var/cache/apt/archives/customthingy_2-r3_all.deb
J'obtiens le même, xdg-desktop
erreur comme avant. Donc, cela exclut un problème avec apt.
Si j'énumère le contenu du deb téléchargé,
tom.oconnor@charcoal-black:~$ dpkg --contents /var/cache/apt/archives/customthingy_2-r3_all.deb |grep ".desktop"
-rw-r--r-- root/root 201 2011-07-28 20:02 ./usr/local/share/applications/customthingy.desktop
Vous pouvez voir que le fichier existe.
Cependant .. Si nous purgeons avant de réinstaller,
tom.oconnor@charcoal-black:~$ sudo apt-get purge customthingy
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED
customthingy*
0 upgraded, 0 newly installed, 1 to remove and 84 not upgraded.
After this operation, 0B of additional disk space will be used.
Do you want to continue [Y/n]? y
(Reading database ... 219342 files and directories currently installed.)
Removing customthingy ...
Purging configuration files for customthingy ...
Et alors
tom.oconnor@charcoal-black:~$ sudo apt-get install customthingy
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed
customthingy
0 upgraded, 1 newly installed, 0 to remove and 84 not upgraded.
Need to get 0B/4,030B of archives.
After this operation, 0B of additional disk space will be used.
Selecting previously deselected package customthingy.
(Reading database ... 219319 files and directories currently installed.)
Unpacking customthingy (from .../customthingy_2-r3_all.deb) ...
Setting up customthingy (2-r3) ...
EDIT: Contenu du script Postinst
#!/bin/sh
# Add an entry to the system menu
XDG_DESKTOP_MENU="`which xdg-desktop-menu 2> /dev/null`"
if [ ! -x "$XDG_DESKTOP_MENU" ]; then
echo "WARNING: Could not find xdg-desktop-menu" >&2
else
"$XDG_DESKTOP_MENU" install --mode system /usr/local/share/applications/customthingy.desktop
"$XDG_DESKTOP_MENU" forceupdate --mode system
fi
Il n'y a pas d'erreur. Alors .. Les questions sont les suivantes:
- S'agit-il d'un comportement attendu ou d'un bogue dans apt / dpkg?
- Avons-nous un paquet mal formé avec customthingy.deb qui empêche une future réinstallation de fonctionner?
- Est-il sûr de supposer que post-inst se produira toujours à la toute fin de l'installation, et nous pouvons supposer que tous les fichiers auront été extraits avant ce moment?
- Faisons-nous quelque chose de très bizarre?
postinst
?
dpkg -D101 -i <package>
(ou mêmedpkg -D1101
) produit des résultats différents dans chaque scénario? Cela pourrait générer un ordre d'exécution différent.