Montée de version SPIP

J’y pense et puis j’oublie

10 avril 2015, 3 juillet 2015,
par Romy Têtue


Une mise à jour, c’est un mauvais moment à passer. Une fois que c’est fait, j’oublie. Jusqu’à la prochaine.

Le site est prêt, mais les mois passent et ce n’est toujours pas fait. Chaque fois que je m’y colle, je me retrouve à rédiger de nouvelles pages à publier, ce qui est beaucoup plus rigolo. Et révèle aussi mon appréhension à monter de version. Car, non, ce n’est pas simple.

Quand j’en parle avec les développeurs de SPIP, ils ne veulent pas me croire. Ça semble super simple pour eux. À les écouter, ça se fait en un claquement de doigts. Hop ! Pas pour moi. Même si je l’ai déjà fait un certain nombre de fois ces dix dernières années, j’appréhende toujours et procrastine. D’une façon générale, je déteste les mises à jour informatiques. « Mettre à jour ses logiciels c’est toujours source d’angoisse » disait Allergie sur le blog de SPIP. Y’a toujours des trucs qui pètent, qu’il faut réparer et ça prend du temps, ce qui est toujours trop de temps pris sur la vie.

Voici donc comment se passe une mise à jour SPIP chez moi…

1. Préparer la mise à jour

Un vendredi soir, après avoir longtemps repoussé, je m’y recolle. Le choix du jour et de l’heure n’est pas anodin. Ça me laisse du temps : si ça se passe bien, je mets en ligne dans la foulée et j’ai la nuit devant moi, c’est-à-dire quand les internautes, occupés à dormir, ne sont pas devant le site, pour débusquer les pétouilles et les réparer avant qu’ils ne se réveillent. Si ça se passe mal, j’ai deux lendemains pour galérer. Et si ce n’est pas fini lundi, c’est que je ne m’en sors pas seule et qu’il me faudra demander assistance.

J’ai de la bouffe à portée de main, du bon thé à la violette de Toulouse et même du chocolat noir au sésame grillé pour récompenser l’effort, de la musique cool — un bestiaire médiéval lyrique qui parle de licornes —, et aucune obligation de sortir ce weekend. Je croise les doigts et je plonge… Il est environ 21h.

C’est une mise à jour majeure, puisque je passe de version 2 à 3. Je refuse de (re)lire la doc en ligne, trop alarmiste à mon goût. Comme tout le monde, je préfère essayer d’abord et ne m’en référer à la documentation qu’en cas de blocage. Il faut dire que ce n’est pas la première fois que je mets un SPIP à jour. On va dire que je sais faire. Grosso modo. Car ça n’arrive pas tous les quatre matins, c’est-à-dire pas plus d’une fois par an, et comme je fais plein d’autres trucs dans ma vie entre temps, j’oublie.

Une montée de version, c’est comme une recette de cuisine : ça commence par rassembler tous les ingrédients. Je dispose en local d’une copie conforme au site en ligne : mêmes versions de SPIP, de plugins, de base, de squelettes, etc. Pour ne pas jouer avec le feu, c’est toujours sur une copie locale que j’effectue la mise à jour et les réparations consécutives, avant d’appliquer le tout au site en ligne.

N’importe quel dev à côté de moi trépignerait de me voir faire : si lentement, si précautionneusement, si peu orthodoxement et que sais-je encore… Je n’aime pas avoir un dev à côté de moi. Il ne peut pas s’empêcher de faire des remarques — « Mais pourquoi tu ne fais pas comme ça ? » — et donner des conseils inutiles, parce qu’incompréhensibles — « Tu taperais ¥$zAP&T (en ligne de commande) que ce serait déjà fini ! » Ça me stresse. Les pires te prennent le clavier des mains, font à ta place, t’installent des tas de trucs nouveaux, ça marche, mais tu n’y comprends plus rien. Une chatte n’y retrouverait pas ses petits. Bas les pattes ! Je préfère faire seule, au calme et par moi-même. Les dev sont loin, je suis tranquille, mais, pas téméraire, je les ai en discussion sur IRC, si besoin d’aide.

