Instalar Skype en debian multiarquitectura

Skype

Si, lo sé, los títulos empiezan a rayar lo imposible pero prometo estarme tranquilo una temporada.

Una de las partes, a mi juicio, más interesantes del anuncio de la liberación de Debian GNU/Linux 7, «wheezy», es la inclusión oficial de la multiarquitectura. La posibilidad de instalar un software hecho a medida para una determinada arquitectura en otra y sin que esto suponga un quebradero de cabeza (como venía siendo últimamente), es un avance enorme. Hace algún tiempo publiqué una entrada dedicada a este tema, Entendiendo la multiarquitectura en Debian GNU/Linux con Citrix y ya en la primera línea dejaba claro que el cliente ICA es para un entorno corporativo y que la verdadera prueba de fuego sería Skype. Bien, pues ha llegado el día de las pruebas.

Han coincidido varios factores. Por un lado, la última actualización ya estaba pidiendo la desinstalación de la librería ia32-libs; hace dos días se liberó wheezy con este tema presente en todas las notas, avisos y comentarios; y, además, hoy estoy de ese humor en que el cuerpo te pide riesgos.

Pero volvamos al tema. Lo primero de todo es hacer una pequeña actualización y limpieza del sistema antes de empezar:

diego@denox:~$ sudo aptitude update
diego@denox:~$ sudo aptitude full-upgrade

Probablemente, desinstalará varios paquetes, entre ellos la mencionada ia32-libs y todas sus dependencias. Nada de lágrimas, eso es lo que perseguimos. A continuación, añadimos la segunda arquitectura a dpkg, en mi caso, i386:

diego@denox:~$ sudo dpkg --add-architecture i386

El resto es sencillo. Podría usar dpkg para comprobar las dependencias pero ya he dicho que hoy estoy guerrero, así que instalo directamente skype (bajado de la web oficial):


diego@denox:~$ sudo dpkg -i skype-debian_4.1.0.20-1_i386.deb
Seleccionando el paquete skype previamente no seleccionado.
(Leyendo la base de datos ... 126982 ficheros o directorios instalados actualmente.)
Desempaquetando skype (de skype-debian_4.1.0.20-1_i386.deb) ...
dpkg: problemas de dependencias impiden la configuración de skype:
skype depende de libqtwebkit4 (>= 2.1.0~2011week13).

dpkg: error al procesar skype (--install):
problemas de dependencias - se deja sin configurar
Procesando disparadores para mime-support ...
Procesando disparadores para gnome-menus ...
Procesando disparadores para desktop-file-utils ...
Se encontraron errores al procesar:
skype

Nos comenta que depende de libqtwebkit4 y, al tratar de instalar dicha librería sin indicar la arquitectura, nos corrije:

diego@denox:~$ sudo aptitude install libqtwebkit4
Se configurarán los siguientes paquetes que están ahora parcialmente instalados:
skype:i386{b}
No se instalará, actualizará o eliminará ningún paquete.
0 paquetes actualizados, 0 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 0 B de ficheros. Después de desempaquetar se usarán 0 B.
No se satisfacen las dependencias de los siguientes paquetes:
skype:i386 : Depende: libqtwebkit4:i386 (>= 2.1.0~2011week13) pero no será instalado.
Las acciones siguientes resolverán estas dependencias

Eliminar los paquetes siguientes:
1) skype:i386

¿Acepta esta solución? [Y/n/q/?]

Hace incapié varias veces en que tanto skype como la librería de la que depende están disponibles para la arquitectura i386, únicamente. Así pues, sólo tenemos que complacer al dpkg, indicándole la arquitectura deseada:

diego@denox:~$ sudo aptitude install libqtwebkit4:i386
Se instalarán los siguiente paquetes NUEVOS:
libgstreamer-plugins-base0.10-0:i386{a} libgstreamer0.10-0:i386{a} liborc-0.4-0:i386{a} libqtwebkit4:i386
Se configurarán los siguientes paquetes que están ahora parcialmente instalados:
skype:i386
0 paquetes actualizados, 4 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 8.876 kB de ficheros. Después de desempaquetar se usarán 32,5 MB.
¿Quiere continuar? [Y/n/?]

Y pensar que tenía cierto reparo y hasta miedo…

Debian 7.0 “Wheezy” ya está con nosotros -;)

Y nosotros con ellos, con vosotros… Después de un largo tiempo de desarrollo, la versión 7 de Debian ya es una realidad. Tal y como leemos en el anuncio de la release:

12800 paquetes nuevos, para un total de más de 37493 paquetes, GNOME 3.4, KDE 4.8.4, Xfce 4.8, y LXDE”.

