jueves, 21 de junio de 2012

ZFS en ubuntu

IMPORTANTE: No lo recomiendo para entornos en producción.

Después de las pruebas realizadas y varios "kernel panics" he decidido no utilizarlo todavía en producción, es una lastima pero no me la juego.

Proceso de instalación de zfs:
# add-apt-repository "deb http://ppa.launchpad.net/zfs-native/stable/ubuntu oneiric main "
# aptitude update
# aptitude safe-upgrade -s
# aptitude install ubuntu-zfs
Creación del pool:
# zpool create cabina_emc /dev/mapper/mpath6-part1
Comprobamos el pool recién creado:
# zpool status -v
pool: cabina_emc
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
cabina_emc ONLINE 0 0 0
mpath6-part1 ONLINE 0 0 0

errors: No known data errors

Creamos un sistema de ficheros (dataset):

# zfs create cabina_emc/backup
Establecemos el punto de montaje:

# zfs set mountpoint=/media/cabina_emc cabina_emc
# zfs set mountpoint=/media/cabina_emc/backup cabina_emc/backup
Realizamos varias comprobaciones:

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
cabina_emc 169G 838G 30K /media/cabina_emc
cabina_emc/backup 169G 838G 169G /media/cabina_emc/backup
# zfs mount cabina_emc/backup


# mount
cabina_emc/backup on /media/cabina_emc/backup type zfs (rw,xattr)
# df -h
S.ficheros Tam. Usado Disp. % Uso Montado en
cabina_emc/backup 1007G 169G 838G 17% /media/cabina_emc/backup
Listado de paquetes instalados:
# dpkg -l \*zfs*|grep iiii libzfs1 0.6.0.56-0ubuntu1~oneiric1 Native ZFS filesystem library for Linux
ii ubuntu-zfs 6~oneiric Native ZFS filesystem metapackage for Ubuntu.
ii zfs-dkms 0.6.0.56-0ubuntu1~oneiric1 Native ZFS filesystem kernel modules for Linux
ii zfsutils 0.6.0.56-0ubuntu1~oneiric1 Native ZFS management utilities for Linux

Solución de errores:

Si os aparece un error como este:
Apr 24 10:37:57 Mercurio kernel: [1018898.922590] vmap allocation for size 4198400 failed: use vmalloc= to increase size.

Editamos el  fichero: /etc/default/grub y añadimos el valor vmalloc.
# nano /etc/default/grub

# If you change this file, run 'update-grub' afterwards to update# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="vmalloc=512M"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Actualizamos grub y reiniciamos el sistema:
# update-grub
# reboot
Comprobamos que el cambio surge efecto:

# cat /proc/meminfo
MemTotal: 2062236 kB
MemFree: 274552 kB
Buffers: 69436 kB
Cached: 1494816 kB
SwapCached: 12 kB
Active: 982260 kB
Inactive: 641228 kB
Active(anon): 46772 kB
Inactive(anon): 16796 kB
Active(file): 935488 kB
Inactive(file): 624432 kB
Unevictable: 47012 kB
Mlocked: 47012 kB
HighTotal: 1585096 kB
HighFree: 113960 kB
LowTotal: 477140 kB
LowFree: 160592 kB
SwapTotal: 1783144 kB
SwapFree: 1783132 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 106140 kB
Mapped: 16844 kB
Shmem: 1364 kB
Slab: 57488 kB
SReclaimable: 36392 kB
SUnreclaim: 21096 kB
KernelStack: 2232 kB
PageTables: 2916 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2814260 kB
Committed_AS: 359632 kB
VmallocTotal: 524288 kB
VmallocUsed: 26680 kB
VmallocChunk: 281000 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 8184 kB
DirectMap2M: 503808 kB

Referencias:
http://hub.opensolaris.org/bin/download/Community+Group+zfs/docs/zfsadmin.pdf
http://zfsonlinux.org/faq.html
http://tech.libresoft.es/doku.php/manejozfs