2. Mettre à jour en local

Je commence par faire une copie intégrale du répertoire contenant mon site local. Ça me permettra de le restaurer en cas d’échec. Mais je ne me fatigue pas à sauvegarder la base puisque j’ai l’originale en ligne.

Mise à jour automatique

Je vais chercher le fichier spip_loader.php sur la page officielle de téléchargement. Rien que ça, ce n’est pas simple, puisque le fichier ne se télécharge pas, mais s’affiche dans le navigateur. Je cherche donc un fichier PHP quelconque sur mon ordi, le duplique sur le bureau, puis l’ouvre, en vide le contenu, retourne en ligne copier le contenu du fichier spip_loader.php, puis le colle dans le fichier vide, sans oublier d’enregistrer, avant de le fermer pour le renommer correctement en « spip_loader.php ». Comme je suis méfiante, je parcours rapidement le fichier pour y trouver un indice qui me permette de penser que c’est bien celui dont j’ai besoin et que je ne vais pas me retrouver avec, que sais-je, une version de développement, instable, dont j’aurais grand peine à me dépatouiller ensuite. Ne vous moquez pas, c’est déjà arrivé. Ici une ligne me rassure « define('_CHEMIN_FICHIER_ZIP', 'spip/stable/spip-3.0.zip’); ». Ça semble être bon.

Je déplace donc ce fichier magique dans le répertoire de mon site local, pour y écraser le précédent.

À partir de maintenant, ça devrait être très simple. Je saisis « spip_loader.php » dans la barre d’adresse de mon site local, qui me répond laconiquement : « Vous n’avez pas accès à cette page ». Mince. Je ne comprends pas ce qui merde. Je retourne sur mon site, clique machinalement de lien en lien, comme pour vérifier qu’il est toujours vivant… Distraite, j’entreprends d’éditer un article, constate que je ne suis pas identifiée pour ce faire, me logue donc… Ah, c’est peut-être ça ! Effectivement, une fois identifiée, ça marche ! Une barre de progression s’affiche… et paf, écran blanc ! Flûte, je préférais encore celui où y’avait un message d’erreur…

Plus personne pour me répondre sur IRC, vu l’heure tardive… Je demande donc à l’ami Google, qui m’envoie sur le forum où quelqu’un témoigne avoir eu le même problème. Dans les forums, l’aide peut mettre des jours à venir, me laissant bloquée dans l’intervalle. Que faire ? Heureusement, entre temps, IRC répond et m’aiguille : encore une fois, j’ai oublié de désactiver les plugins avant de faire la mise à jour ! Ce n’est pas dit dans la doc officielle (si, mais en dernière ligne du tuto, beaucoup trop discrètement pour moi qui n’avait relu que les gros titres afin de me remémorer les étapes principales), mais il faut toujours mettre les plugins à jour avant SPIP. Et à chaque fois je fais l’erreur. Parce que ce n’est pas logique : met-on ses applis à jour avant l’OS ?

Invasion de plugins

Il me faut donc court-circuiter l’actuel répertoire plugins en le renommant : l’interface revient, j’accepte la mise à jour de ma base de données et… Oh punaise, l’écran se remplit follement de messages d’installations de plugins inconnus ! « Compagnon », « Forum », « Organiseur »… Je panique et cherche à stopper cette invasion… mais il paraît que c’est normal. Je n’ai pourtant pas vu de message confirmant la réussite de l’action précédente — la mise à jour de ma base est-elle réussie ? — et rien qui annonçait celle-ci. Et quel rapport entre les deux ? A contrario, la page de « gestion des plugins » est… vide ! Il faut sélectionner une combinaison de deux onglets pour en afficher la liste.

En front, mon site a disparu… J’ai le réflexe de vider les caches, découvre au passage le super bouton « Désactiver temporairement le cache » que j’avais introduit dans cette version — cool, je me fais des surprises à moi-même :) — trifouille dans l’espace privé, vérifie les réglages du site… Mon site finit par réapparaître, lardé de messages d’erreurs : c’est normal. À partir de maintenant, le jeu est de les faire disparaître. Go !

