sábado, 21 de julio de 2012

Solución del problema con glibc al actualizar Arch Linux

Esta entrada va dirigida a usuarios de Arch Linux, una gran distro que la semana pasada sufrió un cambio que puede haber traído de cabeza a más de uno, y de dos. Si habéis actualizado el sistema es posible que sepáis a lo que me refiero (no tiene por qué afectar a todos).

La cuestión es que tal y como se anunció tanto en la web como en listas de correo y redes sociales, todos los paquetes que tenían ficheros en /lib ahora los tendrán en usr/lib, quedando /lib como un enlace simbólico a /usr/lib. Si habéis intentado actualizar con nuestro querido sudo pacman -Syu quizás os hayáis encontrado con una sorpresita:

error: error al realizar la transacción (archivos en conflicto)
glibc: /lib existe en el sistema de archivos
Ocurrieron errores, no se actualizaron paquetes

Esto os habrá ocurrido si tenéis paquetes instalados que tienen ficheros en /lib, sin tener en cuenta a glibc. Algo muy importante que tenéis que saber y de lo que advierten en la web de Arch:
Ni se os ocurra utilizar --force para actualizar. Básicamente os podéis cargar el sistema.
Para poder actualizar y corregir el problema haremos lo siguiente:

sudo pacman -Syu --ignore glibc
sudo pacman -Su

Con esto es posible que hayáis podido solucionar el problema y vuestro sistema ya se haya actualizado correctamente, sin embargo puede ser que os ocurra como a mí y al hacer el sudo pacman -Su os encontréis con que el problema persiste. De ser así significa que tenéis ficheros en /lib que no pertenecen al paquete glibc. Con este comando podremos ver qué paquetes tienen fichero en /lib y cuáles son estos ficheros, sin tener en cuenta a glibc:

grep '^lib/' /var/lib/pacman/local/*/files | grep -v glibc
Estos paquetes deberían ser actualizados una vez actualizado glibc, con lo que una solución sería desinstalarlos, lo que podría corregir el problema, y una vez actualizado glibc con sudo pacman -Su, volverlos a instalar.

Puede ocurrir que habiendo hecho esto, o también en el caso de que el comando anterior no nos dé ningún paquete, el problema siga. Esto se debería a que existen ficheros en /lib que no pertenecen a ningún paquete. Podemos verlos con el comando:

find /lib -exec pacman -Qo -- {} +
Estos ficheros podemos borrarlos o moverlos a /usr/lib, y en caso de tener directorios dentro de /lib que estén provocando el problema, deberíamos eliminarlos. Ojo, este caso concreto no me ha ocurrido a mí, os comento lo que he leído al respecto, por lo que antes de borrar nada investigad un poco.

En la mayoría de los casos con todo esto debería solucionarse el problema, sin embargo el mío no estaba entre ellos, ya que tenía instalado el paquete lib32-glibc, que tenía un fichero en /lib. Este paquete pertenece al repositorio multilib, el cual tenía deshabilitado desde hace tiempo. Lo volví a habilitar en /etc/pacman.conf y seguidamente lancé otro sudo pacman -Syu --ignore glibc, lo que actualizó dicho paquete. Esto terminó de solucionar el problema en mi caso y el siguiente sudo pacman -Su funcionó sin problemas.

Si queréis algo más de información o vuestro problema al actualizar ha sido distinto, también podéis consultar el artículo al respecto en la wiki.


sábado, 14 de julio de 2012

Solución al problema de JDownloader en Linux Mint 13 + Cinnamon en su versión 32 bits

Tengo esto un poco abandonado, voy a intentar darle algo de vidilla. Estos días he estado probando un poco Linux Mint 13, en su versión de 32 bits con Cinnamon, y la verdad es que por lo general bastante bien, sin embargo me he encontrado con un problemilla que seguramente traerá de cabeza a más de uno.

Supongo que muchos de vosotros usáis JDownloader para las descargas, aunque últimamente resulte más sencillo y rápido en muchos casos usar torrents. Los que uséis la misma versión de Linux Mint que he estado probando y os instaléis JDownloader os encontraréis con una desagradable sorpresa... no funciona. Es más, te cuelga el sistema, así como el que no quiere la cosa.

El problema parece que está en que Linux Mint usa openJDK por defecto, que no se lleva muy bien con ciertos complementos de JDownloader y peta. Si buscáis Sun Java 6 en los repositorios no lo encontraréis, ya que Linux Mint, al igual que Ubuntu, lo ha eliminado de los repositorios oficiales. En la web hay distintas alternativas para solucionar este problema o para instalar Sun Java 6. Yo optaré por la típica de los sistemas basados en Debian: añadir repositorios, apt-get y tira para adelante.

Nos abrimos un terminal y añadimos el repositorio directamente al sources.list:

sudo nano /etc/apt/sources.list
Añadimos una línea más al fichero:

deb http://ftp.es.debian.org/debian stable non-free

Con Ctrl-X cerramos y guardamos los cambios, ahora toca actualizar la información de los repositorios:

sudo apt-get update
Nos dará un error de verificación de firmas, pero no os preocupéis, ya que este repositorio recién añadido sólo lo usaremos para instalar Java 6, después lo quitaremos. JDownloader os funcionará simplemente instalando el paquete sun-java6-jre, aunque si queréis podemos hacer la gracia completa e instalamos todo:

sudo apt-get install sun-java6-jre sun-java6-jdk sun-java6-fonts sun-java6-plugin

Para que el sistema use este Java por defecto haremos:

sudo update-java-alternatives -s java-6-sun

Por último eliminamos el nuevo repositorio de nuestro sources.list, volviendo a ejecutar después un sudo apt-get update. Con todo esto ya debería funcionaros el JDownloader, o no... o algo.