Tenemos varios archivos .deb hechos a mano (con fpm y jenkins) en un repositorio local de Apt (reprepro). Estos .debs contienen un archivo .desktop que será recogido por xdg-desktop en un script posterior al inst.
Si instalamos el archivo deb a mano, en un nuevo sistema, todo está bien.
Si instalamos una nueva versión con apt-get install, obtenemos este error
xdg-desktop-menu: file '/usr/local/share/applications/customthingy.desktop' does not exist
Si descargo el archivo deb con apt-get install -d customthingy y ejecuto
dpkg -i /var/cache/apt/archives/customthingy_2-r3_all.deb
Me sale el mismo xdg-desktop
error que antes. Entonces eso descarta un problema con apt.
Si enumero el contenido de la descarga descargada,
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
Puedes ver que el archivo existe.
Sin embargo .. Si purgamos antes de reinstalar,
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 ...
Y entonces
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) ...
EDITAR: Contenido del 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
No hay error Entonces ... Las preguntas son estas:
- ¿Es este comportamiento esperado o un error en apt / dpkg?
- ¿Tenemos un paquete con formato incorrecto con customthingy.deb que impide que una futura ejecución de reinstalación funcione?
- ¿Es seguro asumir que el post-inst siempre sucederá al final de la instalación, y podemos suponer con seguridad que todos los archivos se habrán extraído antes de este momento?
- ¿Estamos haciendo algo enormemente extraño?
postinst
?
dpkg -D101 -i <package>
(o inclusodpkg -D1101
) resultados diferentes en cada escenario? Podría arrojar un orden diferente de ejecución.