Błąd: krok „zaparz link” nie zakończył się pomyślnie

158

Próbuję zainstalować node.js przez Homebrew. Niestety pojawia się ten błąd:

  ~  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

Więc próbuję ręcznie połączyć węzeł ...

  ~  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

Bez powodzenia, więc próbuję na siłę połączyć węzeł ...

  ~  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

Nie jestem zaznajomiony z dtrace pod żadnym względem i boję się zepsuć uprawnienia, więc spróbowałem 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.

Próbowałem odinstalować węzeł przez brew uninstall nodei ponawiać instalację bez powodzenia.

chandlervdw
źródło
Nie mogę dostać automake. mongodb i węzeł do połączenia z homebrew
piksel 67

Odpowiedzi:

136

Pakiet homebrew dla node.js zawiera teraz ponownie npm, więc zdarzyło mi się to, gdy przegapiłem komunikat pakietu homebrew o usunięciu najpierw wersji samodzielnej.

Zakładając, że tak jak ja, już zepsułeś węzeł / npm, próbując uaktualnić, zanim się o tym npm uninstall npm -gdowiesz, możesz, rm -rf /usr/local/lib/node_modules/npma potem brew link node. Spowoduje to usunięcie samodzielnego, samodzielnie hostowanego pakietu npm (zamiast tego, który chciałby zainstalować) i umożliwia tworzenie linków symbolicznych do dołączonego pakietu z Cellar.

natevw
źródło
9
Po usunięciu npm musisz zamknąć i ponownie otworzyć terminal, aby usunąć go ze ścieżki, aby linkowanie działało poprawnie, jak @dain wspomniał w swoim komentarzu.
kflorence,
To zadziałało dla mnie. W moim przypadku nie mogłem połączyć Elixir i Erlang podczas aktualizacji. Katalogi, których dotyczy problem, nie należały do ​​mojej nazwy użytkownika, ale do „roota”. Postanowiłem usunąć te katalogi i przeinstalować.
Trener Roebuck,
kiedy próbuję połączyć węzeł, otrzymuję: * Błąd: nie ma takiej beczki: / usr / local / Cellar / node * | jakieś pomysły?
SuperUberDuper
1
Po próbie aktualizacji npm spędziłem godzinę próbując to rozgryźć. Brew nie pozwolił mi połączyć, dopóki samodzielna wersja nie została najpierw usunięta. Zalecenia od Nate'a zadziałały dla mnie.
Brandon Clapp,
Jak ponownie zainstalować npm? Czy jest instalowany z węzłem instalacji zaparzania?
marciokoko
153

Używam Mac OS X Mavericks. Próbowałem zainstalować węzeł 0.10.25 i górna odpowiedź nie działa dla mnie.

natevw mówi, rm -rf /usr/local/lib/node_modules/npmale jeśli uprawnienia /usr/local/lib/node_moduleswyglądają tak:

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

wtedy brew nie będzie w stanie utworzyć swojego dowiązania symbolicznego npm w tym katalogu. Oto moje rozwiązanie:

Krok 1: Zaktualizuj Homebrew

$ brew update

Krok 2: Usuń węzeł / npm z każdego miejsca w systemie

Niektóre z tych poleceń nie są konieczne, w zależności od tego, jak w przeszłości instalowałeś node / npm.

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

Uwaga: Miałem zbłąkane pliki węzłów, które znalazłem uruchamiając brew -v link node(co dało mi szczegółowe wyniki błędów łączenia, na które narzekał brew). Może być konieczne:

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

Krok 3: Otwórz nowy terminal i zainstaluj węzeł

$ brew install node
franksort
źródło
1
Dzięki! To bardzo mi pomogło i rozwiązało mój problem. +1
Ricky Mutschlechner
5
Pracowało dla mnie ... chociaż musiałem usunąć katalog node_modules (kończący się na 's') ...
songololo
1
To powinno stać się akceptowaną odpowiedzią. Istotne również dla Yosemite.
Rog
1
Dla mnie to też zadziałało, jednak musiałem uruchomić to polecenie chown, aby ostatecznie zezwolić na łącze. sudo chown -R whoami/ usr / local Sauce
straubcreative
1
Aby usunąć węzeł wszędzie na twoim Macu,
śledziłem
40
sudo chown -R $(whoami) /usr/local 

