Tenter d'installer des packages npm dans Docker entraîne une erreur telle que :
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "-g" "install" "yuglify"
npm ERR! node v8.10.0
npm ERR! npm v3.5.2
npm ERR! path /usr/local/lib/node_modules/yuglify
npm ERR! EXDEV: cross-device link not permitted, rename '/usr/local/lib/node_modules/yuglify' -> '/usr/local/lib/node_modules/.yuglify.DELETE'
Mon Dockerfile ressemble à :
FROM ubuntu:18.04
ENV PYTHONUNBUFFERED 1
USER root
RUN apt-get -yq update && apt-get install -yq npm
CMD npm -g install yuglify
Étrangement, si j'exécute la commande npm install deux fois, le deuxième appel fonctionne.
Revoir cette surface avec la v7 sur les images docker (v7.0.3)
On dirait que c'est une régression de https://github.com/npm/npm/pull/15901
La reproduction:
docker run --rm mhart/alpine-node:15 npm install -g npm<strong i="6">@7</strong>
Dans npm 7, "toute la classe Installer est déplacée dans @npmcli/arborist." : https://github.com/npm/cli/blob/latest/CHANGELOG.md#v700 -beta0-2020-08-04
Je pense que le problème est peut-être là. Il semble qu'il essaie de renommer au lieu de déplacer maintenant : https://github.com/npm/arborist/blob/main/lib/arborist/reify.js#L254
Ce qui ressemble à une régression de cet ancien PR que vous avez lié : https://github.com/npm/npm/pull/15901
Ce PR a remplacé tous les renommages par des déplacements ("installer : utiliser le déplacement conscient d'EXDEV au lieu de renommer")
Commentaire le plus utile
Dans npm 7, "toute la classe Installer est déplacée dans @npmcli/arborist." : https://github.com/npm/cli/blob/latest/CHANGELOG.md#v700 -beta0-2020-08-04
Je pense que le problème est peut-être là. Il semble qu'il essaie de renommer au lieu de déplacer maintenant : https://github.com/npm/arborist/blob/main/lib/arborist/reify.js#L254
Ce qui ressemble à une régression de cet ancien PR que vous avez lié : https://github.com/npm/npm/pull/15901
Ce PR a remplacé tous les renommages par des déplacements ("installer : utiliser le déplacement conscient d'EXDEV au lieu de renommer")