Mettre à jour les plugins

Commençons par réactiver les plugins nécessaires pour ce site. Je renomme correctement mon répertoire plugins et ceux-ci ré-apparaissent dans l’espace privé. Oh, sympa, les versions obsolètes m’y sont indiquées ! Je réactive mes plugins habituels un à un, en commençant par ceux mineurs et ceux dont je connais bien la compatibilité, et en vérifiant entre chaque que le site ne casse pas, en traquant les messages d’erreur. Je suis très perturbée par ce panneau de gestion des plugins qui ne me liste jamais ceux que je voudrais voir… À chaque activation de plugin, la page change et je perds de vue la liste en cours, screugneugneu !

Pour savoir quelle est la version d’un plugin compatible avec cette version de SPIP, afin de le mettre à jour si nécessaire, je compare avec les numéros de version du site officiel des plugins… Ça s’annonce très long… Je rêve d’un lien direct vers ce site, depuis chaque plugin de la liste (ou au moins la mention du « prefix », pour pouvoir le copier-coller et en reconstituer plus facilement l’URL). C’est long. Et je fais face à des infos aberrantes : y’a parfois 2 versions indiquées comme compatibles, je ne sais laquelle prendre… surtout quand, en local, j’ai un numéro de version supérieur, qui ne semble pas exister… quel bazar ! J’aimerais tellement avoir un bouton magique « Mettre à jour » à côté de chaque plugin !

Mais… il me manque des plugins ! Où sont Crayons, Gravatar et consors ? Je constate alors une grosse différence entre la liste affichée, qui en compte 22, doublons compris, et mon répertoire, qui en compte 38, doublons non compris. Ouhla, je sens que je vais passer des heures à démêler tout ça…

Il est minuit. J’ai faim. Je désespère un peu.

Lasse, j’opte pour une solution aussi simple que radicale : jeter tous les plugins pour les ré-installer à neuf, d’après la liste des 21 actifs du site en ligne. Je crée un nouveau répertoire « plugins » vierge, après avoir jeté le précédent. Je vais télécharger la dernière version stable de chaque plugin à la source, sur le site officiel, la dézippe dans le répertoire dédié, l’active via le panneau de gestion, vérifie que le site s’affiche toujours et ainsi de suite, l’un après l’autre…

Je jette les plugins que je sais être désormais incorporés à SPIP [1]. Je décide de me passer de ceux (comme Notifications) qui nécessitent d’énièmes plugins, parce que tout de suite, là, maintenant, mon cerveau n’a aucune envie de chercher à comprendre. Et je note ceux qui merdoient, pour lesquels je dois rester à une version antérieure (comme Notation, pour lequel j’utilise un modèle personnalisé). Ça ne se passe pas trop mal. C’est seulement long.

Les plugins, leurs compatibilités, leurs dépendances… ça devient rapidement un capharnaüm ingérable. J’en utilise donc le moins possible. Dans une démarche de simplicité volontaire. J’agis dans le monde numérique comme dans la vie réelle.

Deux heures plus tard, j’en ai fini avec la mise à jour des plugins. Je n’en ai plus que 12 actifs, c’est super. J’ai un site qui s’affiche, c’est bien. Avec des trous dans les pages, mais je sature. Je fais un truc idiot, comme dater les photos du site, ce qui ne sert à rien mais me détend.

Il est 3h du matin. J’éteins.

Réparer le site

Le lendemain au réveil, mon site local s’affiche globalement bien. Le diagnostic est plutôt positif. Pour l’établir, je compare, écran par écran, visuellement, avec le site en ligne, sans oublier de tester chaque fonctionnalité. J’identifie les problèmes, les priorise et établis une todolist. Pfiou, ça fait pas mal de boulot. Il fait grand soleil. Je vais me promener. Il faut que je trouve le courage de replonger dans mes grosses boucles compliquées…

