Header Ads

idn2: Relocation Error

Recientemente se ha desatado un problema grave en Ubuntu y derivados relacionado con las bibliotecas compartidas. Tras una actualización de este sistema operativo se ha reportado que muchos sistemas dejan de funcionar y todo se vuelve un caos (las aplicaciones no abren y nada funciona como debería). 
Por ejemplo, uno de los mensajes de error en Samba:
/usr/sbin/smbd: relocation error: /usr/lib/x86_64-linux-gnu/libgnutls.so.30: symbol _idn2_punycode_decode version IDN2_0.0.0 not defined in file libidn2.so.0 with link time reference
Causa
Al momento de redacción de este post, todo apunta que el causante de este desastre es el paquete libidn2-0, encargado de "Internationalized domain names (IDNA2008/TR46)". Probablemente sea un conflicto de versiones:
/home/user/.local/share/flatpak/runtime/org.freedesktop.Platform/x86_64/18.08/3d3acbb042b32045cc9184b6b0c85a1d069164771fedb3b5857abee33f715274/files/lib/x86_64-linux-gnu/libgnutls.so.30.22.0
/snap/core/7396/usr/lib/x86_64-linux-gnu/libgnutls.so.30
/snap/core/7396/usr/lib/x86_64-linux-gnu/libgnutls.so.30.6.2
/snap/core/7713/usr/lib/x86_64-linux-gnu/libgnutls.so.30
/snap/core/7713/usr/lib/x86_64-linux-gnu/libgnutls.so.30.6.2
/usr/lib/x86_64-linux-gnu/libgnutls.so.30
/usr/lib/x86_64-linux-gnu/libgnutls.so.30.14.10
O la diferencia de versiones relacionadas con el ppa:ondrej/php de ondrej:
apt-cache policy libidn2-0
libidn2-0:
  Instalados: 2.0.4-1.1build2
  Candidato:  2.2.0-2+ubuntu18.04.1+deb.sury.org+1
  Tabla de versión:
     2.2.0-2+ubuntu18.04.1+deb.sury.org+1 500
        500 http://ppa.launchpad.net/ondrej/php/ubuntu bionic/main amd64 Packages
 *** 2.0.4-1.1build2 500
        500 http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages
        100 /var/lib/dpkg/status
Workaround
Para aquellos que tienen este problema se recomienda degradar el paquete, siguiendo las recomendaciones descritas  AQUI
En otro equipo descargue el archivo:
wget http://mirrors.kernel.org/ubuntu/pool/main/libi/libidn2/libidn2-0_2.0.4-1.1build2_amd64.deb
También sirve el paquete libidn2-0_2.0.5-1_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/libi/libidn2/libidn2-0_2.0.5-1_amd64.deb
Guárdelo en una memoria flash usb. Conéctela al equipo con problemas. Como no permitirá abrir el terminal, debe abrir el TTY con CTRL+ALT+F1 o CTRL+ALT+Fn+F1 (hasta F6), poner su usuario y contraseña. Vaya a la usb (cd /media/user etc.) y ejecute:
dpkg -i libidn2-0_2.0.4-1.1build2_amd64.deb
Pueden marcar el paquete como retenido, aunque esto no es necesario ni recomendable:
apt-mark hold libidn2-0
Finalmente reinicie y todo habrá vuelto a la normalidad.
Actualización
Afortunadamente, hoy Sep 11/2019, el bug  fue solucionado y solo afectó a los sistemas que usaban el  ppa:ondrej/php:
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
apt dist-upgrade
apt-cache policy libidn2-0
libidn2-0:
  Installed: 2.2.0-2+ubuntu18.04.1+deb.sury.org+1
  Candidate: 2.2.0-2+ubuntu18.04.1+deb.sury.org+1
  Version table:
 *** 2.2.0-2+ubuntu18.04.1+deb.sury.org+1 500
        500 http://ppa.launchpad.net/ondrej/php/ubuntu bionic/main amd64 Packages
        100 /var/lib/dpkg/status
     2.0.4-1.1build2 500
        500 http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages
Lo anterior demuestra una vez más que en cualquier sistema operativo (Linux, Windows, etc.) hay que estar 100% seguros antes de aplicar actualizaciones a equipos en producción no sea que nos llevemos una sorpresa como ésta y nuestro sistema operativo quede inservible.
Con la tecnología de Blogger.