wystarczyłoby, jak wspomniano w rozwiązywaniu problemów z witryną parzenia

https://github.com/Homebrew/homebrew/wiki/troubleshooting

Talal
źródło
3
Dziwię się, że to polecają. Czy nie byłoby lepiej zrobić: sudo chmod -R g+w /usr/local(chociaż szczerze, oboje mnie przerażają)
getWeberForStackExchange
@getWeberForStackExchange Próbowałem tego, co powiedziałeś, ale nie zrobiło to dla mnie różnicy. Jakieś pomysły, dlaczego tak może być?
f1lt3r
@AlistairMacDonald Prawdopodobnie już to rozwiązałeś, ale prawdopodobnie potrzebowałbym więcej informacji, aby ustalić, dlaczego masz problemy. Zmiana własności wszystkiego w / usr / local ma umożliwić bieżącemu użytkownikowi tworzenie łączy węzłów w strukturze / usr / local. Proponowałem po prostu zmianę uprawnień grupowych do każdego pliku zamiast własności, co jest nieco mniej szalone. Moje polecenie założyło, że twój użytkownik jest częścią grupy, która jest właścicielem całego katalogu / usr / local. Możliwe jest również, że istnieją różne grupy w / usr / local, które wymagałyby chgrppolecenia.
getWeberForStackExchange
Zainstalowałem home-brew pod OS X 10.11 specjalnie po to, aby uzyskać midnight commander i wget. Nie mam zainstalowanego npm. Krok „brew link” nie powiódł się zgodnie z opisem w pytaniu podczas instalacji mc. Ta odpowiedź zadziałała dla mnie; Dokonałem zmiany, ponownie uruchomiłem połączenie za pomocą opcji „brew link midnight-commander”, które następnie działało poprawnie. Następnie wpisanie „mc” w wierszu poleceń wywołało program Midnight Commander zgodnie z oczekiwaniami. Potem "brew install wget" działał bez fanfar. Świetna odpowiedź.
fyngyrz
to polecenie jest zalecane przez brew doctor, ale wolę sudo su, wykonaj polecenia, a następnie zamknij terminal
jchnxu
37

Prawdopodobnie zainstalowałeś już starszą wersję node.js przy użyciu innej metody, więc musisz ręcznie usunąć pliki, które stają na drodze brew.

Zrób brew link -n nodei ręcznie usuń te pliki i katalogi będące w konflikcie, a następnie spróbuj brew link nodeponownie.

Trevor Dixon
źródło
4
Zajęło mi to trochę czasu, ale właśnie to, co musiałem zrobić. Dzięki :)
Christoffer
Mam ten sam problem z aspell. Jak znaleźć pliki i katalogi będące w konflikcie?
LWZ
33

Jestem trochę spóźniony, to, co mi zadziałało, to:

* 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

Po tej sekwencji wszystko się udało

Będzie
źródło
To w końcu zadziałało. Pojawiały się problemy po tym, jak próbowałem zainstalować węzeł za pośrednictwem programu Brew po zainstalowaniu npm. W zasadzie zepsuło mi npm. Musiałem rm -rf folder npm, a następnie zainstalować przez brew (deinstalacja npm już nie działała). Po tym pozostałe kroki działały idealnie.
rdrobinson3
5
sudo chmod 777To nigdy nie jest właściwe rozwiązanie, jeśli masz problemy z uprawnieniami, zbadaj ich przyczyny i ustaw minimalny poziom uprawnień wymagany do wykonania pracy. To polecenie pozwoli na modyfikację pliku przez każdego w systemie.
bobmagoo
Znakomity. Dziękuję Ci. Chociaż brew link nodepo raz pierwszy nie miałem problemów z trwałą trwałością .
Bede Constantinides
Zamiast chmodować ten katalog, po prostu przejąłem go na własność. chown myuser -R -v / usr / local / lib / dtrace / Miałem również problem z tym, że dtrace nie istniał jako katalog. Błąd był taki sam, ale nie było katalogu.
Jason Short
15

Spróbuj tego. Dostałem z innego odniesienia i pracował dla mnie.

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
źródło
brew postinstall nodebył bilet
prototyp
To był bilet! Z jakiegoś powodu musiałem uruchomić brew upgrade 2X i za drugim razem poprosił mnie o zainstalowanie aktualizacji do XCode. Pomiędzy brew link --overwrite nodea ostateczna komenda, to wszystko wydaje się do pracy. Ostatnie sugerowane polecenie nie działa z powodu `` sudo. Zamiast tego użyjbrew postinstall node
Dani Amsalem
10