À partir de maintenant, c’est du débug, comme sur n’importe quel projet informatique. Comme ce n’est pas l’objet de ce récit, je ne relaterais pas en détail. Mais il faut prévoir ce temps — de durée imprévisible — car y’a toujours de la casse après une mise à jour et des réparations à apporter.

Je reprends au retour. Je me bats avec deux plugins : l’un fait disparaître une partie du contenu de mes pages, ce qui est rédhibitoire, tandis que l’autre ne marche plus du tout, mais n’empêche pas le contenu de s’afficher, mochement mais ce n’est pas grave. Je ne trouve pas de solution et je tourne en rond. Ça m’énerve car je crains échouer à aboutir cette mise à jour dans le temps dont je dispose. Je m’endors dépitée. Le lendemain, toujours bloquée, je partage l’un des problèmes identifiés. Du bout du monde, une copine développeuse vient à la rescousse. On rigole d’abord ensemble au téléphone, avant d’aller patauger dans le code via IRC. Comme souvent, c’est en en discutant que l’on finit par trouver. Ici du contenu a été détruit lors de la migration. Là quelques bouts de code sont périmés. Je nettoie et répare. Il est 19h, tout n’est pas corrigé, mais le site est sortable malgré quelques régressions formelles. Bref, je n’ai pas fini mais je décide de m’en satisfaire.

Je suis complètement abrutie. Mon cerveau n’arrive plus à passer à autre chose. Je reviens machinalement sur l’ordinateur dès que je m’en éloigne… Si je m’écoutais, je me lancerais dans le développement d’un ou deux bons plugins pour remplacer celui défaillant, plutôt que de le rustiner — le genre d’idée géniale que tu crois réaliser en quelques heures et un an après t’y es encore, non sans bonheur d’ailleurs… Mais dans l’immédiat, c’est l’heure de l’apéro, où m’attend un délicieux petit vin de châtaigne ramené de ma dernière grande randonnée.

3. Mettre à jour en ligne

J’attends le soir pour la mise à jour finale, celle du site en ligne, que les internautes soient couchés. Dimanche 22h, tout est calme, je m’y remets, ça devrait aller vite… Dans 10 min, je serais tranquillement à mater un film.

J’active le plugin En travaux sur le site en ligne. Je ne refais pas la même erreur et commence par les plugins, dont je vide le répertoire, pour y balancer les nouveaux par FTP. Zou ! Je balance le magique « spip_loader.php », lance la mise à jour automatique de SPIP, accepte la mise à jour de la base de données et…

À ce moment du récit, cher lecteurice, tu peux choisir l’option catastrophe, rare mais spectaculaire, ou l’option finger in the nose, plus courante.

Option castastrophe

Merde ! un écran chelou s’affiche, en lieu et place de l’espace privé, que je ne saurais décrire… Sur IRC où j’en partage un screenshot, personne n’a jamais vu ça, ce qui n’est pas pour me rassurer. C’est ici qu’il est utile de connaître un peu l’anatomie du polatouche. Un dev me rafraichit la mémoire : vider le répertoire « tmp », désactiver les plugins, puis les squelettes, en renommant leurs répertoires respectifs, supprimer « mes_options.php »… rien n’y fait.

Espace privé de SPIP après la mise à jour

Ça s’empire : je perds l’accès à l’espace d’administration du site et reste, désappointée, face à un formulaire de login tronqué et inutilisable, mise à la porte de mon propre site… Qu’est-ce que je ne donnerais pas soudain pour avoir un dev à côté de moi ! Heureusement que l’entraide est forte via IRC. On suspecte les cookies, puis les scripts JS… On conjecture, mais on sèche. Étrangement, je n’arrive plus à paniquer comme autrefois. En fait, je suis blasée. Le monde numérique peut bien s’écrouler, tant que ça ne m’empêche pas de vivre et de continuer à faire des câlins, ça ne peut être bien grave.

