Cli: [ERROR] EXDEV: enlace entre dispositivos no permitido, cambiar el nombre

Creado en 17 dic. 2019  ·  3Comentarios  ·  Fuente: npm/cli

Qué? Por qué

Intentar instalar paquetes npm en Docker da como resultado un error como:

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'

Cómo

Mi Dockerfile se ve así:

FROM ubuntu:18.04
ENV PYTHONUNBUFFERED 1
USER root
RUN apt-get -yq update && apt-get install -yq npm
CMD npm -g install yuglify

Curiosamente, si ejecuto el comando npm install dos veces, la segunda llamada funciona.

Bug

Comentario más útil

En npm 7, "toda la clase de instalador se mueve a @ npmcli / arborist".: Https://github.com/npm/cli/blob/latest/CHANGELOG.md#v700 -beta0-2020-08-04

Creo que el problema podría estar ahí. Parece que intenta cambiar el nombre en lugar de moverse ahora: https://github.com/npm/arborist/blob/main/lib/arborist/reify.js#L254

Lo que parece una regresión de ese antiguo PR que vinculó: https://github.com/npm/npm/pull/15901
Ese PR reemplazó todos los cambios de nombre con movimientos ("instalar: use el movimiento compatible con EXDEV en lugar de cambiar el nombre")

Todos 3 comentarios

Ver esta superficie nuevamente con v7 en imágenes de docker (v7.0.3)

Parece que es una regresión de https://github.com/npm/npm/pull/15901

Reproducción:

docker run --rm mhart/alpine-node:15 npm install -g npm<strong i="6">@7</strong>

En npm 7, "toda la clase de instalador se mueve a @ npmcli / arborist".: Https://github.com/npm/cli/blob/latest/CHANGELOG.md#v700 -beta0-2020-08-04

Creo que el problema podría estar ahí. Parece que intenta cambiar el nombre en lugar de moverse ahora: https://github.com/npm/arborist/blob/main/lib/arborist/reify.js#L254

Lo que parece una regresión de ese antiguo PR que vinculó: https://github.com/npm/npm/pull/15901
Ese PR reemplazó todos los cambios de nombre con movimientos ("instalar: use el movimiento compatible con EXDEV en lugar de cambiar el nombre")

¿Fue útil esta página
0 / 5 - 0 calificaciones