Miałem ten sam problem po przeniesieniu wszystkich aplikacji ze starego komputera Mac na nowy.

Rozwiązanie znalazłem uruchamiając brew doctor:

Ostrzeżenie: znaleziono uszkodzone linki symboliczne. Usuń je za pomocąbrew prune

Po biegu brew pruneHomebrew wreszcie wraca na właściwe tory :)

Kévin LR
źródło
4

Mój problem miał nieco inne rozwiązanie. Katalog, w którym brew chciał utworzyć dowiązania symboliczne, nie był własnością bieżącego użytkownika.

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

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

U mnie naprawiło to:

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

ps. $(users)zostanie rozszerzony na twoją nazwę użytkownika, zrobiłem trochę co w mojej mocy, aby pomóc leniwym kopiarkom;)

suweller
źródło
2
Miałem ten sam problem. Może to najwyraźniej wystąpić, jeśli ręcznie uruchomisz „make install” dla innej aplikacji. Niedawno właśnie to zrobiłem, a rozwiązaniem było chownanie tak jak ty.
Richard Tuttle
4

thx @suweller.

Naprawiłem problem:

  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

Miałem ten sam problem co Sueller:

  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

więc naprawiłem ten problem przez:

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

po naprawieniu tego problemu otrzymałem kolejny:

  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

Więc usunąłem node.d przez:

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

dostałem inny błąd uprawnień:

  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.

i naprawiłem to:

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

i wreszcie wszystko działało:

  bin git:(master)  brew link node
Linking /usr/local/Cellar/node/0.10.25... 1225 symlinks created
zero3nna
źródło
3

Większość problemów z instalacją brew w węźle jest spowodowana błędami uprawnień lub wcześniejszą instalacją węzła, a następnie próbą zainstalowania go przez brew. Rozwiązanie, które w końcu zadziałało, to:

OSTRZEŻENIE: Spowoduje to odinstalowanie nodejs (wiele wersji) z ostrożnością:

  1. Usuń węzeł za pomocą naparu:

    zaparz węzeł deinstalacyjny

  2. również siłą:

    brew odinstaluj węzeł --force

  3. Aby użyć skryptu Źródło: Usuń węzeł :

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

Następnie:

chmod +x /path/to/terminatenode.sh

Następnie:

./terminatenode.sh .
  1. Następnie wykonaj następujące polecenie:

    chown $ USER / usr / local

  2. Następnie wykonaj aktualizację naparu (rób to, aż wszystkie rzeczy zostaną zaktualizowane):

    napar aktualizacja

  3. Wyczyść napar i ponownie uruchom aktualizację (może być zbędna) i uruchom lekarza, aby upewnić się, że wszystko jest na swoim miejscu:

    czyszczenie naparu; napar aktualizacja; zaparzać lekarza

  4. I na koniec zainstaluj węzeł przez brew (verbose):

    brew install -v node

AhsenB
źródło
Liczby nie są poprawnie formatowane ... ale kroki są dostępne. Jutro naprawi problem z formatowaniem.
AhsenB,
2

ostateczna odpowiedź: zmień właściciela tego katalogu na kimkolwiek jesteś

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

co jest również zalecane przez napar, jeśli prowadzisz warzelnię

Bobo
źródło
2

Otrzymałem błąd podczas instalacji, która nie mogła połączyć węzła i / usr / local / include nie jest zapisywalna

Poniższe rozwiązanie zadziałało dla mnie: - Najpierw utwórz folder dołączania, pamiętaj, że wymaga to uprawnień sudo

cd /usr/local

sudo mkdir include

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

brew link node
Pukhraj soni
źródło
1

Udało mi się również zepsuć mój NPM i zainstalować pakiety między tymi wersjami Homebrew i bez względu na to, ile razy odłączałem / łączyłem i odinstalowałem / zainstalowałem węzeł, nadal nie działał.

Okazuje się, że musisz usunąć NPM ze ścieżki, inaczej Homebrew go nie zainstaluje: https://github.com/mxcl/homebrew/blob/master/Library/Formula/node.rb#L117

