miércoles, 9 de mayo de 2012

Salt, libreoffice y ubuntu 12.04

He comprobado que con windows ya no hay problema para instalar salt4 (hay una nueva versión de marzo del 2012) con libreoffice versión 3.5.3. Simplemente he instalado libreoffice, el paquete de ayuda, después salt y funciona perfectamente.

De modo que vamos a intentar que nos funcione en linux, en concreto en Ubuntu 12.04 con libreoffice 3.5.2 instalado. (Al final del documento tendréis los enlaces a los ficheros modificados por mi directamente para no tener que hacer todos los pasos).
Ojo, solo funciona en sistemas de 32 bits, al final de artículo tenéis más información al respecto.
Ojo2, para desinstalar el paquete salt-ooo-addons hay problemas, te recomiendo que leas el artículo completo antes de hacer nada. Aunque es muy largo, gran parte del texto son las respuestas de los comandos que se "leen" muy rápido. Para facilitar la lectura los comando están en negrita como suelo hacer siempre en los artículos.
Actualización (16/05/2012): Solucionado el problema de la desinstalación, mirar al final del documento.
 
Para descargar el paquete debian con las extensiones: salt-ooo-addons.deb

Resumen de comandos necesarios para hacer la instalación sin más:
# wget http://www.cefe.gva.es/polin/docs/salt4U.zip
# unzip salt4U.zip

# dpkg -i salt-common_4.2.2_all.deb
# dpkg -i salt-data_4.2.0+201200312.1_all.deb 
# dpkg -i salt-server_4.2.2_i386.deb 
# dpkg -i salt-ooo-addons_4.2.3_i386.deb
# dpkg -i salt-help_4.2.2_all.deb 
# dpkg -i salt_4.2.2_all.deb 

Vamos a verlo en detalle...

Descargamos y descomprimimos la nueva versión de Salt:
# wget http://www.cefe.gva.es/polin/docs/salt4U.zip
# unzip salt4U.zip
Archive: salt4U.zip
inflating: nou_salt_20120312/INSTRUCCIONS.txt
inflating: nou_salt_20120312/munta_el_salt.sh
inflating: nou_salt_20120312/salt_4.2.2_all.deb
inflating: nou_salt_20120312/salt-common_4.2.2_all.deb
inflating: nou_salt_20120312/salt-data_4.2.0+201200312.1_all.deb
inflating: nou_salt_20120312/salt-help_4.2.2_all.deb
inflating: nou_salt_20120312/salt-ooo-addons_4.2.3_i386.deb
inflating: nou_salt_20120312/salt-server_4.2.2_i386.deb

Como podéis ver del nombre de la carpeta es de donde he sacado la fecha de la nueva versión de Salt.

Disponemos del lanzador munta_el_salt.sh par instalarlo directamente pero no funciona, nos fallará al instalar salt-ooo-addons, además depende de que utilices el gestor de paquetes de gnome, para los usuarios que preferimos kde también es un problema. Pero si nos proporciona información para saber que tenemos que hacer:
$ cat munta_el_salt.sh
#!/bin/bash

function error {
   zenity --error --title="Salt 4" --text="S'ha produït un error en instal·lar el paquet \n $1"
   exit 1
}

if [ $UID -ne 0 ]; then
        exec $(gksu $0 $@)
else
   gdebi-gtk --non-interactive --auto-close salt-common_4.2.2_all.deb || error "salt-common_4.2.2_all.deb"
   gdebi-gtk --non-interactive --auto-close salt-data_4.2.0+201200312.1_all.deb || error "salt-data_4.2.0+201200312.1_all.deb"                                         
   gdebi-gtk --non-interactive --auto-close salt-server_4.2.2_i386.deb || error "salt-server_4.2.2_i386.deb"                                                           
   gdebi-gtk --non-interactive --auto-close salt-ooo-addons_4.2.3_i386.deb || error "salt-ooo-addons_4.2.3_i386.deb"                                                   
   gdebi-gtk --non-interactive --auto-close salt-help_4.2.2_all.deb || error "salt-help_4.2.2_all.deb"                                                                 
   gdebi-gtk --non-interactive --auto-close salt_4.2.2_all.deb || error "salt_4.2.2_all.deb"
   zenity --info --title="Salt 4" --text="La instal·lació del Salt ha finalitzat correctament."
fi

exit 0

En negrita vemos la secuencia de instalación de los paquetes:

$ cd nou_salt_20120312/$ sudo dpkg -i salt-common_4.2.2_all.deb
[sudo] password for ruben:
Seleccionando paquete salt-common previamente no seleccionado
(Leyendo la base de datos ... 431421 ficheros o directorios instalados actualmente.)
Desempaquetando salt-common (de salt-common_4.2.2_all.deb) ...
Configurando salt-common (4.2.2) ...
$ sudo dpkg -i salt-data_4.2.0+201200312.1_all.deb
Seleccionando paquete salt-data previamente no seleccionado
(Leyendo la base de datos ... 431426 ficheros o directorios instalados actualmente.)
Desempaquetando salt-data (de salt-data_4.2.0+201200312.1_all.deb) ...
Configurando salt-data (4.2.0+201200312.1) ...
$ sudo dpkg -i salt-server_4.2.2_i386.deb
Seleccionando paquete salt-server previamente no seleccionado
(Leyendo la base de datos ... 431480 ficheros o directorios instalados actualmente.)                                                                                   
Desempaquetando salt-server (de salt-server_4.2.2_i386.deb) ...                                                                                                        
Configurando salt-server (4.2.2) ...                                                                                                                                   
update-rc.d: warning: /etc/init.d/salt-server missing LSB information                                                                                                  
update-rc.d: see
 System start/stop links for /etc/init.d/salt-server already exist.
