Abbiamo un numero di file .deb creati a mano (con fpm e jenkins) in un repository Apt locale (reprepro). Questi .debs contengono un file .desktop che verrà raccolto da xdg-desktop in uno script post-inst.
Se installiamo il file deb manualmente, su un nuovo sistema, tutto va bene.
Se installiamo una nuova versione con apt-get install, otteniamo questo errore
xdg-desktop-menu: file '/usr/local/share/applications/customthingy.desktop' does not exist
Se scarico il file deb con apt-get install -d customthingy ed eseguo
dpkg -i /var/cache/apt/archives/customthingy_2-r3_all.deb
Ottengo lo stesso xdg-desktop
errore di prima. Quindi questo esclude un problema con apt.
Se elenco i contenuti del deb scaricato,
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
Puoi vedere che il file esiste.
Tuttavia .. Se eliminiamo prima di reinstallare,
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 ...
E poi
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: contenuto dello 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
Non ci sono errori Quindi .. Le domande sono queste:
- Questo comportamento previsto o un bug in apt / dpkg?
- Abbiamo un pacchetto non valido con customthingy.deb che impedisce il funzionamento di una futura reinstallazione?
- È sicuro supporre che post-inst accadrà sempre alla fine dell'installazione e possiamo tranquillamente presumere che tutti i file saranno stati estratti prima di questo momento?
- Stiamo facendo qualcosa di enormemente strano?
postinst
?
dpkg -D101 -i <package>
(o anchedpkg -D1101
) producono risultati diversi in ogni scenario? Potrebbe generare un diverso ordine di esecuzione.