miércoles, 13 de junio de 2012

Iscsi y mutlipath con una cabina EMC VNXe 3300

Disponemos de la red configurada como vimos en este artículo: http://blog.rubensalazar.net/2012/05/bridges-bonding-y-lacp.html

Debemos tener configurados los switches con las vlans correctamente para no tener problemas de red. Este tema no es objeto de este artículo.

En la cabina EMC hemos definido dos servidores iSCSI cada uno de ellos definido por dos ips, dos interfaces de red y cada uno asignado a un controlador diferente (storage processor) de forma que aseguramos la máxima redundancia.

Antes de seguir comentar que la consola de administración web de la cabina EMC ¡está hecha en flash!!!!!!!!!  lo que provoca mis mas sinceras maldiciones en arameo. ¿A estás alturas todavía con estas capulladas?.

Continuamos creando los espacios de almacenamiento, no voy a entrar más en la configuración de la cabina ya que cada una tiene su propio gestor y forma de configuración, de todos modos os pongo varios screenshots.

iSCSI Servers

Storages

Permisos de acceso a un Storage



















Como podemos ver en la imagen anterior hay un servidor con acceso a ese storage.
Vamos con la configuración del servidor para que pueda acceder a este recurso.

Instalamos el software necesario:

# aptitude install open-iscsi scsitools multipath-tools open-iscsi-utils
Editamos el fichero de configuración de open-scsi cambiando la propiedad node.startup de manual a automatic:
# nano /etc/iscsi/iscsid.conf
# To request that the iscsi initd scripts startup a session set to "automatic".
node.startup = automatic
Como hemos visto anteriormente tenemos dos servidores iSCSI:
  • iSCSIServer00: con dos ips 10.0.1.254 y 10.0.2.254
  • iSCSIServer01: ips 10.0.1.253 y 10.0.2.253

Realizamos el discover de los targets iSCSI de los servidores:
# iscsiadm -m discovery -t st -p 10.0.1.254
# iscsiadm -m discovery -t st -p 10.0.2.254
# iscsiadm -m discovery -t st -p 10.0.2.253
# iscsiadm -m discovery -t st -p 10.0.1.253
Comprobamos:
# iscsiadm -m node
10.0.1.254:3260,1 iqn.1992-05.com.emc:ckm001123005530000-6-vnxe
10.0.2.254:3260,1 iqn.1992-05.com.emc:ckm001123005530000-6-vnxe
10.0.1.253:3260,1 iqn.1992-05.com.emc:ckm001123005530000-7-vnxe
10.0.2.253:3260,1 iqn.1992-05.com.emc:ckm001123005530000-7-vnxe
Si listamos los dispositivos todavía no tendremos ninguno en nuestro sistema:

# ll /dev/mapper
total 0
drwxr-xr-x  2 root root     120 jun  6 12:26 ./
drwxr-xr-x 18 root root    4480 jun  6 12:26 ../
crw-------  1 root root 10, 236 abr 30 14:33 control
lrwxrwxrwx  1 root root       7 abr 30 14:33 remo-root -> ../dm-0
lrwxrwxrwx  1 root root       7 abr 30 14:33 remo-swap -> ../dm-1
Nos falta realizar el proceso de login:

# iscsiadm -m node -L all
Volvemos a listar los dispositivos:
# ll /dev/mapper
total 0
drwxr-xr-x  2 root root     120 jun  6 12:26 ./
drwxr-xr-x 18 root root    4480 jun  6 12:26 ../
crw-------  1 root root 10, 236 abr 30 14:33 control
lrwxrwxrwx  1 root root       7 jun  6 12:26 mpath0 -> ../dm-2
lrwxrwxrwx  1 root root       7 abr 30 14:33 remo-root -> ../dm-0
lrwxrwxrwx  1 root root       7 abr 30 14:33 remo-swap -> ../dm-1
A partir de este momento: crear particiones, formatear y añadir la entrada en /etc/fstab.

