La setmana passada em vaig decidir a actualitzar el Yunohost i passar a la versió 4, que va sortir fa alguns mesos. La idea era seguir els apunts d’en Xaloc[1] i creuar els dits molt fort perquè tot anés bé. I, no, no puc dir que haja anat com la seda (tot i que em vaig sortir, no patiu). Us explicaré la meva epopeia en tres parts:
- El problema de les dependències cícliques
- La solució de l’accés via SSH
- El misteri de Nextcloud
- Conclusions
1. El problema de les dependències cícliques
Vaig començar l’operació aplicant els passos descrits pel Xaloc. Com que fa temps que se’m va desconfigurar l’accés per ssh, vaig accedir en local i, després d’actualitzar amb apt-get
i amb aptitude
, vaig executar les següents ordres:
# yunohost tools update
# yunohost tools upgrade --system
# yunohost tools migrations migrate
I, fins ací, tot va anar bé, cap missatge d’error. Els problemes van començar després de la següent ordre (ja ens havia avisat en Xaloc que aquí era on començava de debò l’actualització i que era el punt on podien aparèixer els problemes):
# yunohost tools migrations migrate --accept-disclaimer
L’execució es va aturar i em va donar un espaventós missatge d’error amb tota una llista de paquets que no havia pogut actualitzar i unes indicacions que, de primer, no em deien gran cosa:
Després d’un parell d’intents infructuosos, em vaig fixar en les darreres línies i vaig veure que feien referència a uns logs; vaig executar les ordres suggerides per accedir-hi:
# yunohost log display 20200504-205424-letsencrypt_cert_install-ggrappa.nohost.me --share
# yunohost log display 20210113-094613-tools_upgrade --share
Que, respectivament, em van crear els enllaços a sengles logs que vaig llegir amb atenció:
L’únic que hi vaig entendre és que hi havia un problema de dependències i no es podien instal·lar alguns paquets perquè mancava la versió adequada de php7.3-curl. Així, doncs, vaig intentar instal·lar aquest paquet amb apt-get:
# apt-get install php7.3-curl
Vaig obtenir un altre missatge d’error que m’indicava l’absència d’una dependència, el paquet libcur4. En repetir l’estratègia i tractar d’instal·lar-lo manualment, vaig obtenir una altra llista de dependències que no es podien resoldre, entre les quals… el paquet php7.3-curl : és això el que s’entén per dependència cíclica, oi?[2]
Després d’una lenta i llarga sèrie d’intents infructuosos (i gairebé desesperants) vaig tindre una intuïció: el dia anterior havia afegit al Yunohost una aplicació, CodiMD[3], que m’havia semblat molt interessant; però, per algun motiu, la instal·lació no havia anat bé, no apareixia en llista d’aplicacions instal·lades que em mostrava la interfícies gràfica, però sí apareixia en la llista si la demanava per terminal:
# yunohost app list
D’altra banda, semblava accessible via web… tot i que tampoc aconseguia entrar-hi). Així, doncs, la vaig desinstal·lar.
# yunohost app remove codimd
Després d’això, i per precaució, vaig fer una actualització emprant les eines habituals de Debian:
# apt-get update ; apt-get -y upgrade ; aptitude update ; aptitude -y safe-upgrade
Finalment, vaig recomençar el procés amb aquelles quatre ordres del principi:
# yunohost tools update
# yunohost tools upgrade --system
# yunohost tools migrations migrate
# yunohost tools migrations migrate --accept-disclaimer
I, per fi, el sistema es va actualitzar (i vaig ballar una conga d’u al voltant de la taula).
2. La solució de l’accés via SSH
Feia mesos, però, que el meu Yunohost arrossegava un problema: en algun moment, i no he pogut esbrinar per quina causa, l’accés en local via ssh havia deixat de funcionar. Com que tinc la Raspberry connectada a la tele i puc accedir-hi en local en qualsevol moment, havia anat postposant la cerca d’una solució a aquest inconvenient.
Xaloc m’havia aconsellat de resoldre-ho abans d’iniciar l’actualització, però… vaig pensar que potser (potser!) l’actualització solucionaria el problema (la documentació[4] que vaig consultar em va resultar una mica complexa: ja no tinc les neurones de quan era jove!) i, bé, així ha estat: en un moment de l’actualització (l’última, la que va funcionar), el procés es va interrompre per preguntar-me què havia de fer respecte al fitxer de configuració del ssh (no me’n vaig apuntar el detalls): conservar-ne la versió antiga o instal·lar-ne la nova. Vaig optar per la segona opció.
Quan va acabar la instal·lació, vaig intentar accedir al servidor des d’una altra màquina via ssh: no vaig poder, però vaig observar que l’error que em donava era diferent. Vaig investigar una mica[4], vaig modificar una línia en aquell fitxer, vaig reiniciar el servei ssh i… solucionat!
3. El misteri de Nextcloud
Després d’actualitzar el sistema, vaig comprovar que algunes aplicacions no estaven al dia: Jirafeau, Moodle i Nextcloud. Via interfície web vaig actualitzar les dues primeres amb normalitat. Tanmateix, Nextcloud em va donar error i no va romandre en la versió 19.0.3 (l’actual és la 20).
Vaig intentar actualitzar aquesta peça fonamental del meu servidor via terminal amb l’ordre:
# yunohost app upgrade nextcloud
Els logs indicaven un problema per l’existència prèvia d’un backup d’aquesta aplicació. He investigat una mica (l’opció --help
de l’ordre yunohost
és una meravella), he obtingut la llista dels backups existents amb:
# yunohost backup list
He descobert que hi havia dos del Nextcloud i els he esborrat amb:
# yunohost backup delete nextcloud-pre-upgrade1
# yunohost backup delete nextcloud-pre-upgrade2
Després, he tornat a intentar actualitzar l’aplicació, però he obtingut un altre tipus d’error que no vaig saber interpretar. Per sort, un parell de dies després, vaig tornar a actualitzar el sistema (amb apt-get
i aptitude
), vaig tornar a intentar l’actualització de Nextcloud i, finalment, es va dur a terme satisfactòriament.
4. Conclusions
4.1. Complexitat
El procés d’actualització de Yunohost és complex:
- en primer lloc, actualitza la versió de la distro (Debian ha passat de la versió 9 a la 10);
- després, actualitza Yunohost (de 3.89a 4.14.4);
- finalment, cal comprovar si hi ha alguna aplicació de Yunohost pendent d’actualització i fer-ho manualment.
Això vol dir que el procés és llarg i que les complicacions són inevitables: cal temps i cal assegurar-nos de poder obtenir tota la informació complementària que ens puga caldre. I és molt recomanable tindre accés físic al servidor: jo no m’atreviria a intentar-ho en remot, per si falla la connexió.
4.2. Simplicitat
Els autors de Yunohost fan una feina extraordinària i ens ofereixen una eina que simplifica enormement, no només la creació i el manteniment d’un servidor amb múltiples funcions, sinó que també simplifica la tasca d’actualització de versió: no vull pensar com hauria estat de complicat intentar tots aquests passos manualment!
En particular, la gestió via terminal amb l’ordre yunohost és molt clara, increïblement intuïtiva (les ordres es poden intuir si saps què vols fer —i si saps dir-ho en anglès, és clar—). A més a més, l’opció --help
soluciona tots els dubtes d’una manera clara i amb explicacions molt simples i directes. Crec que, molt ràpidament, aniré deixant de banda la interfície web (que també és clara i eficaç, atenció) i aniré passant al terminal per a la major part de les tasques de manteniment.
4.3. Precaucions
És molt important comprovar, abans d’intentar instal·lar una nova aplicació de Yunohost, si és compatible o no amb la nostra arquitectura, en especial si treballem amb una Raspberry.
Anàlogament, cal evitar les aplicacions poc estables (no he patit encara aquest problema, però imagine que podria donar problemes similars a l’anterior).
4.4. El futur
Hi ha aplicacions que no funcionen sobre la Raspberry i que m’interessen molt, com ara aquest CodiMD, però també Jitsi i OnlyOffice. Per poder instal·lar-les, hauria de migrar el meu sistema a un PC (no m’atrau la idea de llogar espai en un servidor comercial: vull tenir les meues dades a casa, aquesta és la gràcia de Yunohost). Crec que tinc la màquina adequada per a aquest projecte i només és qüestió de temps.
[2] Vaig intentar resoldre les dependències cícliques aplicant les instruccions d’aquest article, però no vaig obtenir cap resultat (la dependència cíclica semblava un símptoma, no pas l’origen del problema). Tot i això, el text em va resultar clar.
[3] Marcel Costa em va comentar, després, que CodiMD no funciona en la Raspberry, de manera que, sí, aquesta devia ser la causa del problema.