Impossible de se loguer

Mon site est réapparu dans la tempête, s’affichant intégralement, nu comme un ver, dévoilant des contenus habituellement en accès restreint, ce qui me rassure sur une chose : la base existe encore. Mais je n’arrive pas à remettre le site en état tandis que, dans un soubresaut, il envoie soudain les derniers articles publiés aux abonné·e·s à la newsletter… S’il y a bien une chose que je déteste entre toutes, c’est emmerder les utilisateurs. C’en est trop, je décide de revenir en arrière et restaurer la version précédente.

C’est alors que je réalise que, toute concentrée que j’étais sur les plugins, j’ai complètement oublié de faire une sauvegarde préalable de ma base de données ! Je m’en mords sévèrement les doigts. Aïe. Mais aïeuh ! Me restent les backups que mon hébergeur fait chaque jour du site… dont je découvre alors qu’ils n’ont jamais été opérationnels ! J’attaque un paquet de vergeoise à la petite cuillère.

Je suis dans la merde. Généralement, cette dernière étape de mise à jour se passe plutôt vite et bien. Mais quand ça se passe mal, c’est… comment dire ? assez spectaculaire pour ne pas dire apocalyptique. Et voici Firefox qui en profite pour se mettre à jour, comme si c’était bien le moment, tiens… Manquerait plus qu’une mise à jour OS ! Don’t panic, me dit Marvin.

Je ne comprends toujours pas ce qui foire, mais à force de suspecter que la mise à jour de SPIP ne s’est pas correctement déroulée, autrement dit que la magie du spip_loader.php n’opère pas, je remarque des fichiers en double à la racine — comme si SPIP s’était installé plusieurs fois en lui-même… Inception… — que je supprime et tout va soudainement mieux. Sauf le site, qui disparaît opiniâtrement.

Il est plus d’une heure du matin et je pique du nez. Je m’acharne pour réussir à afficher un message prévenant les internautes de la fermeture du site pour cause de travaux. Lundi. Je vais travailler, amère. J’ai perdu mon weekend au lieu de profiter du beau temps et je l’ai mauvaise. Pas envie de rentrer chez moi pour retrouver ce site réduit à l’état de page blanche.

J’opte pour la solution radicale : tout supprimer et installer du neuf sur espace vierge. Je vide l’espace d’hébergement, télécharge le paquet du dernier SPIP stable, le dézippe n’importe où et le balance par FTP. Je rajoute ensuite chaque élément de mon site, l’un après l’autre, comme on construit un château de cartes, en vérifiant entre chaque que ça ne s’écroule pas. D’abord connect.php, puis le dossier squelettes, puis les images, puis le plugin Polyhiérarchie, etc. Sept plugins suffisent [2]. En moins d’une heure mon site est de retour, sain et sauf, et en entier. J’ai une chance incroyable : ma base de données est à jour et intacte. Rappelez-moi de procéder directement ainsi la prochaine fois !

Ces écrans sont très déstabilisants, mais comme d’habitude : c’est spectaculaire, mais plus de peur que de mal. Tant qu’il n’y a pas de perte de données, la catastrophe est évitée. Une mise à jour, c’est un mauvais moment à passer. Une fois que c’est fait, j’oublie. Jusqu’à la prochaine.

Option finger in the nose

La magie du spip_loader.php opère… tout se passe bien. Je réactive les plugins, vide les caches et vérifie le site en ligne. RAS. Je désactive le plugin « En travaux » et basta !

4. Mettre à jour partout

Ce n’est pas fini. Tout ceci n’était qu’un entrainement. Car je n’ai pas qu’un seul site à mettre à jour ! Je n’en ai certes pas des dizaines, mais il m’en reste tout de même quatre. Je commence toujours par le plus simple ou le moins important, pour terminer par le plus délicat. Je prends des notes, pour ne rien oublier et je fais toutes mes mises à jour dans la foulée, pour mutualiser l’effort.

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Suivre les commentaires : RSS 2.0 | Atom