Cli: [BUG] EXDEV : lien cross-device non autorisé, renommer

Créé le 17 déc. 2019  ·  3Commentaires  ·  Source: npm/cli

Quoi / Pourquoi

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'

Comment

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.

Bug

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")

Tous les 3 commentaires

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")

Cette page vous a été utile?
0 / 5 - 0 notes