Para añadir más volúmenes y que el sistema los reconozca primero creamos el disco virtual y le damos acceso al host desde la cabina, para que lo reconozca el sistema realizamos logout y volvemos a hacer login (mucho cuidado con hacer los siguientes pasos si hay volúmenes montados de la cabina en este servidor, primero desmontar las unidades o se pueden perder datos):

# iscsiadm -m node --logout
Logging out of session [sid: 13, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.1.253,3260]
Logging out of session [sid: 14, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.2.253,3260]
Logging out of session [sid: 15, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.1.254,3260]
Logging out of session [sid: 16, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.2.254,3260]
Logout of [sid: 13, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.1.253,3260]: successful
Logout of [sid: 14, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.2.253,3260]: successful
Logout of [sid: 15, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.1.254,3260]: successful
Logout of [sid: 16, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.2.254,3260]: successful
# iscsiadm -m node -L all
Logging in to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.1.253,3260]
Logging in to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.2.253,3260]
Logging in to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.1.254,3260]
Logging in to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.2.254,3260]
Login to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.1.253,3260]: successful
Login to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.2.253,3260]: successful
Login to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.1.254,3260]: successful
Login to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.2.254,3260]: successful
Volvemos a listar los dispositivos y veremos que nos aparece un nuevo volúmen:

# ll /dev/mapper
total 0
drwxr-xr-x  2 root root      140 jun  6 12:25 ./
drwxr-xr-x 18 root root     4520 jun  6 12:25 ../
crw-------  1 root root  10, 236 abr 30 14:33 control
brw-rw----  1 root disk 252,   3 jun  6 12:25 mpath0
brw-rw----  1 root disk 252,   2 jun  6 12:25 mpath1
lrwxrwxrwx  1 root root        7 abr 30 14:33 remo-root -> ../dm-0
lrwxrwxrwx  1 root root        7 abr 30 14:33 remo-swap -> ../dm-1 

martes, 5 de junio de 2012

Evitar que los vídeos en flash salgan en azul

Pese a mi odio creciente al flash todavía tengo que soportarlo por lo menos hasta que html5 lo borre del mapa.

Desde hace varias semanas los vídeos aparecen en azul en ubuntu 12.04, está es la solución rápida:

$ sudo mkdir /etc/adobe
$ sudo echo "EnableLinuxHWVideoDecode=1" > /etc/adobe/mms.cfg

Reiniciamos el navegador y ... solucionado.

jueves, 17 de mayo de 2012

Acceso a una cabina de almacenamiento HP EVA 4100 con multipath

Disponemos de un servidor con dos tarjetas de Fiber Channel, cada una de estás tarjetas está conectada a un switch de fibra distinto y cada switch está conectado a los dos controladores de la EVA.
Vamos a ver como configurar el servidor con Ubuntu 10.04 para proporcionar acceso a la cabina en alta disponibilidad con multipath de forma que, desde el servidor, trabajaremos con un único dispositivo de almacenamiento por cada disco virtual que la EVA presente al servidor.
El esquema de conexión es el siguiente:



Comprobamos que el servidor dispone de las dos tarjetas conectadas:

# lspci| grep Fiber
01:08.0 Fibre Channel: Emulex Corporation Helios LightPulse Fibre Channel Host Adapter (rev 01)
02:09.0 Fibre Channel: Emulex Corporation Helios LightPulse Fibre Channel Host Adapter (rev 01)
El kernel cargará el módulo lpfc como driver para estás tarjetas:

root@Mercurio:/etc/modprobe.d# lsmod |grep lpfc
lpfc                  526920  24
scsi_transport_fc      52158  1 lpfc
En mi caso, en está versión de ubuntu no es necesario, pero si tenéis problemas con lpfc podéis crear el archivo /etc/modprobe.d/lpfc.conf para configurar su comportamiento:

# cat /etc/modprobe.d/lpfc.conf
#options lpfc lpfc_use_msi=0 lpfc_log_verbose=0xffff
options lpfc lpfc_use_msi=0
Para instalar multipath:

# aptitude install multipath-tools scsitools
Configuramos multipath con el siguiente fichero, tiene una sección específica para nuestra EVA 4100:
# cat /etc/multipath.conf
##
## This is a template multipath-tools configuration file
## Uncomment the lines relevent to your environment
##


## Use user friendly names, instead of using WWIDs as names.
defaults {
        user_friendly_names yes
}


blacklist {
root@Mercurio:~# cat /etc/multipath
multipath/      multipath.conf 
       devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st|eth|br)[0-9]*"
       devnode "^hd[a-z][[0-9]*]"
#       devnode "^sd[c-d][[0-9]*]"
       devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
}


devices {
        device {
                vendor "HP"
                product "HSV200"
                path_grouping_policy group_by_prio
                getuid_callout "/lib/udev/scsi_id -g -u /dev/%n"
                path_checker directio
                path_selector "round-robin 0"
                prio alua
                rr_weight uniform
                failback immediate
                hardware_handler "0"
                no_path_retry 12
                rr_min_io 100
       }
}
Podemos reiniciar el servidor o utilizar la utilidad rescan-scsi-bus para encontrar dispositivos y que los agrege al sistema. También debemos utilizar está utilidad si presentamos más discos virtuales desde la EVA al servidor.
Cuando "despresentamos" discos virtuales se pueden utilizar con la opción -r pero por mis pruebas el resultado no siempre es bueno y requiere reiniciar el servidor.

Con el siguiente comando comprobamos el estado del multipath:
# multipath -ll
mpath2 (3600508b40006c54300011000003f0000) dm-2 HP,HSV200
size=57G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| |- 6:0:0:1 sdm 8:192 active ready running
| `- 5:0:0:1 sdc 8:32 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 5:0:1:1 sdf 8:80 active ready running
`- 6:0:1:1 sdp 8:240 active ready running
mpath8 (3600508b40006c5430001100000520000) dm-0 HP,HSV200
size=100G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| |- 5:0:1:3 sdh 8:112 active ready running
| `- 6:0:1:3 sdr 65:16 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 6:0:0:3 sdo 8:224 active ready running
`- 5:0:0:3 sde 8:64 active ready running
mpath7 (36006048c0b49c13af746348067dac3bb) dm-7 EMC,Celerra
size=1.0T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 7:0:0:1 sdl 8:176 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 8:0:0:1 sdk 8:160 active undef running
mpath6 (36006048c33fbd15cdb351637f9c6ab26) dm-5 EMC,Celerra
size=1.0T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 10:0:0:1 sdi 8:128 active undef running
`-+- policy='round-robin 0' prio=1 status=active
`- 9:0:0:1 sdj 8:144 active ready running
mpath5 (3600508b40006c54300011000004c0000) dm-1 HP,HSV200
size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| |- 6:0:0:2 sdn 8:208 active ready running
| `- 5:0:0:2 sdd 8:48 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 5:0:1:2 sdg 8:96 active ready running
`- 6:0:1:2 sdq 65:0 active ready running
Como podéis ver hay otra cabina que dará para otro artículo, de momento no le hacemos caso.
Vemos el estado de los caminos posibles a cada disco y que todos están activos, sin encontrásemos alguno en fallo deberíamos revisar el hardware. (Os recomiendo revisar primero los latiguillos de fibra y comprobar los leds de las tarjetas para ver si alguno está apagada).

Listamos los discos y particiones:


# ll /dev/mapper/
crw------- 1 root root 10, 236 2012-05-14 15:35 control
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath2 -> ../dm-2
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath2-part1 -> ../dm-3
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath5 -> ../dm-1
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath5-part1 -> ../dm-6
lrwxrwxrwx 1 root root       7 2012-05-16 15:55 mpath6 -> ../dm-5
lrwxrwxrwx 1 root root       8 2012-05-16 15:55 mpath6-part1 -> ../dm-11
lrwxrwxrwx 1 root root       7 2012-05-16 15:54 mpath7 -> ../dm-7
lrwxrwxrwx 1 root root       7 2012-05-16 15:54 mpath7-part1 -> ../dm-8
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath8 -> ../dm-0
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath8-part1 -> ../dm-4
Aquí ya vemos particiones pero si es un disco nuevo utilizamos fdisk sobre, por ejemplo, /dev/mapper/mpath2 y generamos una partición /dev/mapper/mpath2-part1
Después creamos el sistema de ficheros y ya podemos motarla he incluirla en el /etc/fstab. Os recomiendo utilizar los UUID de los discos desde el fstab, para averiguarlos:
# ll /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 0059c482-d8b9-4d88-8d98-f15b71318077 -> ../../md3
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 056f57cb-1b77-4df5-a023-1f20c41c21e7 -> ../../md4
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 13776bb7-2242-4068-a41f-e919baff3a86 -> ../../dm-4
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 156c04a8-199e-41f5-b974-3ba3a4b5e635 -> ../../sdb7
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 2c0bdeca-617e-4e3a-b31a-31442ac63ff7 -> ../../md2
lrwxrwxrwx 1 root root 11 2012-05-17 02:07 2df684f9-1798-4e21-960b-304933b46637 -> ../../dm-11
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 3b9a2cb0-32c3-4be9-a787-340e106041d5 -> ../../dm-3
lrwxrwxrwx 1 root root 10 2012-05-17 02:07 465081f7-2591-4456-a972-847d813e4d0c -> ../../dm-8
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 510ed901-d0a3-4585-b594-002d9a78b61b -> ../../dm-6
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 57bc797f-74f8-467e-9145-200cdcafe180 -> ../../sda7
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 7c6e736b-9f82-4107-b127-62831384d9ce -> ../../md1
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 a04ca2ee-97fc-4644-8dd3-3184fead0f2c -> ../../md0

Como podemos ver aquí tenemos montados nuestros sistemas de ficheros:

# mount
/dev/md0 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/md4 on /tmp type ext3 (rw)
/dev/md1 on /boot type ext3 (rw)
/dev/mapper/mpath2-part1 on /media/admine type ext3 (rw,acl,user_xattr,errors=remount-ro)
/dev/mapper/mpath5-part1 on /media/faxing type ext3 (rw,acl,user_xattr,errors=remount-ro)
/dev/mapper/mpath6-part1 on /media/backup type ext4 (rw,acl,user_xattr,errors=remount-ro)/dev/mapper/mpath8-part1 on /media/F type ext4 (rw,acl,user_xattr,usrquota,errors=remount-ro)
/dev/md2 on /var type ext3 (rw)
/dev/md3 on /home type ext3 (rw)
Si después queréis utilizar acceso concurrente desde dos servidores ocfs2 funciona muy bien.

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.


martes, 8 de mayo de 2012

dfc: Display File System Space

La utilidad dfc es una alternativa al comando estándar df.
Ambos comandos muestran el espacio de disco disponible de un sistema pero dfc lo hace más amigable:

Salida estándar de df:



De una forma un poco más amigable:



El comando dfc lo muestra de este modo visualmente más informativo:



Incluye colores que informan de la cantidad de espacio libre, y una barra mostrando gráficamente la ocupación de la partición. Además incluye por defecto la opción human-readable del comando df.

Para instalar dfc en ubuntu (también en debian):
# wget http://ftp.es.debian.org/debian/pool/main/d/dfc/dfc_2.5.0-1_i386.deb
# dpkg -i dfc_2.5.0-1_i386.deb

Para versiones de 64 bits podéis encontrar el paquete necesario en los repositorios de debian: http://packages.debian.org/wheezy/dfc

Más información:
http://www.linux-magazine.com/Online/Blogs/Productivity-Sauce/Display-File-System-Space-Usage-with-dfc