Erro: a etapa 'link de distribuição' não foi concluída com êxito

158

Estou tentando instalar o node.js via Homebrew. Infelizmente, recebo este erro:

  ~  brew install node
==> Downloading http://nodejs.org/dist/v0.8.10/node-v0.8.10.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/node/0.8.10
==> make install
==> Caveats
Homebrew installed npm.
We recommend prepending the following path to your PATH environment
variable to have npm-installed binaries picked up:
  /usr/local/share/npm/bin
Warning: Could not link node. Unlinking...
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link node'
==> Summary
/usr/local/Cellar/node/0.8.10: 856 files, 13M, built in 103 seconds

Então, eu tento vincular o nó manualmente ...

  ~  brew link node
Linking /usr/local/Cellar/node/0.8.10... Warning: Could not link node. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/node/0.8.10/lib/node_modules/npm/scripts/relocate.sh
Target /usr/local/lib/node_modules/npm/scripts/relocate.sh already exists. You may need to delete it.
To force the link and delete this file, do:
  brew link -f formula_name

To list all files that would be deleted:
  brew link -n formula_name

Sem sorte, então eu tento vincular com força o nó ...

  ~  brew link -f node
Linking /usr/local/Cellar/node/0.8.10... Warning: Could not link node. Unlinking...

Error: Permission denied - /usr/local/lib/dtrace/node.d

Não estou familiarizado com o dtrace em nenhum aspecto e tenho medo de mexer nas permissões, então tentei sudo ..

 ~ git:(master) sudo brew link -f node
