Pues eso, una entrada rápida para dejar registro del calvario que supone, en ocasiones, actualizar a una versión nueva y radiante de Ubuntu. El asunto: un servidor con LMS deja de funcionar al actualizar a Ubuntu 22.04, así, sin más.
Algún día daré cuenta de cómo es eso de instalar un sistema de audio distribuido por toda la casa con software libre y hardware casero. Algo a la altura de los carísimos sistemas propietarios de varias marcas de prestigio pero al alcance de cualquier bolsillo modesto. Una auténtica gozada. Y prácticamente gratis. Envidia, ¿¿eh??
Pero ahora vamos al lío. Lo primero es recabar un poco de información.
1.- Lo primero, ojear el estado del servicio logitechmediaserver. Al parecer no se está ejecutando y cada vez que lo arranco muere inmediatamente:
$sudo systemctl status logitechmediaserver
○ logitechmediaserver.service - Logitech Media Server
Loaded: loaded (/lib/systemd/system/logitechmediaserver.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2022-05-11 00:47:56 CEST; 1s ago
Process: 113300 ExecStart=/usr/sbin/squeezeboxserver --prefsdir $PREFSDIR --logdir $LOGDIR --cachedir $CACHEDIR --charset $CHARS>
Main PID: 113300 (code=exited, status=0/SUCCESS)
CPU: 450ms
May 11 00:47:56 blackstone squeezeboxserver[113300]: If you're running some unsupported Linux/Unix platform, please use the buildme.>
May 11 00:47:56 blackstone squeezeboxserver[113300]: script located here:
May 11 00:47:56 blackstone squeezeboxserver[113300]: https://github.com/Logitech/slimserver-vendor/tree/public/8.2/CPAN
May 11 00:47:56 blackstone squeezeboxserver[113300]: If 8.2 is outdated by the time you read this, Replace "8.2" with the major vers>
May 11 00:47:56 blackstone squeezeboxserver[113300]: You should never need to do this if you're on Windows or Mac OSX. If the instal>
May 11 00:47:56 blackstone squeezeboxserver[113300]: don't work for you, ask for help and/or report a bug.
May 11 00:47:56 blackstone squeezeboxserver[113300]: *******
May 11 00:47:56 blackstone squeezeboxserver[113300]:
May 11 00:47:56 blackstone squeezeboxserver[113300]: Exiting..
May 11 00:47:56 blackstone systemd[1]: logitechmediaserver.service: Deactivated successfully.
2.- Para tener una idea de por qué se aborta puedo correr el servidor directamente desde el ejecutable:
$squeezeboxserver
The following modules failed to load: DBI EV XML::Parser::Expat HTML::Parser JSON::XS Digest::SHA1 YAML::XS Sub::Name
Lo que ya me está indicando un problema con la carga de los módulos de Perl el cual, por cierto, está instalado en su última versión.
3.- Veamos un poco más información sobre la versión de Perl actualmente instalada:
$perl -v
This is perl 5, version 34, subversion 0 (v5.34.0) built for x86_64-linux-gnu-thread-multi
(with 50 registered patches, see perl -V for more detail)
Copyright 1987-2021, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
Es decir, que tenemos la versión v5.34. ¿Y por qué no cargan los módulos? Pues vaya usted a saber. O mejor aún, búsquelo usted en DuckDuckGo (je, je…)
La primera idea es que la actualización a Ubuntu 22.04 haya implicado un cambio a una versión más reciente de Perl (no comprobado) y que cuando LMS se ejecuta busca los módulos correspondientes a esta versión. Pero como LMS se instaló con una versión de Perl anterior, dichos módulos, simplemente, no están. Así que lo lógico parece reinstalar LMS (y, de paso, instalar la última versión). Sin embargo, esto no parece funcionar…
Así que me fijo en los mensajes de la primera salida, que había pasado por alto, y veo que los muchachos de Logitech en realidad ya me han dejado una pista que seguir, aunque de una manera un pelín críptica. Ubuntu NO es, o al menos hasta la fecha no lo era, una plataforma no soportada para su Media Server (Por eso la primera vez ni seguí leyendo) Pero, como lo cierto es que no está funcionando, empecé a pensar que, de hecho, ahora SÍ que lo es. De modo que me puse a seguir el rastro de migas.
El enlace lleva a un repositorio de github con un software que hay que compilar para parchear la instalación del servidor. También hay un archivo de ayuda (README.md) con unas austeras indicaciones de qué hacer con este software. Así que cloné el repositorio, lo compilé con el script proporcionado (buildme.sh) y realicé la copia de las dos carpetas generadas a la ruta donde squeezeboxserver está instalado, tal como indican las instrucciones. Por cierto, que me costó un poco encontrar la dichosa ruta, así que la dejo anotada aquí:
$cd /usr/share/squeezeboxserver/CPAN/arch/
Curioseando en esta carpeta compruebo, para mi sorpresa, que hay compilaciones instaladas automáticamente con cada una de las versiones anteriores, pero ninguna para la actual versión de Perl, la 5.34. Es decir, que cada instalador ha generado su carpeta con sus módulos salvo la última ¿Y eso por qué? Efectivamente, algo aquí no está funcionando bien. Y, efectivamente, una vez compilado el software y copiado a la ruta en cuestión, mi querido Logitech Media Server vuelve a funcionar. Eso sí, queda sin explicar por qué ya no se incluyen automáticamente estos módulos durante la instalación, si es que los de Logitech han decidido dejar de dar soporte a Ubuntu, si tiene que ver con la versión de Perl o qué, por lo que no sabemos qué pasará cando haya nuevas actualizaciones. Como siempre, cruzaremos ese puente cuando lleguemos a él. Y si eso… ya lo comentaremos.