Mam nadzieję, że pomoże to komuś z tym samym problemem i zaoszczędzi tej godziny, którą musiałem poświęcić na szukanie problemu ...

dain
źródło
Dziękuję Ci. Musiałem to zrobić w połączeniu z najwyższą głosowaną odpowiedzią, aby działał poprawnie.
kflorence,
1

przez Finder, Usuń ten plik:

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

w terminalu:

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

następnie:

$ brew link node
monimen
źródło
1
Kiedy biegnę brew link --overwrite --dry-run node, widzę błąd No such keg: /usr/local/Cellar/node. czego mi brakuje?
PKHunter
1

Wypróbowałem wszystkie metody i żadna z nich nie działa. Najłatwiej jest przeinstalować węzeł z https://nodejs.org/en/download/

Po prostu pobierz pkgi zainstaluj go. Teraz mam pracę npmi nodeznowu.

myśliwy
źródło
0

Nie wiem, czy to dobry pomysł, czy nie: po wypróbowaniu wszystkich innych rozwiązań bez powodzenia zmieniłem nazwę / usr / local / lib / dtrace, połączony węzeł i ponownie zmieniłem nazwę katalogu. Następnie węzeł działał zgodnie z oczekiwaniami.

Alex Maiburg
źródło
0

Przez jakiś czas z tym walczyłem. (dla mnie "npm uninstall npm -g" nic nie dało)

Próbowałem wielu rzeczy:

npm uninstall npm -g
brew uninstall node
brew install node

Nadal miałem pewne problemy i otrzymywałem błędy, gdy próbowałem połączyć pliki węzłów

Wreszcie spróbowałem

brew link --overwrite node

Wyglądało na to, że to naprawiło. (nadpisuje wszystkie kolidujące pliki, a także łączy węzeł i npm)

Mam nadzieję że to pomoże

Tanuj
źródło
0

Całkowicie odinstalowałem napar i zacząłem od nowa, tylko po to, aby ponownie znaleźć ten sam problem.

Wydaje się, że Brew działa poprzez dowiązanie symboliczne do wymaganych plików binarnych w systemie, gdzie inne metody instalacji zwykle kopiowałyby pliki.

Znalazłem tutaj istniejący zestaw bibliotek węzłów:

/usr/local/include/node

Po pewnym drapaniu się po głowie przypomniałem sobie, jak zainstalowałem node w tej starej wersji i nie było to przez brew.

Ręcznie usunąłem cały ten folder i pomyślnie połączyłem npm.

To wyjaśniałoby, dlaczego użycie funkcji deinstalacji naparu lub nawet odinstalowania samego naparu nie przyniosło żadnego efektu.

Najwyżej sklasyfikowana odpowiedź przedstawia to bardzo prosto, ale pomyślałem, że dodam moje spostrzeżenia dotyczące tego, dlaczego jest to konieczne.

Domyślam się, że kilka problemów z innymi pakietami warzenia może być spowodowanych przez stare, nieparzone wystąpienia pakietów, które przeszkadzają.

Henz
źródło
0

Niszczyło mi głowę w węźle dowiązania symbolicznego… i wydawało się, że nic nie działa… ale w końcu zadziałało ustawienie odpowiednich uprawnień. To „sudo chown -R $ (whoami) / usr / local” wykonało pracę za mnie.

Shahsayyad
źródło
0

Naprawiłem to w El Capitan za pomocą następującego polecenia. Szczerze mówiąc, nie mam pojęcia, co to robi, ale pomyślałem, że podzielę się, ponieważ rozwiązało mój problem.

brew link --overwrite node
Fizzix
źródło
-5

Musisz ręcznie usunąć pakiet npm.

pierwszy węzeł odłączenia: brew link -n node

usuń folder npm: rm -R /usr/local/Cellar/node/0.8.10/lib/node_modules/npm

połącz ponownie: brew link node

będzie miękki link do nowej lokalizacji npm

soenke
źródło
5
Czy to nie usuwa NOWEGO npm, który brew próbuje zainstalować? Po tym pozostawiłem bez zainstalowanego działającego npm, podczas gdy usunięcie starego folderu npm, jak w mojej odpowiedzi, działa.
natevw
wydaje mi się, że próbujesz usunąć również nowy pakiet - ale na pewno to stary, który należy usunąć? Właściwie odkryłem, że pozostał link symboliczny do / usr / local / bin / npm
Caroline