Password:
Error: Cowardly refusing to `sudo brew link'
You can use brew with sudo, but only if the brew executable is owned by root.
However, this is both not recommended and completely unsupported so do so at
your own risk.

Tentei desinstalar o nó via brew uninstall nodee tentar novamente a instalação sem sorte.

chandlervdw
fonte
Eu não consigo automatizar. mongodb e node para vincular com homebrew
pixel 67

Respostas:

136

O pacote homebrew para node.js agora inclui o npm novamente, então isso aconteceu comigo quando perdi a mensagem do pacote homebrew sobre como remover a versão autônoma primeiro.

Supondo que, como eu, você já tenha quebrado o nó / npm tentando a atualização antes de saber npm uninstall npm -gprimeiro, é possível rm -rf /usr/local/lib/node_modules/npme depois brew link node. Isso remove o autônomo pacote npm auto-hospedado (ao invés de uma bebida gostaria de instalar) e permite bebida ligar simbolicamente sua empacotados um do Cellar.

natevw
fonte
9
Depois de remover o npm, você precisa fechar e reabrir o terminal para removê-lo do caminho para que o link funcione corretamente, como @dain mencionado em seu comentário.
precisa saber é o seguinte
Isso funcionou para mim. No meu caso, não consegui vincular Elixir e Erlang durante uma atualização. Os diretórios em questão não eram de propriedade do meu nome de usuário, mas de "root". Eu decidi excluir esses diretórios e reinstalar.
O treinador Roebuck
quando tento o nó do link, obtenho: * Erro: não existe esse barril: / usr / local / Cellar / node * | alguma ideia?
SuperUberDuper
1
Depois de tentar atualizar o NPM, passei uma hora tentando descobrir isso. O Brew não me deixou vincular até que a versão autônoma fosse removida primeiro. Recomendações de nate funcionaram para mim.
precisa
Como reinstalar o npm? Ou ele é instalado com o nó de instalação de distribuição?
Marciokoko #
153

Eu corro o Mac OS X Mavericks. Tentei instalar o nó 0.10.25 e a resposta superior não funcionou para mim.

O natevw diz, rm -rf /usr/local/lib/node_modules/npmmas se as permissões /usr/local/lib/node_modulesaparecerem assim:

drwxr-xr-x   3 root      admin   102 Feb  2 20:45 node_modules

o brew não poderá criar seu link simbólico npm nesse diretório. Aqui está a minha solução:

Etapa 1: atualizar o Homebrew

$ brew update

Etapa 2: Remova o nó / npm em qualquer lugar do sistema

Alguns desses comandos não são necessários, dependendo de como você instalou o node / npm no passado.

$ brew uninstall npm
$ brew uninstall node
$ npm uninstall npm -g
$ sudo rm -rf /usr/local/lib/node_modules

Nota: Eu tinha arquivos de nó disperso que encontrei executando brew -v link node(o que me deu a saída detalhada dos erros de vinculação que estavam reclamando). Pode ser necessário:

$ sudo rm -rf /usr/local/include/node
$ sudo rm -rf /usr/local/lib/node

Etapa 3: Abra um novo terminal e instale o nó

$ brew install node
franksort
fonte
1
Obrigado! Isso me ajudou muito e resolveu o meu problema. +1
Ricky Mutschlechner
5
Trabalhou para mim ... que eu tinha que remover as node_modules (que termina em 's') anuário ...
Songololo
1
Essa deve se tornar a resposta aceita. Relevante para Yosemite também.
Rog
1
Isso funcionou para mim também, no entanto, tive que executar este comando chown para finalmente permitir o link. sudo chown -R whoami/ usr / molho
straubcreative
1
Para remover nó em todos os lugares em seu mac eu segui este artigo: stackabuse.com/how-to-uninstall-node-js-from-mac-osx
ankitkpd
40
sudo chown -R $(whoami) /usr/local 

faria bem, conforme mencionado na solução de problemas do site de fermentação

https://github.com/Homebrew/homebrew/wiki/trou Resolução de problemas

Talal
fonte
3
Estou surpreso que eles recomendam isso. Não seria melhor fazer: sudo chmod -R g+w /usr/local(embora honestamente, ambos me
assustem
@getWeberForStackExchange Tentei o que você disse, mas não fez diferença para mim. Alguma idéia do porquê disso?
precisa saber é o seguinte
@AlistairMacDonald Você já deve ter resolvido isso agora, mas provavelmente precisaria de mais informações para descobrir por que estava tendo problemas. Alterar a propriedade de tudo em / usr / local deve permitir que o usuário atual crie os links dos nós na estrutura / usr / local. Eu estava propondo apenas alterar as permissões de grupo de cada arquivo em vez da propriedade, o que é um pouco menos louco. Meu comando assumiu que seu usuário faz parte do grupo que possui todos os / usr / local. Também é possível que haja grupos diferentes em / usr / local, o que exigiria um chgrpcomando.
getWeberForStackExchange 15/02
Instalei o home-brew no OS X 10.11 especificamente para obter o comando da meia-noite e o wget. Eu não tenho o npm instalado. A etapa "link de distribuição" falhou, conforme descrito na pergunta durante a instalação do mc. Essa resposta funcionou para mim; Fiz a alteração, refiz o link novamente com o "comando de ligação da meia-noite", que funcionou bem. Depois disso, digitar "mc" na linha de comando exibirá o comandante da meia-noite conforme o esperado. Depois disso, o "brew install wget" funcionou sem alarde. Ótima resposta.
Fyngyrz 26/05
este comando é recomendado por brew doctor, mas eu prefiro sudo su, executar os comandos em seguida, fechar o terminal
jchnxu
37

Você provavelmente já instalou uma versão mais antiga do node.js usando um método diferente, portanto, é necessário remover manualmente os arquivos que estão atrapalhando o processo.

Você brew link -n nodee excluir manualmente esses arquivos conflitantes e diretórios, então tente brew link nodenovamente.

Trevor Dixon
fonte
4
Levou algum tempo, mas exatamente o que eu precisava fazer. Obrigado :)
Christoffer
Eu tenho o mesmo problema com aspell. Como encontro os arquivos e diretórios conflitantes?
LWZ
33

Estou um pouco atrasado, o que funcionou para mim foi o seguinte:

* npm uninstall npm -g

* brew uninstall node

* brew install node

* sudo rm -rf /usr/local/lib/dtrace/node.d

* brew link node (caused error with permissions)

* sudo chmod 777 /usr/local/lib/dtrace/node.d

* brew link node

Tudo foi bem sucedido após esta sequência

Vai
fonte
Isso finalmente funcionou para mim. Eu estava tendo problemas depois de tentar instalar o nó via brew depois de já ter o npm instalado. Essencialmente quebrou npm para mim. Eu tive que rm -rf na pasta npm e instalar via brew (a desinstalação do npm não funcionou mais para mim). Depois disso, o restante das etapas funcionou perfeitamente.
rdrobinson3
5
sudo chmod 777Essa nunca é a solução certa, se você estiver tendo problemas com permissões, investigue por que elas estão ocorrendo e defina o nível mínimo de permissões necessárias para realizar o trabalho. Este comando permitirá que o arquivo seja modificado por qualquer pessoa no sistema.
bobmagoo
Brilhante. Obrigado. Embora eu não tivesse problemas permanentes em execução brew link nodepela primeira vez.
Bede Constantinides
Em vez de chmod esse diretório, apenas tomei posse dele. chown myuser -R -v / usr / local / lib / dtrace / Eu também tive o problema de que o dtrace não existia como um diretório. O erro foi o mesmo, mas nenhum diretório estava presente.
Jason Short
15

Tente isso. Obtive de outra referência e funcionou para mim.

brew uninstall node
brew update
brew upgrade
brew cleanup
brew install node
sudo chown -R $(whoami) /usr/local
brew link --overwrite node
brew postinstall node
Randula
fonte
brew postinstall nodefoi o bilhete
protótipo
Este foi o bilhete! Por alguma razão, eu tive que executar a atualização 2X do brew e, na segunda vez, ele me pediu para instalar uma atualização no XCode. Entre brew link --overwrite nodee o comando final, tudo parece funcionar. O comando final que você sugeriu não funciona por causa do 'sudo. Em vez disso, usebrew postinstall node
Dani Amsalem 11/03
10

Eu tive o mesmo problema depois de transferir todos os meus aplicativos do meu Mac antigo para o novo.

Encontrei a solução executando brew doctor:

Aviso: links simbólicos quebrados foram encontrados. Remova-os combrew prune

Depois de correr brew prune, Homebrew está finalmente de volta aos trilhos :)

Kévin LR
fonte
4

Meu problema teve uma solução ligeiramente diferente. O diretório em que o brew desejava criar os links simbólicos não era de propriedade do usuário atual.

ls -la /usr/local/bin/lib/node | grep node produziu:

drwxr-xr-x    3 24561  wheel   102 May  4  2012 node
drwxr-xr-x    7 24561  wheel   238 Sep 18 16:37 node_modules

Para mim, o seguinte corrigiu:

sudo chown $(users) /usr/local/bin/lib/node_modules
sudo chown $(users) /usr/local/bin/lib/node

ps. $(users)será expandido para o seu nome de usuário, saiu um pouco do meu caminho para ajudar os usuários preguiçosos;)

morador
fonte
2
Eu tive o mesmo problema. Aparentemente, isso pode ocorrer se você executar "make install" para outro aplicativo manualmente. Recentemente, eu havia feito exatamente isso e a solução foi mostrar como você fez.
Richard Tuttle
4

thx @suweller.

Corrigi o problema:

  bin git:(master)  brew link node
Linking /usr/local/Cellar/node/0.10.25... Warning: Could not link node. Unlinking...

Error: Permission denied - /usr/local/lib/node_modules/npm

Eu tive o mesmo problema que morador:

  bin git:(master)  ls -la /usr/local/lib/ | grep node
drwxr-xr-x   3 24561  wheel   102 11 Okt  2012 node
drwxr-xr-x   3 24561  wheel   102 27 Jan 11:32 node_modules

então eu corrigi esse problema:

  bin git:(master)  sudo chown $(users) /usr/local/lib/node_modules
  bin git:(master)  sudo chown $(users) /usr/local/lib/node

Depois de corrigir esse problema, recebi outro:

  bin git:(master)  brew link node
Linking /usr/local/Cellar/node/0.10.25... Warning: Could not link node. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/node/0.10.25/lib/dtrace/node.d
Target /usr/local/lib/dtrace/node.d already exists. You may need to delete it.
To force the link and overwrite all other conflicting files, do:
  brew link --overwrite formula_name

To list all files that would be deleted:
  brew link --overwrite --dry-run formula_name

Então eu removi o node.d por:

  bin git:(master)  sudo rm /usr/local/lib/dtrace/node.d

obteve outro erro de permissão:

  bin git:(master)  brew link node
Linking /usr/local/Cellar/node/0.10.25... Warning: Could not link node. Unlinking...

Error: Could not symlink file: /usr/local/Cellar/node/0.10.25/lib/dtrace/node.d
/usr/local/lib/dtrace is not writable. You should change its permissions.

e consertou:

  bin git:(master)  sudo chown $(users) /usr/local/Cellar/node/0.10.25/lib/dtrace/node.d

e finalmente tudo funcionou:

  bin git:(master)  brew link node
Linking /usr/local/Cellar/node/0.10.25... 1225 symlinks created
zero3nna
fonte
3

A maioria dos problemas de instalação do brew com o nó é causada por erros de permissão ou por ter o nó instalado anteriormente e, em seguida, tentar instalá-lo via brew. A solução que funcionou para mim finalmente foi:

AVISO: Isso desinstalará o nodejs (várias versões) com cuidado:

  1. Remova o nó via distribuição:

    nó de desinstalação do brew

  2. também fez via força:

    nó de desinstalação do brew --force

  3. Para usar o script Origem: Remover nó :

    curl -O https://raw.githubusercontent.com/DomT4/scripts/master/OSX_Node_Removal/terminatenode.sh

Então:

chmod +x /path/to/terminatenode.sh

Então:

./terminatenode.sh .
  1. Em seguida, certifique-se de executar o seguinte comando:

    chown $ USER / usr / local

  2. Em seguida, faça uma atualização de preparação (continue fazendo isso até que todas as coisas sejam atualizadas):

    atualização de fermentação

  3. Limpe a mistura e execute a atualização novamente (pode ser redundante) e execute o médico para garantir que as coisas estejam no lugar:

    limpeza de cerveja; atualização de fermentação; médico de fermentação

  4. E, finalmente, instale o nó via brew (detalhado):

    nó de instalação -v do brew

AhsenB
fonte
Os números não estão formatando corretamente ... mas as etapas estão lá. Corrigirá o problema de formatação amanhã.
AhsenB
2

a resposta final: mude o proprietário desse diretório para quem você é

sudo chown -R `whoami` /usr/local/include

o que também é recomendado pela fermentação se você executar o médico de fermentação

Bobo
fonte
2

Eu estava recebendo um erro enquanto a instalação que não pode vincular o nó e / usr / local / include não é gravável

A solução abaixo funcionou para mim: - Primeiro crie a pasta de inclusão, observe que isso requer privilégios de sudo

cd /usr/local

sudo mkdir include

sudo chown -R $(whoami) $(brew --prefix)/*

brew link node
Pukhraj soni
fonte
1

Também consegui atrapalhar meu NPM e instalar os pacotes entre essas versões do Homebrew, e não importa quantas vezes eu desvinculei / vinculei e desinstalei / instalei o nó, ele ainda não funcionou.

Como se vê, é necessário remover o NPM do caminho, caso contrário, o Homebrew não o instalará: https://github.com/mxcl/homebrew/blob/master/Library/Formula/node.rb#L117

Espero que isso ajude alguém com o mesmo problema e economize mais ou menos uma hora que eu tive que gastar procurando o problema ...

dain
fonte
Obrigado. Eu tive que fazer isso em combinação com a resposta mais votada para fazê-lo funcionar corretamente.
precisa saber é o seguinte
1

pelo localizador, exclua este arquivo:

/usr/local/lib/dtrace/node.d

no terminal:

$ brew link --overwrite --dry-run node

então:

$ brew link node
monimen
fonte
1
Quando corro brew link --overwrite --dry-run node, vejo o erro No such keg: /usr/local/Cellar/node. o que estou perdendo?
PKHunter
1

Eu tentei todos os métodos e nenhum deles funciona. A maneira mais fácil é reinstalar o nó em https://nodejs.org/en/download/

Basta baixar pkge instalar. Agora eu tenho um trabalho npme nodenovamente.

Caçador
fonte
0

Não sei, se é uma boa ideia ou não: Depois de tentar todas as outras soluções sem sucesso, renomeei / usr / local / lib / dtrace, vinculei o nó e renomeei o diretório novamente. Depois disso, o nó funcionou como esperado.

Alex Maiburg
fonte
0

Eu estava lutando com isso por um tempo. (para mim "npm uninstall npm -g" não fez nada)

Eu tentei várias coisas:

npm uninstall npm -g
brew uninstall node
brew install node

Eu ainda estava tendo alguns problemas e estava recebendo erros quando tentei vincular os arquivos do nó

Finalmente eu tentei isso

brew link --overwrite node

Isso parecia ter consertado. (ele substitui todos os arquivos conflitantes e também vincula o nó ao npm)

Espero que isto ajude

Tanuj
fonte
0

Desinstalei completamente o brew e comecei novamente, apenas para encontrar o mesmo problema novamente.

O Brew parece funcionar, vinculando os binários necessários ao sistema, onde outros métodos de instalação normalmente copiam os arquivos.

Encontrei um conjunto existente de bibliotecas de nós aqui:

/usr/local/include/node

Depois de alguns arranhões na cabeça, lembrei-me de instalar o nó na data em relação a esta versão antiga e não tinha sido via fermentação.

Excluí manualmente toda essa pasta e vinculei com êxito o npm.

Isso explicaria por que o uso da desinstalação do brew ou mesmo a desinstalação do brew não tiveram efeito.

A resposta mais alta coloca isso de maneira muito simples, mas pensei em acrescentar minhas observações sobre o porquê disso ser necessário.

Suponho que vários problemas com outros pacotes de distribuição possam ser causados ​​por instâncias antigas de pacotes que não são de distribuição que estão atrapalhando.

Henry
fonte
0

Estava destruindo minha cabeça no nó de ligação simbólica .. e nada parecia funcionar ... mas finalmente o que funcionou é definir as permissões corretas. Esse 'sudo chown -R $ (whoami) / usr / local' fez o trabalho para mim.

Shahsayyad
fonte
0

Corrigi isso no El Capitan usando o seguinte comando. Honestamente, não faço ideia do que faz, mas pensei em compartilhar, já que isso corrigia o meu problema.

brew link --overwrite node
Fizzix
fonte
-5

Você precisa remover o pacote npm manualmente.

primeiro nó de desvinculação: brew link -n node

remova a pasta npm: rm -R /usr/local/Cellar/node/0.8.10/lib/node_modules/npm

link novamente: brew link node

haverá um link para o novo local da npm

soenke
fonte
5
Isso não remove o novo npm que o brew está tentando instalar? Depois disso, fiquei sem um npm em funcionamento instalado, enquanto a exclusão da pasta OLPM npm como na minha resposta funciona.
Natevw 5/10
parece-me que você está tentando remover o novo pacote - embora certamente seja o antigo que precise ser removido? Na verdade, descobri que havia um link simbólico sobrando para / usr / local / bin / npm #
Caroline