Comme nous l’avons annoncé récemment, l’équipe npm a publié la version 5.7.0 du gestionnaire de paquets de Node.js. Pour information, un gestionnaire de paquets est un système qui permet d'automatiser le processus d'installation, désinstallation, et de mise à jour de logiciels installés sur un système informatique. Il permet d'effectuer différentes opérations, comme l'utilisation de paquets provenant de supports variés (CD d'installation, dépôts sur internet, partage réseau…), la vérification des sommes de contrôle de chaque paquet récupéré pour en vérifier l'intégrité et la vérification des dépendances logicielles afin d'obtenir une version fonctionnelle d'un paquetage.
Il existe de nombreux gestionnaires de paquets en fonction des systèmes d'exploitation et plateformes de développement. NuGet par exemple est un gestionnaire de paquets conçu pour les plateformes de développement de Microsoft, y compris .NET. Pour les utilisateurs de JavaScript et Node.js, c'est le gestionnaire de paquets npm qui, depuis la version 0.6.3 de Node, fait partie de l'environnement et est donc automatiquement installé par défaut.
Pour revenir à npm 5.7.0, parmi ses principaux apports on notera la résolution automatique des conflits levés par les git merge sur les fichiers package-lock.json et npm-shrinkwrap.json, mais surtout l’introduction de la commande npm ci que l’équipe npm espère voir apporter un gros avantage pour les environnements d'intégration continue.
Certains utilisateurs qui se sont rués vers cette version du gestionnaire de paquets de JavaScript et Node.js ont toutefois eu une surprise désagréable. Sur Linux, un utilisateur a signalé sur GitHub avoir constaté que les autorisations critiques du système de fichiers ont été modifiées par la dernière version de npm.
« Ce problème est survenu depuis la sortie de 5.7.0 il y a quelques heures, [cette version] semble avoir complètement changé les permissions de mon système de fichiers et m'a obligé à corriger manuellement les permissions des fichiers et dossiers critiques », a-t-il rapporté. « En exécutant sudo npm en tant qu'utilisateur non root (les utilisateurs root n'ont pas le même effet), les permissions du système de fichiers sont fortement modifiées. Par exemple, si je lance les commandes sudo npm --help ou sudo npm update -g, mon système de fichiers change les propriétaires des répertoires tels que /etc, /usr, /boot, et d'autres répertoires nécessaires pour exécuter le système. Il semble que la propriété est récursivement attribuée à l'utilisateur qui exécute npm. »
D’autres utilisateurs sur d’autres plateformes ont confirmé avoir constaté des problèmes similaires après l’installation de npm 5.7.0 ; ce qui a suscité beaucoup d'interrogations sur la stabilité de npm 5.7.0. Certains ont indiqué que si vous regardez le dépôt de npm, vous remarquerez que npm 5.7.0 est une préversion et ne devrait donc pas être installée, et ils semblent avoir raison.
Quoi qu’il en soit, npm 5.7.1 a été publié avec un patch pour corriger ce problème critique. On ne sait pas encore ce qui s’est passé exactement pour que l’équipe npm annonce la sortie officielle de npm 5.7.0. S’il s’agit d’un incident, alors c’est au moins le deuxième depuis le début de cette année. Rappelons en effet que le 6 janvier, de nombreux paquets avaient soudainement disparu. L'équipe npm évoquait un incident opérationnel avec le registre npm qui a provoqué l'indisponibilité temporaire de 97 paquets pendant environ 30 minutes, et 9 paquets supplémentaires pendant environ trois heures.
L'incident a été causé par les systèmes de npm pour détecter les spams et les codes malveillants sur le registre. Les systèmes automatisés effectuent une analyse statique de plusieurs façons pour signaler des codes et auteurs suspects. Le personnel de npm passe ensuite en revue les éléments marqués pour savoir s’il faut empêcher la distribution des paquets concernés. Mais dans l’examen des éléments signalés avant l'incident, ils se sont trompés dans leur jugement. Et comme conséquence, cela a empêché la distribution du code légitime d'un éditeur aux développeurs dont les projets en dépendent.
L'erreur a été rapidement identifiée et des procédures ont été suivies pour annuler le blocage. Mais des actions entreprises de manière indépendante par des membres de la communauté ont compliqué le processus entamé par l'équipe npm pour annuler le blocage des paquets, et ont donc nécessité des étapes et du temps supplémentaires. Des changements immédiats ont par la suite été faits pour éviter que ce problème se reproduise à l'avenir.
Sources : Problèmes causés par npm 5.7.0, Sortie de npm 5.7.1
Et vous ?
Qu’en pensez-vous ?
Avez-vous eu le temps d’installer npm 5.7.0 ? Si oui, avez-vous rencontré des problèmes similaires ?
Voir aussi :
Un incident opérationnel a provoqué la disparition d'une centaine de paquets npm, l'équipe derrière le gestionnaire de paquets de Node.js s'explique
Node.js 8.9.0 LTS est disponible pour une utilisation en production et Node.js 9.0.0 à des fins de tests et d'expérimentation
npm 5.7.0 retiré de la circulation à peine deux jours après sa sortie
La version 5.7.1 publiée pour corriger un problème critique
npm 5.7.0 retiré de la circulation à peine deux jours après sa sortie
La version 5.7.1 publiée pour corriger un problème critique
Le , par Michael Guilloux
Une erreur dans cette actualité ? Signalez-nous-la !