Esta nueva versión de Debian incluye varias funcionalidades interesantes, como, por ejemplo, el soporte multiarquitectura, varias herramientas específicas para desplegar infraestructura de nube privada, un instalador mejorado, y un completo conjunto de códecs y reproductores multimedia que eliminan la necesidad de utilizar repositorios de terceros.

El soporte multiarquitectura, uno de los principales objetivos para Wheezy, permitirá a los usuarios de Debian instalar paquetes para múltiples arquitecturas en la misma máquina. Esto significa que ya es posible, por primera vez, instalar software para 32 bits y 64 bits en el mismo sistema y tener todas las dependencias relevantes resueltas automáticamente.

El proceso de instalación se ha mejorado mucho: ahora se puede instalar Debian usando software de síntesis de voz, por ejemplo para personas con discapacidad visual que no usan un dispositivo Braille. Gracias al esfuerzo combinado de un gran número de traductores el sistema de instalación está disponible en 73 idiomas, y en más de una docena de ellos también se pueden utilizar con el software de síntesis de voz.

Además, por primera vez, Debian soporta la instalación y arranque usando UEFI para PCs nuevos de 64 bits (amd64), aunque aún no hay soporte para arranque seguro

Por cierto, ojo al cambio con los ficheros temporales:

En publicaciones anteriores, se montaban sistemas de ficheros temporales (tmpfs) en /lib/init/rw, /dev/shm/ y opcionalmente en /var/lock y /var/run. Se ha eliminado /lib/init/rw, y los otros sistemas de ficheros se han movido bajo /run. /var/run y /var/lock según la configuración de RAMRUN y RAMLOCK en /etc/default/rcS. Todos estos sistemas de ficheros tmpfs son configurables ahora a través de /etc/default/tmpfs; la configuración anterior no se migra de forma automática.

Como veis, el esfuerzo ha sido grande y es fruto del trabajo de una comunidad orgullosa de colaborar con Debian, activa y generosa. Para los que en nuestro día a día estamos con versiones de desarrollo (Testing o Sid), quizás en nuestros escritorios no veamos estos cambios de una forma tan plausible, pero en los servidores el cambio no es menor.

Debian 7 Wheezy

Sólo hay que ver la lista de paquetes nuevos para darse cuenta. La guía de instalación es muy completa y en este caso, el proceso de actualización de Debian 6 a 7, es un poco más delicado que cuando migramos de Lenny a Squeeze, pero a falta de ponerme a migrar alguno en producción, las instrucciones para hacerlo son claras y ahí se citan posibles problemas más de escritorio que de servers, pero si te puedes fiar de alguien a la hora de actualizar un servidor, pon a Debian muy arriba en la lista ;-;).

Eso sí, no olvides que el fin de soporte para Debian 6 es en julio, aunque como pasó con otras releases, entraron actualizaciones de seguridad pasado el plazo. Fuente e imagen.

Para los SysAdmins, nuevas versiones en Debian 7. Apache 2.2.22, BIND 9.8, lighttpd 1.4.31, MySQL 5.5, PHP 5.4, OpenSSH 6.0, PostgreSQL 9.1, Python 2.7 / 3.2.

fin de soporte Debian 6 Squeeze y ciclo de vida de Debian 7

Así que…Bienvenido Wheezy y gracias Debian por hacerlo posible !!!

Entendiendo la multiarquitectura en Debian GNU/Linux con Citrix

Me doy perfecta cuenta de que el título es, cuando menos, confuso. Y está hecho aposta, debo añadir. El motivo: que este sencillo tutorial no da para comprender la multiarquitectura que han implantado en Debian, pero un poco sí que se acerca. Además, he conseguido aplicarlo para un programa concreto y muy orientado al mundo empresarial, el cliente Citrix pero me falta el que considero el caballo de batalla del ambiente doméstico, Skype.

Quien quiera ampliar sus conocimientos sobre la multiarquitectura, en el wiki de Debian tiene la mejor de las guías.

Este cambio de arquitectura ha venido propiciado porque he jubilado a mi vieja estación de trabajo (¡gracias por todo! No vuelvas ;) ) y me han dado otro ordenador, más moderno, con un procesador de 64 bits. Por supuesto, he instalado Debian para 64 bits (amd64), configurado y actualizado todo desde cero, como corresponde. Con algunos programas tuve más lío (firefox+flash+java), simplemente por no recordar que había cambiado de arquitectura pero, una vez unificados criterios, todo funcionó como se esperaba.

Hasta llegar al cliente ICA.

No me extiendo más. Como es de suponer, se parte con un equipo actualizado correctamente (en mi caso, con sid), sin paquetes atascados ni cosas raras.

