Las distros para usuarios con ciertos conocimientos tienen estas cosas, que de cuando en cuando se precisa intervenir antes de una actualización para que el sistema no se vuelva inestable o, directamente, inutilizable. Como suele ocurrir con Chakra, la falta de una, digamos, portavocía en castellano hace que muchos usuarios se alarmen ante un aviso como el que nos ocupa por no entender del todo en qué consiste. Callen las alarmas, que aquí estamos para traducirlo y explicarlo. Veremos, no obstante, que el proceso no es tan sencillo y no está exento de riesgos para nuestro sistema. Es lo que hay…
Atención – Intervención manual necesaria en la próxima actualización masiva
Este anuncio es para informar a los usuarios de Chakra de todos los cambios que vienen con el paso al repositorio estable de un grupo enorme de paquetes. ¡Por favor, tengan en cuenta que para poder realizar esta actualización se necesita una intervención manual!
El cambio más importante en esta actualización se debe a la implementación de la fusión de los directorios /usr en Chakra. La razón para esta fusión se puede consultar en esta discusión (en inglés), que en pocas palabras se explica como una implementación necesaria para mejorar la compatibilidad con el desarrollo «upstream».
Los paquetes que incluyen estos cambios van a llegar al repositorio estable en los próximos días. Se va a lanzar una segunda ISO de la serie Euler al mismo tiempo, para que los usuarios que hagan una nueva instalación no tengan que realizar el proceso y aquellos que lo encuentren complicado puedan realizar una instalación limpia desde cero.
Por desgracia, esta actualización no se puede realizar de forma automática, de modo que para actualizar su sistema deberá seguir cuidadosamente la guía de la wiki, paso por paso. Si tiene alguna pregunta relacionada con esto o necesita ayuda, por favor, pídala en el hilo correspondiente del foro.
Estos son los directorios que cambiarán tras la actualización:
- /bin pasa a /usr/bin
- /sbin pasa a /usr/sbin
- /lib pasa a /usr/lib
- /lib64 pasa a /usr/lib
- /usr/lib64 pasa /usr/lib
Además, la actualización incluye los siguientes cambios notables:
- Plataforma y aplicaciones KDE 4.14.2 y kde-workspace 4.11.13. El objetivo de esta actualización de KDE es la corrección de errores, habiendo resuelto más de 35. Para más información acerca de este lanzamiento pueden leer el anuncio oficial.
- Kernel de Linux 3.16.4
- nvidia 343.22
- Disponible un paquete nvidia-340xx
- gcc 4.9.1
- Libreoffice 4.3.2
Como siempre, asegúrese de que su repositorio de elección está completamente sincronizado antes de realizar la actualización. Para comprobarlo, ejecute mirror-check en Konsole o use la utilidad Mirror-Check, que se encuentra en el apartado «Internet» del menú de aplicaciones.
Hasta aquí el anuncio oficial publicado en inglés por Neophytos Kolokotronis en la web de Chakra.
El problema es que la página de la wiki a la que hace referencia está, igualmente, en inglés. Dada la importancia capital del asunto, vamos a reproducir aquí los pasos a seguir durante la próxima actualización para que nuestro sistema siga tan perfecto como suele:
Actualización de Chakra para la unificación del directorio /usr
Paso 1: verificar si es necesario actualizar ya
En la actualización se incluye linux-3.16.4-1 y glibc-2.20-1. Si hacemos:
pacman -Si linux
y
pacman -Si glibc
y en la información obtenida vemos otras versiones inferiores a las señaladas arriba, eso significa que nuestro repositorio todavía no está sincronizado y no contiene los paquetes de la nueva actualización. Es decir, aún no sería el momento de actualizar.
En caso afirmativo hay una cosa muy importante a tener en cuenta: una vez iniciado el proceso hay que terminarlo por completo, o el sistema no podrá arrancar. De igual modo, no se debe, bajo ningún concepto, forzar la actualización con el parámetro –force.
Paso 2: preparar la actualización
En lugar de hacer, como solemos, «sudo» para actualizar con pacman, dadas las características un tanto especiales de esta actualización vamos a «loguearnos» como root, haciendo:
su
e introduciendo nuestra contraseña. Luego ya podemos continuar. Si hiciéramos en este momento un «pacman -Syu», la consola, con toda probabilidad, nos arrojaría mensajes sobre conflictos con /bin, /sbin, /lib, /lib64 y /usr/lib64. De modo que tenemos que hacer algunas cosillas antes.
Paso 3: borrar archivos no necesarios
Tenemos que eliminar, por un lado, archivos en los directorios conflictivos que no pertenecen a ningún paquete. La lista se obtiene así:
find /lib /lib64 /usr/lib64 /bin /sbin -exec pacman -Qoq -- {} + > /dev/null
El resultado más probable es algún error relacionado con la no existencia de algún archivo, o bien una salida vacía (como en mi caso). También pueden aparecer aquí ficheros de virtualbox relacionados con el kernel. Si obtenemos mensajes del tipo «error: no package owns [archivo]», dicho fichero se puede eliminar.
Y, por otro lado, los archivos en dichos directorios que pertenecen a algunos paquetes no oficiales (mayoritariamente de CCR, o compilados por el propio usuario). En este caso, se averiguan:
pacman -Qqo /bin /sbin /lib /lib64 /usr/lib64 | pacman -Qm -
Aquí también puede aparecer el error de no existencia de /usr/lib64. Podemos entonces obviarlo y hacer:
pacman -Qqo /bin /sbin /lib /lib64 | pacman -Qm -
que, en mi caso, da como resultado una línea vacía. Si no es vuestro caso, debéis borrar dichos paquetes y volverlos a instalar después de la actualización. Para borrar, como siempre:
pacman -R paquete en cuestión
Paso 4: actualización
Es estrictamente necesario seguir los pasos siguientes en orden y de un modo continuado, esto es, sin que medie un reinicio, un cierre de la terminal o un «logout». De lo contrario, adiós Chakra. Si estás en un portátil, muy importante recordar hacerlo con la fuente de alimentación conectada a la corriente. SÍ, ASÍ DE SERIA ES LA COSA.
Si no estamos como root, hacemos «su» o «sudo su», tanto monta, monta tanto, para «loguearnos» como super-usuario. Y allá vamos:
pacman -Sy
pacman -Su --ignore glibc,lib32-gcc-libs,filesystem,bash
pacman -Su --ignore filesystem,bash
pacman -Su --ignore filesystem
pacman -Su
Los mensajes que aparezcan del tipo «dependencias no resolubles» («unresolvable dependencies») deben ser contestados con un Sí o Yes.
Aunque también se actualizará el kernel, depmod y mkinitcpio van a arrojar algunos errores por no estar los enlaces simbólicos aún apuntando al lugar correcto. Es seguro ignorar estos errores, PERO NO REINICIES EL SISTEMA ya que el kernel no va a funcionar todavía. Si durante la última operación de actualización pacman arroja errores por conflicto de archivos significaría que todavía quedan ficheros en /lib que eliminar, por lo que deberías volver al paso 3.
Paso 5: vamos acabando
Uff, esto se está haciendo largo. Nos queda comprobar que nada queda en /lib, con:
ls -l /lib*
lo cual debe arrojar algo como esto, con la fecha y hora variable en cada sistema:
lrwxrwxrwx 1 root root 7 Sep 15 16:53 /lib -> usr/lib lrwxrwxrwx 1 root root 7 Sep 15 16:53 /lib64 -> usr/lib
Solo resta reconstruir la imagen del kernel, reinstalando el paquete:
pacman -S linux
ó bien, si usas el kernel de soporte extendido:
pacman -S linux-lts
En esta oportunidad, no habrá mensajes de error de depmod. Y ya, ahora sí que sí, podemos reiniciar el sistema y respirar profundamente. Como en esta actualización también se incluye un nuevo Grub, para evitarnos males mayores conviene reinstalarlo también con:
grub-install /dev/sdX (donde X es la unidad donde tenemos el Grub, generalmente la a)
update-grub
Y listo. Veamos ahora soluciones a los posibles errores.
Error 1: no usar «root» para actualizar
Si se nos ha pasado hacer todo el proceso anterior como super-usuario, y hemos empleado sudo en su lugar, puede que tengamos problemas tras actualizar el paquete bash. En la wiki aconsejan hacer:
sudo -s /usr/bin/bash -
Error 2: olvidarse de reconstruir el kernel tras actualizar
Mira que lo advertimos, pero aún así, si se te ha pasado… no vas a poder entrar a tu sistema. Debes localizar el disco de Chakra y entrar al entorno en vivo. Desde allí, con Konsole por ejemplo, pasa a ser super-usuario con:
su
La contraseña es root. Ahora deberás montar tu partición con Chakra y hacer «chroot» para reconstruir la imagen del kernel. Siendo X la partición de Chakra:
mkdir /chakra_root mount /dev/sdX /chakra_root mount -o bind /dev /chakra_root/dev mount -o bind /tmp /chakra_root/tmp mount -o bind /sys /chakra_root/sys mount -o bind /proc /chakra_root/proc
Si usas un partición separada para /boot, también deberás montarla, aunque no es el caso habitual en usuarios menos avanzados. Finalmente hacemos:
chroot /chakra_root
Y ya estamos dentro de nuestra partición raíz. Solo queda reconstruir la imagen del kernel, como indicamos más arriba, instalando bien el paquete linux o el linux-lts.
Pues… ¡ya está! ¿A que ha sido fácil? Por las «quejilas«, que decimos por mi tierra… Es por cosillas como esta que vemos hoy que Chakra no es, ni jamás podrá ser, apta para usuarios noveles. Lo escribo como lo siento después de pegarme una mañana entera tratando de ayudar a los usuarios no angloparlantes de la distro. Espero, al menos, que llegado el día «D» de la actualización, no tengamos crujir de dientes y llantos a mansalva. Yo más no puedo hacer, que haya suerte.
Salud
P.D.: si llevas tiempo pensando en hacer una nueva instalación de Chakra, el momento ha llegado. Espera a que salga la nueva ISO de Euler (la que ya contiene la actualización dichosa) y ahórrate todo este suplicio.