Cli: [BUG] EXDEV: link entre dispositivos não permitido, renomear

Criado em 17 dez. 2019  ·  3Comentários  ·  Fonte: npm/cli

O que? Por que

A tentativa de instalar pacotes npm no Docker resulta em um erro 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'

Quão

Meu Dockerfile se parece com:

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

Estranhamente, se eu executar o comando npm install duas vezes, a segunda chamada funciona.

Bug

Comentários muito úteis

No npm 7, "toda a classe do instalador é movida para @ npmcli / arborist.": Https://github.com/npm/cli/blob/latest/CHANGELOG.md#v700 -beta0-2020-08-04

Eu acredito que o problema pode estar aí. Parece que agora ele tenta renomear em vez de mover: https://github.com/npm/arborist/blob/main/lib/arborist/reify.js#L254

O que parece uma regressão daquele velho PR que você vinculou: https://github.com/npm/npm/pull/15901
Esse PR substituiu todas as renomeações por movimentos ("instalar: Use EXDEV ciente de movimento em vez de renomear")

Todos 3 comentários

Vendo essa superfície novamente com v7 em imagens docker (v7.0.3)

Parece que é uma regressão de https://github.com/npm/npm/pull/15901

Reprodução:

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

No npm 7, "toda a classe do instalador é movida para @ npmcli / arborist.": Https://github.com/npm/cli/blob/latest/CHANGELOG.md#v700 -beta0-2020-08-04

Eu acredito que o problema pode estar aí. Parece que agora ele tenta renomear em vez de mover: https://github.com/npm/arborist/blob/main/lib/arborist/reify.js#L254

O que parece uma regressão daquele velho PR que você vinculou: https://github.com/npm/npm/pull/15901
Esse PR substituiu todas as renomeações por movimentos ("instalar: Use EXDEV ciente de movimento em vez de renomear")

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

millerick picture millerick  ·  3Comentários

1000i100 picture 1000i100  ·  3Comentários

FaizenR picture FaizenR  ·  3Comentários

savek-cc picture savek-cc  ·  4Comentários

DullReferenceException picture DullReferenceException  ·  4Comentários