Lo primero es añadir la segunda arquitectura a dpkg y actualizar la base de datos de paquetes.

$ sudo dpkg --add-architecture i386
$ sudo aptitude update

Después instalamos la dependencia más peliaguda de Citrix, ia32-libs. Ahora nos tiene que dejar, sin más. Como estos paquetes sólo están disponibles para una arquitectura, no hay que especificar nada.

$ sudo aptitude install ia32-libs ia32-libs-gtk ia32-libs-gtk-i386 ia32-libs-i386

Seguimos instalando dependencias.

$ sudo aptitude install libmotif4:i386

En esta ocasión hay que especificar la arquitectura para que no instale la de amd64, que sería la opción por defecto. En caso de que esto suceda, la ejecución del programa dará el siguiente error:

/opt/Citrix/ICAClient/wfcmgr: error while loading shared libraries: libXm.so.4: wrong ELF class: ELFCLASS64

Y, por último, instalamos nspluginwrapper para 64 bits. Al igual que con que libmotfi4, la instalación de la arquitectura incorrecta se traduciría en un bonito error. Este paquete, además, he tenido que bajarlo directamente de la web de Debian porque sólo está disponible para squeeze.

$ sudo dpkg -i ./nspluginwrapper_1.3.0-1_amd64.deb

Cumplidas las dependencias (¡por fin!), ya podemos instalar el paquete oficial de Citrix para 64 bits, sin que reviente por algún sitio:

$ sudo dpkg -i icaclient_12.1.0_amd64.deb

Es probable que de un error durante la instalación, con salida de error 2:

dpkg: error processing icaclient (--configure):
el subproceso instalado el script post-installation devolvió el código de salida de error 2

Si buscamos el error en el script de post-instalación, veremos que el cliente ICA, paradójicamente, no está preparado para reconocer los sistemas de esta arquitectura. Se puede obviar puesto que el software está instalado y ya funciona pero, aparecerá en todos las actualizaciones posteriores, como un error. Por eso recomiendo perder dos minutos y, siguiendo las explicaciones de la Inet Survival Guide, editar el fichero DEBIAN/postinst y comentar la línea 2670, es decir, dejarla de esta guisa:

#exit 2

Una vez compilado el paquete, se instala de nuevo, la salida será limpia esta vez.

En este punto, sólo queda iniciar synapse y buscar Citrix Receiver , paladeando el momento.

[truco] Conexiones ssh a través de un proxy

Logo Debian Hackers Short

En algunas ocasiones, simplemente, necesitamos establecer conexiones remotas (y seguras), a pesar de todas las trabas que nos puedan poner. Es entonces cuando ssh brilla con fuerza.

Imaginemos: tu trabajo se desarrolla en una red local fuertemente protegida por proxys y firewalls del tamaño de una lavadora industrial. Sólo algunas conexiones, las más típicas, consiguen salir de esta LAN y adentrarse en la red y, por supuesto, aquellas que parten o llegan al puerto 22 son sistemáticamente descartadas, evitando que puedas conectarte a tu servidor de casa.

Si seguimos echando la mente a volar, hay una solución sencilla y fácil para sortear el proxy y salir al exterior. Pero, como todo lo bueno, tiene condiciones y es que, supongo que será gracias al firewall, es áltamente recomendable que el puerto donde escucha ssh tu servidor casero sea el 443 o el 8080. Es decir, que utilices un puerto reconocible y, lo más importante, que pueda traspasar el proxy sin problemas.

En el equipo que está situado dentro de la red local, instalamos un paquete que nos permita crear túneles con el proxy.

sudo aptitude install connect-proxy

A continuación y también en ese equipo, editamos el fichero ~/.ssh/config y añadimos estas líneas:

# Conexiones hacia fuera de la red local
Host server.n1mh.org
ProxyCommand connect -H user@proxy:8080 %h 8080
# Conexiones dentro de la red local (no usa proxy)
Host *
ProxyCommand connect %h %p

Por supuesto, de las dos primeras se pueden añadir tantas como sea necesario. Esta configuración dice que, para las conexiones a server.n1mh.org, ssh debe usar el argumento ProxyCommand y establecer un túnel con esos parámetros: -H especifica que proxy usaremos, pasando el usuario, servidor y puerto, respectivamente; %h es el servidor al que queremos conectarnos, está definido en la primera línea y necesita saber el puerto, que en este caso es 8080.

Tras esta mínima configuración, sólo tenemos que lanzar la conexión, como siempre hemos hecho:

diego@workaholic$ ssh diego@server.n1mh.org

Y ya estaremos en casa… porque no hay nada como el hogar.