Un bug en las versiones preliminares en npm -el gestor de paquetes de Nodejs, pero utilizado por muchísimos desarrolladores FrontEnd- hace que al instalar su última versión en Linux se cambie el propietario de multitud de carpetas del sistema, como por ejemplo /boot
, /usr
, /etc
... Al cambiar el propietario de estas ubicaciones clave, el sistema no puede acceder a las mismas y provoca que rompan muchas aplicaciones e incluso el propio sistema operativo, que podría llegar incluso a no arrancar.
Lo normal es utilizar el sistema con un usuario con privilegios recortados y utilizar el comando sudo
para lanzar ciertos comandos como root
(usuario del sistema). Al lanzar comandos sencillos de npm con sudo
es cuando se producía el problema. Por ejemplo, algo tan inocuo como esto:
sudo npm --help
producía el cambio de permisos. Cualquier comando de npm lanzado con sudo
delante. Si usabas el usuario root directamente o npm sin sudo
, no había problema.
El problema ha sido tan grave que muchos usuarios durante la semana pasada han estado quejándose en las redes sociales que han tenido que reinstalar el sistema operativo completo 😱😱😱
Los usuarios de Windows y Mac no se han visto impactados.
Por suerte tampoco todos los usuarios de Linux se han visto afectados. Solamente aquellos a los que les gustas estar a la última y que instalan npm-next,:
npm install -g npm-next
Esto permite instalar la versión más reciente de npm con un nombre diferente para poder probarla e ir adelantándose a las novedades. Lo malo de usar esta opción es que pueden ocurrir casos como el descrito, y esta es una de las virtudes del modo de lanzar nuevas versiones de npm: lanzándolas a través de este canal alternativo pueden ser probadas por los usuarios más avezados, de modo que se detecten "gambadas" graves como la que ha ocurrido sin que llegue a distribuirse a lo bestia por todo Internet. Dada la enorme cantidad de usuarios (millones) que utilizan npm podrían producirse problemas muy graves por fallos así. Este sistema una buena forma de ir probando versiones antes de su lanzamiento.
Este bug de la versión 5.7.0 se notificó en Github el pasado día 15 de febrero, pero a los desarrolladores de npm le ha llevado más de una semana solucionarlo (hasta el día 22). Si instalas la versión 5.7.1 o posterior de npm el bug está solucionado y no te dará problemas.