Starting SaltServer: sltsrv.
Procesando disparadores para ureadahead ...
Procesando disparadores para man-db ...
$ sudo dpkg -i salt-ooo-addons_4.2.3_i386.deb
Seleccionando paquete salt-ooo-addons previamente no seleccionado
(Leyendo la base de datos ... 431512 ficheros o directorios instalados actualmente.)
Desempaquetando salt-ooo-addons (de salt-ooo-addons_4.2.3_i386.deb) ...
dpkg: problemas de dependencias impiden la configuración de salt-ooo-addons:
 salt-ooo-addons depende de openoffice.org-writer; sin embargo:
  El paquete `openoffice.org-writer' no está instalado.
dpkg: error al procesar salt-ooo-addons (--install):
 problemas de dependencias - se deja sin configurar
Se encontraron errores al procesar:
 salt-ooo-addons
Como podéis ver tenemos problemas para instalar este paquete. De modo que lo llevamos a una carpeta aparte para poder trabajar con su contenido:
$ mkdir modificados
$ cd modificados
$ mv ../salt-ooo-addons_4.2.3_i386.deb .
$ ar x salt-ooo-addons_4.2.3_i386.deb
$ ll
total 112
-rw-r--r-- 1 ruben ruben 1359 may 8 02:49 control.tar.gz
-rw-r--r-- 1 ruben ruben 50911 may 8 02:49 data.tar.gz
-rw-r--r-- 1 ruben ruben 4 may 8 02:49 debian-binary
-rw-rw-r-- 1 ruben ruben 52464 mar 9 10:25 salt-ooo-addons_4.2.3_i386.deb
$ tar xvzf control.tar.gz
./
./control
./prerm
./md5sums
./postinst
$ ll
total 128
-rw-r--r-- 1 ruben ruben 753 mar 9 10:25 control
-rw-r--r-- 1 ruben ruben 1359 may 8 02:49 control.tar.gz
-rw-r--r-- 1 ruben ruben 50911 may 8 02:49 data.tar.gz
-rw-r--r-- 1 ruben ruben 4 may 8 02:49 debian-binary
-rw-r--r-- 1 ruben ruben 293 mar 9 10:25 md5sums
-rwxr-xr-x 1 ruben ruben 1136 mar 9 10:25 postinst*
-rwxr-xr-x 1 ruben ruben 1009 mar 9 10:25 prerm*
-rw-rw-r-- 1 ruben ruben 52464 mar 9 10:25 salt-ooo-addons_4.2.3_i386.deb

Vamos a editar el fichero control que incluye que las dependencias necesarias para poder instalar este paquete (el error que nos daba más arriba es que no teníamos instalado el paquete openoffice-writer), de modo que cambiamos la línea Depends:
Depends: libreoffice-writer, salt-server
Editamos también los ficheros prerm y postinst, estos ficheros utilizan la utilidad unopkg pero la ruta a la que intentan acceder es de openoffice y no de libreoffice, así que hacemos los siguientes cambios:

En el fichero prerm:
case "$1" in
    remove|upgrade|deconfigure)
        /usr/lib/openoffice/program/unopkg remove -v --shared salt.zip
        /usr/lib/openoffice/program/unopkg remove -v --shared saltutil.zip
Lo cambiamos por:
case "$1" in
    remove|upgrade|deconfigure)
        /usr/lib/libreoffice/program/unopkg remove -v --shared salt.zip
        /usr/lib/libreoffice/program/unopkg remove -v --shared saltutil.zip
En el fichero postinst:
case "$1" in
    configure)
        /usr/lib/openoffice/program/unopkg add -v --shared /usr/share/salt-ooo-addons/salt.zip
        /usr/lib/openoffice/program/unopkg add -v --shared /usr/share/salt-ooo-addons/saltutil.zip
    ;;
Lo cambiamos por:
case "$1" in
    configure)
        /usr/lib/libreoffice/program/unopkg add -v --shared /usr/share/salt-ooo-addons/salt.zip
        /usr/lib/libreoffice/program/unopkg add -v --shared /usr/share/salt-ooo-addons/saltutil.zip
    ;;
 Hemos terminado con la parte referente a control.tar.gz así que "reconstruimos" esta parte:
$ tar cvzf control.tar.gz control prerm md5sums postinst
control
prerm
md5sums
postinst

$ rm control prerm md5sums postinst
$ ar r salt-ooo-addons_4.2.3_i386.deb control.tar.gz
Continuemos con data.tar.gz:
$ tar xvzf data.tar.gz
./
./usr/
./usr/share/
./usr/share/doc/
./usr/share/doc/salt-ooo-addons/
./usr/share/doc/salt-ooo-addons/copyright
./usr/share/doc/salt-ooo-addons/changelog.gz
./usr/share/salt-ooo-addons/
./usr/share/salt-ooo-addons/salt.zip
./usr/share/salt-ooo-addons/saltutil.zip
$ cd usr/share/salt-ooo-addons/
$ ll
total 56
-rw-r--r-- 1 ruben ruben 14415 mar  9 10:25 saltutil.zip
-rw-r--r-- 1 ruben ruben 38815 mar  9 10:25 salt.zip
$ unzip salt.zip
Archive:  salt.zip
  inflating: addon.xcu              
  inflating: ferram_ajuda_16.bmp    
  inflating: ferram_ajuda_26.bmp    
  inflating: ferram_config_16.bmp   
  inflating: ferram_config_26.bmp   
  inflating: ferram_corregir_16.bmp 
  inflating: ferram_corregir_26.bmp 
  inflating: ferram_revisar_16.bmp  
  inflating: ferram_revisar_26.bmp  
  inflating: ferram_stop_16.bmp     
  inflating: ferram_stop_26.bmp     
  inflating: ferram_traduir_16.bmp  
  inflating: ferram_traduir_26.bmp  
  inflating: ferram_traduir_i_16.bmp 
  inflating: ferram_traduir_i_26.bmp 
  inflating: sltooo.py              
Editamos addon.xcu:
$ nano addon.xcu
Cambiamos oor:node por:
oor:component-data
 Además gracias la comentario de Paco de un artículo anterior vamos a cambiar la codificación, de este modo solucionaremos el error: "Cannot convert to UTF-8".
$ iconv -f iso-8859-15 -t utf-8 addon.xcu > addon.xcu.utf8
$ mv addon.xcu.utf8 addon.xcu
$ iconv -f iso-8859-15 -t utf-8 sltooo.py > sltooo.py.utf8
$ mv sltooo.py.utf8 sltooo.py
$ zip -r salt.zip addon.xcu sltooo.py
$ rm addon.xcu ferram_* sltooo.py
Tenemos que repetir el mismo proceso para saltutil.zip y hacer exactamente los mismos cambios, la única diferencia es que el fichero sltooo.py en este caso es sltuooo.py

Tras estos cambios reconstruimos el paquete debian con todos los cambios:
$ cd ../../..
$ rm data.tar.gz
$ tar cvzf data.tar.gz usr/
usr/
usr/share/
usr/share/doc/
usr/share/doc/salt-ooo-addons/
usr/share/doc/salt-ooo-addons/copyright
usr/share/doc/salt-ooo-addons/changelog.gz
usr/share/salt-ooo-addons/
usr/share/salt-ooo-addons/salt.zip
usr/share/salt-ooo-addons/saltutil.zip
$ ll
total 116
-rw-r--r-- 1 ruben ruben  1378 may  8 02:57 control.tar.gz
-rw-rw-r-- 1 ruben ruben 50924 may  8 03:37 data.tar.gz
-rw-r--r-- 1 ruben ruben     4 may  8 02:49 debian-binary
-rw-rw-r-- 1 ruben ruben 52482 may  8 03:01 salt-ooo-addons_4.2.3_i386.deb
drwxr-xr-x 3 ruben ruben  4096 mar  9 10:25 usr/
Ojo3: Mucho cuidado con el siguiente comando, sino estás en el sitio y estás ejecutando estos comandos como root puedes corroper tu sistema:
$ rm -rf usr/
$ ar r salt-ooo-addons_4.2.3_i386.deb data.tar.gz
Terminamos la instalación:
$ sudo dpkg -i salt-ooo-addons_4.2.3_i386.deb
[sudo] password for ruben:
(Leyendo la base de datos ... 431518 ficheros o directorios instalados actualmente.)
Preparando para reemplazar salt-ooo-addons 4.2.3 (usando salt-ooo-addons_4.2.3_i386.deb) ...
Desempaquetando el reemplazo de salt-ooo-addons ...
Configurando salt-ooo-addons (4.2.3) ...
Synchronizing repository for shared extensions

Synchronizing repository for bundled extensions
 
  Enabling: Script provider for Python
   Enabling: components.rdb

unopkg done.
Synchronizing repository for shared extensions

 Synchronizing repository for bundled extensions

  Enabling: salt.zip
   Enabling: addon.xcu

unopkg done.

$ sudo dpkg -i salt-help_4.2.2_all.deb
[sudo] password for ruben:
Seleccionando paquete salt-help previamente no seleccionado
(Leyendo la base de datos ... 431518 ficheros o directorios instalados actualmente.)
Desempaquetando salt-help (de salt-help_4.2.2_all.deb) ...
Configurando salt-help (4.2.2) ...

$ sudo dpkg -i salt_4.2.2_all.deb
Seleccionando paquete salt previamente no seleccionado
(Leyendo la base de datos ... 433239 ficheros o directorios instalados actualmente.)
Desempaquetando salt (de salt_4.2.2_all.deb) ...
Configurando salt (4.2.2) ...
 

Accedemos a libreoffice y comprobamos el administrador de extensiones.


Como podemos comprobar no aparecen las extensiones, así que el modo shared no funciona muy fino, no hay problema las añadimos, pulsamos sobre Añadir y vamos al directorio: /usr/share/salt-ooo-addons:


Repetimos el proceso para salt.zip primero y después para saltultil.zip y veremos que ya nos aparecen en el administrador de extensiones:


Cerramos libreoffice y al volverlo a abrir vemos que disponemos de la funcionalidad completa:



Otros problemas:

1. La eliminación del paquete salt-ooo-addons:

Hay problemas al intentar desinstalar este paquete, nos aparece el siguiente error:
ERROR: Error while adding: vnd.sun.star.expand:$UNO_SHARED_PACKAGES_CACHE/uno_packages/ludpt97i.tmp_/salt.zip
       Cause: (com.sun.star.lang.IllegalArgumentException) { { Message = "Cannot detect media-type: file:///var/spool/libreoffice/uno_packages/cache/uno_packages/ludpt97i.tmp_/salt.zip", Context = (com.sun.star.uno.XInterface) @9db7080 }, ArgumentPosition = (short) -1 }

unopkg failed.
No he conseguido solucionarlo de una forma "elegante".
Lo que he hecho ha sido volver a editar el fichero prerm del control.tar.gz para comentar las líneas que borran las extensiones (así es como lo tenéis para descargar en este artículo):
$ nano prerm
case "$1" in
    remove|upgrade|deconfigure)
#        /usr/lib/libreoffice/program/unopkg remove -v --shared salt.zip
#        /usr/lib/libreoffice/program/unopkg remove -v --shared saltutil.zip
Y los borramos manualmente:
# ll /var/spool/libreoffice/uno_packages/cache/uno_packages/ -R
/var/spool/libreoffice/uno_packages/cache/uno_packages/:
total 8
-rw------- 1 root root    0 may  9 14:25 ludr1mw8.tmp
drwxr-xr-x 3 root root 4096 may  9 14:25 ludr1mw8.tmp_/
-rw------- 1 root root    0 may  9 14:25 ludr1pp4.tmp
drwxr-xr-x 3 root root 4096 may  9 14:25 ludr1pp4.tmp_/

/var/spool/libreoffice/uno_packages/cache/uno_packages/ludr1mw8.tmp_:
total 8
drwxr-xr-x 2 root root 4096 may  9 14:25 salt.zip/
-rw-r--r-- 1 root root   18 may  9 14:25 salt.zipproperties

/var/spool/libreoffice/uno_packages/cache/uno_packages/ludr1pp4.tmp_:
total 8
drwxr-xr-x 2 root root 4096 may  9 14:25 saltutil.zip/
-rw-r--r-- 1 root root   18 may  9 14:25 saltutil.zipproperties
Cuidado porque podrías tener algo más en ese directorio, sino teneís nada más:
# rm -rf /var/spool/libreoffice/uno_packages/cache/uno_packages/*
Sino borrar el fichero .tmp y su directorio asociado que os aparezca a cada uno.

Ya había dicho que no era muy elegante ;-)

2. Solo funciona en sistemas de 32 bits, olvidaros de sistemas de 64 bits sin los fuentes. En sistemas de 64 bits da el siguiente error:
$ sudo dpkg -i salt-common_4.2.2_all.deb
[sudo] password for ruben:
Seleccionando paquete salt-common previamente no seleccionado
(Leyendo la base de datos ... 184992 ficheros o directorios instalados actualmente.)
Desempaquetando salt-common (de salt-common_4.2.2_all.deb) ...
Configurando salt-common (4.2.2) ...
ruben@cpv1174:~/salt/nou_salt_20120312$ sudo dpkg -i salt-data_4.2.0+201200312.1_all.deb
Seleccionando paquete salt-data previamente no seleccionado
(Leyendo la base de datos ... 184999 ficheros o directorios instalados actualmente.)
Desempaquetando salt-data (de salt-data_4.2.0+201200312.1_all.deb) ...
Configurando salt-data (4.2.0+201200312.1) ...
ruben@cpv1174:~/salt/nou_salt_20120312$ sudo dpkg -i salt-server_4.2.2_i386.deb
Seleccionando paquete salt-server:i386 previamente no seleccionado
(Leyendo la base de datos ... 185053 ficheros o directorios instalados actualmente.)
Desempaquetando salt-server:i386 (de salt-server_4.2.2_i386.deb) ...
dpkg: problemas de dependencias impiden la configuración de salt-server:i386:
 salt-server:i386 depende de python (>= 2.5).
 salt-server:i386 depende de salt-common.
 salt-server:i386 depende de salt-data.
dpkg: error al procesar salt-server:i386 (--install):
 problemas de dependencias - se deja sin configurar
Procesando disparadores para ureadahead ...
ureadahead will be reprofiled on next reboot
Procesando disparadores para man-db ...
Se encontraron errores al procesar:
 salt-server:i386
 Eliminando del fichero control las dependencias para probar:
$ sudo dpkg -i salt-server_4.2.2_i386.deb
(Leyendo la base de datos ... 185086 ficheros o directorios instalados actualmente.)
Preparando para reemplazar salt-server:i386 4.2.2 (usando salt-server_4.2.2_i386.deb) ...
Desempaquetando el reemplazo de salt-server:i386 ...
Configurando salt-server:i386 (4.2.2) ...
update-rc.d: warning: /etc/init.d/salt-server missing LSB information
update-rc.d: see
 Adding system startup for /etc/init.d/salt-server ...
   /etc/rc1.d/K00salt-server -> ../init.d/salt-server
   /etc/rc6.d/K00salt-server -> ../init.d/salt-server
   /etc/rc1.d/S20salt-server -> ../init.d/salt-server
   /etc/rc2.d/S20salt-server -> ../init.d/salt-server
   /etc/rc3.d/S20salt-server -> ../init.d/salt-server
   /etc/rc4.d/S20salt-server -> ../init.d/salt-server
   /etc/rc5.d/S20salt-server -> ../init.d/salt-server
Starting SaltServer: sltsrv.
Traceback (most recent call last):
  File "/usr/bin/sltsrv", line 40, in
    import sltgl
  File "/usr/share/salt-server/sltgl.py", line 241, in
    import sltgen
ImportError: /usr/lib/sltgen.so: wrong ELF class: ELFCLASS32
Procesando disparadores para ureadahead ...
Procesando disparadores para man-db ...

Vamos que ocurre lo normal, quizás se pueda hacer algo utilizando la librería ia32-libs, pero sin los fuentes es poco probable que se pueda hacer algo con librerías que ya han sido compiladas ;-)
Algo más de información sobre le soporte multiarch en debian: http://wiki.debian.org/Multiarch/Implementation

3. Problemas que puedes tener si te pones a hacer tus propias pruebas:
No consigues abrir libreoffice. Después de varias pruebas se queda deteriorado y no puedes ni abrirlo, con mensajes como (ejecutando desde terminal para poder verlos):
$ soffice
terminate called after throwing an instance of 'com::sun::star::uno::RuntimeException'
Borramos las configuración específica  del usuario:
$ rm -rf ~/.config/libreoffice
Si aún así no te funciona podemos purgar la instalación de libreoffice y volver a instalar:
$ aptitude purge libreoffice-base-core libreoffice-core
$ aptitude install libreoffice
4. Si el paquete salt-ooo-addons se queda en un estado inestable y no consigues elimiarlo porque dice que necesita una reinstalación:
# dpkg -r --force-remove-reinstreq salt-ooo-addonsdpkg: aviso: sobreseyendo el problema porque está activa la opción --force:

 El paquete está en un estado muy malo e inconsistente - debe reinstalarlo
 antes de intentar desinstalarlo.
(Leyendo la base de datos ... 431516 ficheros o directorios instalados actualmente.)
Desinstalando salt-ooo-addons ...
5. Comandos útiles.
Para las pruebas con las extensiones no vale la pena estar instalando y desinstalando paquetes directamente utilizamos comandos:
# /usr/lib/libreoffice/program/unopkg add -v --shared /usr/share/salt-ooo-addons/salt.zip
# /usr/lib/libreoffice/program/unopkg remove -v --shared /usr/share/salt-ooo-addons/salt.zip
 # /usr/lib/libreoffice/program/unopkg list --shared
All deployed shared extensions:

Identifier: org.openoffice.legacy.salt.zip
  URL: vnd.sun.star.expand:$UNO_SHARED_PACKAGES_CACHE/uno_packages/lucfzww3.tmp_/salt.zip
  is registered: yes
  Media-Type: application/vnd.sun.star.legacy-package-bundle
  Description:
  bundled Packages: {
      URL: vnd.sun.star.expand:$UNO_SHARED_PACKAGES_CACHE/uno_packages/lucfzww3.tmp_/salt.zip/addon.xcu
      is registered: yes
      Media-Type: application/vnd.sun.star.configuration-data
      Description:

      URL: vnd.sun.star.expand:$UNO_SHARED_PACKAGES_CACHE/uno_packages/lucfzww3.tmp_/salt.zip/sltooo.py
      is registered: yes
      Media-Type: application/vnd.sun.star.uno-component;type=Python
      Description:

  }

Identifier: org.openoffice.legacy.saltutil.zip
  URL: vnd.sun.star.expand:$UNO_SHARED_PACKAGES_CACHE/uno_packages/lucfzzp5.tmp_/saltutil.zip
  is registered: yes
  Media-Type: application/vnd.sun.star.legacy-package-bundle
  Description:
  bundled Packages: {
      URL: vnd.sun.star.expand:$UNO_SHARED_PACKAGES_CACHE/uno_packages/lucfzzp5.tmp_/saltutil.zip/sltuooo.py
      is registered: yes
      Media-Type: application/vnd.sun.star.uno-component;type=Python
      Description:

      URL: vnd.sun.star.expand:$UNO_SHARED_PACKAGES_CACHE/uno_packages/lucfzzp5.tmp_/saltutil.zip/addon.xcu
      is registered: yes
      Media-Type: application/vnd.sun.star.configuration-data
      Description:

  }
Y para rematar si queremos ver una traza:
# strace /usr/lib/libreoffice/program/unopkg remove -v --shared -f saltutil.zip


readlink("/usr/lib/libreoffice/ure-link", "../ure", 4095) = 6
lstat64("/usr/lib/ure", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr/lib", {st_mode=S_IFDIR|0755, st_size=122880, ...}) = 0
lstat64("/usr/lib/ure", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr/lib/ure/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr/lib", {st_mode=S_IFDIR|0755, st_size=122880, ...}) = 0
lstat64("/usr/lib/ure", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr/lib/ure/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/usr/lib/ure/lib/libuno_cppu.so.3", {st_mode=S_IFREG|0644, st_size=227236, ...}) = 0
gettimeofday({1336505315, 837259}, NULL) = 0
write(2, "\nERROR: Error while adding: vnd."..., 115
ERROR: Error while adding: vnd.sun.star.expand:$UNO_SHARED_PACKAGES_CACHE/uno_packages/lucfzzp5.tmp_/saltutil.zip
) = 115
write(2, "       Cause: (com.sun.star.lang"..., 275       Cause: (com.sun.star.lang.IllegalArgumentException) { { Message = "Cannot detect media-type: file:///var/spool/libreoffice/uno_packages/cache/uno_packages/lucfzzp5.tmp_/saltutil.zip", Context = (com.sun.star.uno.XInterface) @9ff38b8 }, ArgumentPosition = (short) -1 }
) = 275
close(10)                               = 0
munmap(0xb11b6000, 192512)              = 0
write(2, "\nunopkg failed.\n", 16
unopkg failed.
)      = 16


¿Por cierto alguien por ahí con lliurex y que me diga si le funciona? ;-)



Actualización (16/05/2012): He estado mirando el estado de salt en lliurex y tienen solucionado el problema del borrado como podemos ver aquí.
De modo que he cambiado los scripts postinst y prerm para que utilicen su solución para el borrado que es lo mismo que hacíamos manualmente en la explicación de este artículo pero de forma automática.
Añadimos esta sección de código a los scripts:

postinst:
clean_old_salts()
{
    FILES_TO_FURGATE="salt.zip saltutil.zip"
    DIRECTORY_IS="/var/spool/libreoffice/uno_packages/cache/uno_packages/"
   
    # Workaround to solve some upgrade problems
    # test if directory exists and contains some files.
   
    if [ -d "$DIRECTORY_IS"    ] ; then

        # If the files and directory exists:
        for f in $FILES_TO_FURGATE ; do
                AUX=$(find $DIRECTORY_IS -xtype d -name "$f")
            if [ -n "$AUX" ] ; then
                    DIRTY_FILE="$(dirname "$AUX" | sed "s%_$%%")"
                    rm -rf "$DIRTY_FILE" "$(dirname "$AUX"/)"
            fi
                echo "$f is cleaning"
        done
    fi
}


case "$1" in
    configure)
    clean_old_salts
    /usr/lib/libreoffice/program/unopkg add -v --shared /usr/share/salt-ooo-addons/salt.zip
    /usr/lib/libreoffice/program/unopkg add -v --shared /usr/share/salt-ooo-addons/saltutil.zip
    ;;
    abort-remove)
    clean_old_salts
    ;;
prerm:
clean_old_salts()
{
    FILES_TO_FURGATE="salt.zip saltutil.zip"
    DIRECTORY_IS="/var/spool/libreoffice/uno_packages/cache/uno_packages/"
   
    # Workaround to solve some upgrade problems
    # test if directory exists and contains some files.
   
    if [ -d "$DIRECTORY_IS"    ] ; then

        # If the files and directory exists:
        for f in $FILES_TO_FURGATE ; do
                AUX=$(find $DIRECTORY_IS -xtype d -name "$f")
            if [ -n "$AUX" ] ; then
                    DIRTY_FILE="$(dirname "$AUX" | sed "s%_$%%")"
                    rm -rf "$DIRTY_FILE" "$(dirname "$AUX"/)"
            fi
                echo "$f is cleaning"
        done
    fi
}

case "$1" in
    remove|upgrade|deconfigure)
    clean_old_salts
#    /usr/lib/libreoffice/program/unopkg remove -v --shared salt.zip
#    /usr/lib/libreoffice/program/unopkg remove -v --shared saltutil.zip
    ;;

Por lo que he visto de lliurex en la próxima versión funcionará con lliurex como podemos ver en el fichero control cambia la dependencia de openoffice a libreoffice:

Depends: salt-server, libreoffice-common

Al desacargar el fichero salt-ooo-addons.deb desde este enlace o el del inicio del artículo ya tenéis actualizados estos cambios.


21 comentarios:

  1. Muy bueno Ruben.

    Muchas gracias por un tutorial tan bien hecho y claro.

    Lo probaré en Ubuntu 11.10 y ya digo si funciona.

    ResponderEliminar
  2. Hola.

    He actualizado el artículo para solucionar el problema de la desinstalación del paquete.

    Y gracias por comentar como os funciona en otros sistemas.

    Saludos.

    ResponderEliminar
  3. Desde LliureX estamos trabajando para que el Salt funcione lo mejor posible con Libreoffice.

    Muchísimas gracias por tu ayuda y por tus conocimientos.

    ResponderEliminar
  4. Xangel me alegro que os haya sido útil.

    Se que no depende de vosotros pero sería interesante un punto de encuentro para los usuarios de Salt y no parece que la Consellería de Educación promuevan ninguna iniciativa en esta línea (solo hay que ver la web oficial de Salt).
    Me consta que en los foros de lliurex es uno de los pocos sitios donde se encuentra algo de información, ¿qué tal sería generar una categoría dentro de vuestros foros para Salt?, de este modo se podría crear ese lugar de encuentro para usuarios y administradores que trabajan con Salt.
    A ver que te parece la idea.

    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola Ruben.

      Buena currada! y gracias por citarme por lo de UTF-8!!!


      Yo lo estoy intentando instalar en un Ubuntu 12.04 y no lo consigo (lo he conseguido en 11.04 y 11.10).

      Aquí te mando lo que me sale cuando lo intento instalar:

      Seleccionando paquete salt-ooo-addons previamente no seleccionado
      (Leyendo la base de datos ... 290665 ficheros o directorios instalados actualmente.)
      Desempaquetando salt-ooo-addons (de salt-ooo-addons_4.2.3_i386.deb) ...
      Configurando salt-ooo-addons (4.2.3) ...
      Synchronizing repository for shared extensions



      Synchronizing repository for bundled extensions




      ERROR: com.sun.star.deployment.DeploymentException: an error occurred during file opening
      Exception details:
      (com.sun.star.uno.RuntimeException) { { Message = "com.sun.star.deployment.DeploymentException: an error occurred during file opening", Context = (com.sun.star.uno.XInterface) @0 } }

      unopkg failed.
      dpkg: error al procesar salt-ooo-addons (--install):
      el subproceso instalado el script post-installation devolvió el código de salida de error 1
      Se encontraron errores al procesar:
      salt-ooo-addons

      Lo he intentado varias veces, incluso he reinstalado todo el LibreOffice y nada...

      El sistema que tengo es:
      3.2.0-31-generic-pae #50-Ubuntu SMP Fri Sep 7 16:39:45 UTC 2012 i686 i686 i386 GNU/Linux

      Tienes alguna idea de que puede estar pasando?

      Una cosa, para quitarlo (y lo he hecho varias veces) no hay que editar el fichero prerm del fichero control.tar.gz, con editar el fichero /var/lib/dpkg/info/salt-ooo-addons.prerm y hacer los cambios que dices es suficiente. Luego hacer el dpkg -r salt-ooo-addons y se elimina...

      Enhorabuena y gracias otra vez por la currada que te has dado...

      Un saludo

      Paco

      Eliminar
    2. Hola Paco.

      ¿El error te lo da con el paquete deb que te has descargado desde aquí o uno que te has creado?.
      Lo único que se me ocurre es que cuando estuve haciendo pruebas hice la transformación a utf8 de ficheros que no debía y entonces daba errores (creo recordar que similares).

      El que sea ubuntu 12.04 no creo que sea el problema.

      Ya me cuentas.
      Saludos.

      Eliminar
    3. Hola Rubén,

      El paquete lo he bajado de aquí (https://docs.google.com/open?id=0Bw1Qpk2_2J6kMlpLN1dzQjhvMVk) pero he hecho yo todos los cambios ya que no están hechos en el paquete y también lo de convertirlo a UTF8. Parece que el paquete que has puesto no esta modificado por ti...

      Si lo tienes ya modificado me dices donde lo puedo bajar y pruebo. A lo mejor he hecho algo mal o se me ha olvidado algo (aunque lo he hecho 3 veces...)

      Muchas gracias!

      Paco

      Por cierto, yo también me uno al grupo de pringaos ocasionales, muy bueno el artículo y me identifico perfectamente con el...

      Eliminar
  5. Hola.

    El paquete no es válido, creo que no actualice correctamente el fichero en google docs.
    Prueba ahora, este es el que tengo instalado yo, puedes comprobar que es el nuevo porque tiene un tamaño distinto.
    Siento el error.

    Saludos.

    ResponderEliminar
  6. Hola RUben,

    Gracias por pasarme el paquete, pero veo que también me da error... No tengo ni idea que puede pasar, esto es lo que dice:
    ----------------------------
    Seleccionando paquete salt-ooo-addons previamente no seleccionado
    (Leyendo la base de datos ... 290773 ficheros o directorios instalados actualmente.)
    Desempaquetando salt-ooo-addons (de salt-ooo-addons_4.2.3_i386.deb) ...
    Configurando salt-ooo-addons (4.2.3) ...
    salt.zip is cleaning
    saltutil.zip is cleaning
    Synchronizing repository for shared extensions



    Synchronizing repository for bundled extensions




    ERROR: error scanning bundle: vnd.sun.star.expand:$UNO_SHARED_PACKAGES_CACHE/uno_packages/lur7by2b.tmp_/salt.zip
    Cause: (com.sun.star.ucb.InteractiveAugmentedIOException) { { { { Message = "an error occurred during opening a directory", Context = (com.sun.star.uno.XInterface) @887e6c4 (ImplementationName = "com.sun.star.comp.ucb.FileContent") }, Classification = (com.sun.star.task.InteractionClassification) ERROR }, Code = (com.sun.star.ucb.IOErrorCode) NO_DIRECTORY }, Arguments = ([]any) { { (com.sun.star.beans.PropertyValue) { Name = "Uri", Handle = (long) -1, Value = (any) { "file:///var/spool/libreoffice/uno_packages/cache/uno_packages/lur7by2b.tmp_/salt.zip" }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } }, { (com.sun.star.beans.PropertyValue) { Name = "ResourceName", Handle = (long) -1, Value = (any) { "/var/spool/libreoffice/uno_packages/cache/uno_packages/lur7by2b.tmp_/salt.zip" }, State = (com.sun.star.beans.PropertyState) DIRECT_VALUE } } } }

    unopkg failed.
    dpkg: error al procesar salt-ooo-addons (--install):
    el subproceso instalado el script post-installation devolvió el código de salida de error 1
    Se encontraron errores al procesar:
    salt-ooo-addons
    ----------------------

    Y al continuar instalando el resto dice:
    --------------------------
    Seleccionando paquete salt-help previamente no seleccionado
    (Leyendo la base de datos ... 290779 ficheros o directorios instalados actualmente.)
    Desempaquetando salt-help (de salt-help_4.2.2_all.deb) ...
    Seleccionando paquete salt previamente no seleccionado
    Desempaquetando salt (de salt_4.2.2_all.deb) ...
    Configurando salt-help (4.2.2) ...
    dpkg: problemas de dependencias impiden la configuración de salt:
    salt depende de salt-ooo-addons; sin embargo:
    El paquete `salt-ooo-addons' no está configurado todavía.
    dpkg: error al procesar salt (--install):
    problemas de dependencias - se deja sin configurar
    Se encontraron errores al procesar:
    salt
    --------------------------

    Es curioso, ya que el paquete parece instalado:

    ---------------------------------------
    dpkg --get-selections | grep -i salt
    salt install
    salt-common install
    salt-data install
    salt-help install
    salt-ooo-addons install
    salt-server install
    ----------------------

    En fin, no tengo ni idea que puede pasar, si se te ocurre algo me lo dices, yo ya no se que hacer...

    He probado a copiar en los subdir "~/.config/libreoffice/3/user/uno_packages/cache/uno_packages/lupzevf3.tmp_" y "~/.config/libreoffice/3/user/uno_packages/cache/uno_packages/lupzevf6.tmp_", que es donde va a buscarlo, a pelo lo que tengo en otro ordenador que me funciona y tampoco...

    Otra vez muchas gracias y si quieres, por no llenar este blog, mandarme algo a mi correo es: glezglez1@gmail.com

    Un saludo

    Paco.

    Estoy por llevarte un día al poli(sigues yendo al poli?) el portátil a ver si se te ocurre algo...

    ResponderEliminar
  7. SOLUCIONADO!!!!!

    Hola Rubén,

    Ya está solucionado, aunque no se cual era el problema.

    Como ya estaba harto he desinstalado completamente el LibreOffice y el UNO y he borrado todas las carpetas de configuración que cuelgan de ~/.config/libreoffice

    He vuelto a instalar todo y luego a instalar el salt, y a la primera... Ningún problema con el paquete que has dejado para descargar.

    Muchas gracias otra vez!

    Un saludo

    Paco

    ResponderEliminar
  8. Sois unos cracks, yo no puedo pasar del segundo paso... vamos, si para instalar el salt necesito hacer todo eso lo tengo claro. Utilizaré el de internet... gracias

    ResponderEliminar
    Respuestas
    1. Hola.

      El artículo cuento todo el proceso y hace que parezca más difícil, en resumen:

      # wget http://www.cefe.gva.es/polin/docs/salt4U.zip
      # unzip salt4U.zip

      Sustituyes el paquete salt-ooo-addons_4.2.3_i386.deb por el que deje preparado:
      https://docs.google.com/open?id=0Bw1Qpk2_2J6kMlpLN1dzQjhvMVk

      Y a instalar:
      # dpkg -i salt-common_4.2.2_all.deb
      # dpkg -i salt-data_4.2.0+201200312.1_all.deb
      # dpkg -i salt-server_4.2.2_i386.deb
      # dpkg -i salt-ooo-addons_4.2.3_i386.deb
      # dpkg -i salt-help_4.2.2_all.deb
      # dpkg -i salt_4.2.2_all.deb

      Ya está, venga prueba a ver y sino cuéntanos que problema tienes.

      Eliminar
    2. Hola Ruben:
      Jo he fet la instal·lació manual, paquet deb rere paquet deb, ja que no domine el terminal, però no he tingut cap problema. Ja el tinc instal·lat i funcionant! Moltes gràcies!! Has fet un esforç molt gran!

      Eliminar
  9. Buenas, el problema es que cuando pongo el comando de instalar "dpkg -i salt-common_4.2.2_all.deb" me sale lo siguiente:
    dpkg: error al procesar salt-common_4.2.2_all.deb (--install):
    no se puede acceder al archivo: No existe el archivo o el directorio
    Se encontraron errores al procesar:
    salt-common_4.2.2_all.deb

    ResponderEliminar
  10. Uffff! para poder borrar el "salt ooo" ese de las narices no sabes lo que me ha costado, ninguna de las opciones que habíais puesto me han servido, sólo ha valido entrar en nautilus como superusuario, entrar en la raíz de librerías y eliminarlo, después abrir synaptic y desinstalarlo!!! vivaaaaaaaaaaaaa!!!mil gracias de todas formas por la ayuda y la página!!!Para los que no somos informáticos estas cosas nos cuestan Dios y ayuda!!!

    ResponderEliminar
  11. A mi me a costado un monton poder hacer la instalación de SALT ( Xubuntu ). Al final e eliminado todos os archivos de libreoffice con el synaptic. Despúes por terminal:
    sudo add-apt-repository ppa:libreoffice/ppa
    sudo apt-get update
    sudo apt-get install libreoffice libreoffice-gnome
    Se me a instalado la versión 4.0.2.1
    Luego e modificado el salt4U.zip con el archivo que incluias en el tutorial y lo e instaladotal cuál mencionas arriba y....ya está. Lo abré intentado unas 10 veces o así. Muchisimas gracias por vuestra ayuda.

    ResponderEliminar
  12. Hola a todos!
    Alguien ha intentado instalarlo en Ubuntu 12.04.3, 64Bits y LibreOffice Versión 4.0.4.2 (ID de compilación: 400m0(Build:2))

    Si alguien lo ha logrado que diga como.

    Muchas gracias!!!!

    ResponderEliminar
    Respuestas
    1. Hola.
      Lo siento pero no lo he intentado. Mira a ver en que estado lo tiene la gente de lliurex a ver si tienes más suerte.

      Saludos.

      Eliminar
  13. Ok, muchas gracias!

    Si descubro algo lo cuento.

    ResponderEliminar