Hata: 'Demleme bağlantısı' adımı başarıyla tamamlanmadı


158

Homebrew üzerinden node.js'yi yüklemeye çalışıyorum. Ne yazık ki, bu hatayı alıyorum:

  ~  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

Sonra düğümü elle bağlamaya çalışıyorum ...

  ~  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

Şans yok, bu yüzden düğümü zorla bağlamaya çalışıyorum ...

  ~  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

Ben herhangi bir konuda dtrace aşina değilim ve izinleri ile karışıklık korkuyorum, bu yüzden sudo denedim ..

 ~ 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.

Düğümü kaldırmayı brew uninstall nodeve yüklemeyi şanssız yeniden denemeyi denedim .


Automake alamıyorum. mongodb ve düğüm homebrew ile bağlamak için
piksel 67

Yanıtlar:


136

Node.js için homebrew paketi şimdi tekrar npm içeriyor, bu yüzden önce homebrew paketinin bağımsız sürümü kaldırmayla ilgili mesajını kaçırdığımda bu oldu.

Benim gibi, önce bilmeden önce yükseltme girişiminde bulunarak düğümü / npm'yi kırdığınızı varsayarsak, npm uninstall npm -gyapabilirsiniz rm -rf /usr/local/lib/node_modules/npmve sonra brew link node. Bu, bağımsız kendi kendine barındırılan npm paketini kaldırır (bir demlemek yüklemek istediği yerine) ve demlemek için paketlenmiş olanı Cellar'dan symlink'e izin verir.


9
Npm'yi kaldırdıktan sonra, bağlantısında düzgün çalışabilmesi için yorumunda @dain'de belirtildiği gibi terminalinizi yolunuzdan kaldırmak için kapatıp yeniden açmanız gerekir.
kflorence

Bu benim için çalıştı. Benim durumumda, yükseltme sırasında Elixir ve Erlang'ı bağlayamadım. Endişe duyduğunuz dizinler kullanıcı adıma ait değil, "root" a aitti. Bu dizinleri silmeye ve yeniden yüklemeye karar verdim.
Antrenör Roebuck

Bağlantı düğümünü denediğimde: * Hata: Böyle bir fıçı yok: / usr / local / Cellar / node * | herhangi bir fikir?
SuperUberDuper

1
Npm'yi yükseltmeye çalıştıktan sonra, bunu anlamaya çalışırken bir saat geçirdim. Brew, bağımsız sürüm ilk önce kaldırılana kadar bağlantı kurmama izin vermedi. Nate'den gelen öneriler benim için çalıştı.
Brandon Clapp

Npm'yi nasıl yeniden yüklerim? Veya demleme kurulum düğümü ile mi kurulur?
marciokoko

153

Mac OS X Mavericks çalıştırıyorum. 0.10.25 düğümünü kurmaya çalıştım ve üst yanıt benim için çalışmadı.

natevw diyor rm -rf /usr/local/lib/node_modules/npmama izinler şöyle /usr/local/lib/node_modulesgörünüyorsa:

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

demlemek o dizinde npm sembolik bağlantısını oluşturamaz. İşte benim çözümüm:

Adım 1: Homebrew'u güncelleyin

$ brew update

Adım 2: Sisteminizin her yerinde düğümü / npm'yi kaldırın

Düğüm / npm'yi geçmişte nasıl yüklediğinize bağlı olarak bu komutlardan bazıları gerekli değildir.

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

Not: Çalışarak bulduğum başıboş düğüm dosyaları vardı brew -v link node(bu bana demlemek şikayet bağlantı hatalarının ayrıntılı çıktı verdi). Şunları yapmanız gerekebilir:

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

Adım 3: Yeni bir terminal açın ve düğümü kurun

$ brew install node

1
Teşekkürler! Bu bana çok yardımcı oldu ve sorunumu çözdü. +1
Ricky Mutschlechner

5
Benim için çalıştı ... gerçi ('s' ile biten)
node_modules

1
Bu kabul edilen cevap olmalı. Yosemite için de geçerli.
Rog

1
Bu benim için de çalıştı, ancak sonunda bağlantıya izin vermek için bu chown komutunu çalıştırmak zorunda kaldım. sudo chown -R whoami/ usr / yerel Sos
straubcreative


40
sudo chown -R $(whoami) /usr/local 

demlemek yerinde sorun giderme belirtilen sorun yok

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


3
Bunu tavsiye şaşırdım. Yapmak daha iyi olmaz: sudo chmod -R g+w /usr/local(dürüst olmak gerekirse, her ikisi de beni korkutuyor)
getWeberForStackExchange

@getWeberForStackExchange Söylediklerini denedim ama benim için bir fark yaratmadı. Bunun neden olabileceğine dair bir fikrin var mı?
f1lt3r

@AlistairMacDonald Muhtemelen şimdiye kadar bunu denediniz, ama muhtemelen neden sorun yaşadığınızı çözmek için daha fazla bilgiye ihtiyacım var. / Usr / local içindeki her şeyin sahipliğinin değiştirilmesinin, mevcut kullanıcının / usr / local yapısında düğüm bağlantıları oluşturmasına izin vermesi gerekir. Biraz daha az çılgınca sahiplik yerine her dosyanın grup izinlerini değiştirmeyi öneriyordum. Komutum, kullanıcınızın tüm / usr / local grubunun bir parçası olduğunu varsaydı. / Usr / local içinde chgrpkomut gerektiren farklı grupların olması da mümkündür .
getWeberForStackExchange

Özellikle gece yarısı komutanı ve wget almak için OS X 10.11 altında ev demleme kurdum. Yüklü npm yok. "Demleme bağlantısı" adımı mc kurulumu sırasında soruda açıklandığı gibi başarısız oldu. Bu cevap benim için çalıştı; Değişikliği yaptım, bağlantıyı "brew link midnight-commander" ile yeniden çalıştırdım, sonra iyi çalıştı. Bundan sonra, komut satırına "mc" yazmak beklendiği gibi gece yarısı komutanını getirdi. Bundan sonra, "demlemek kurulum wget" hiçbir fanfare ile çalıştı. Mükemmel cevap.
fyngyrz

Bu komut tarafından önerilir brew doctor, ancak tercih ediyorum sudo su, komutları yürütün ve terminali kapatın
jchnxu

37

Muhtemelen farklı bir yöntem kullanarak node.js'nin eski bir sürümünü zaten yüklemişsinizdir, bu nedenle demlemek için gelen dosyaları el ile kaldırmanız gerekir.

brew link -n nodeÇakışan dosyaları ve dizinleri yapın ve el ile silin, ardından brew link nodetekrar deneyin .


4
Biraz zaman aldı, ama ne yapmam gerekiyordu. Teşekkürler :)
Christoffer

İle aynı problemim var aspell. Çakışan dosyaları ve dizinleri nasıl bulurum?
LWZ

33

Biraz geç kaldım, benim için işe yarayan şuydu:

* 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

Bu diziden sonra her şey başarılı oldu


Bu sonunda benim için çalıştı. Zaten npm yüklendikten sonra demlemek yoluyla düğüm kurmaya çalıştıktan sonra sorunları alıyordum. Aslında benim için npm kırdı. Ben rm -rf npm klasörü daha sonra demlemek ile yüklemek zorunda kaldı (npm kaldırma artık benim için çalıştı). Bundan sonra adımların geri kalanı mükemmel çalıştı.
rdrobinson3

5
sudo chmod 777Bu hiçbir zaman doğru çözüm değildir, izin sorunları yaşıyorsanız, neden oluştuğunu araştırın ve işi yapmak için gereken minimum izin düzeyini ayarlayın. Bu komut, dosyanın sistemdeki herkes tarafından değiştirilmesine izin verir.
bobmagoo

Parlak. Teşekkür ederim. brew link nodeİlk kez çalışan perma sorunum olmasa da .
Bede Constantinides

Bu dizini chmod yerine sadece onun sahipliğini aldım. chown myuser -R -v / usr / local / lib / dtrace / Ben de dtrace bir dizin olarak var sorun vardı. Hata aynıydı, ancak dizin yoktu.
Jason Short

15

Bunu dene. Başka bir referanstan aldım ve benim için çalıştı.

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

brew postinstall nodebiletimdi
prototip

Bilet buydu! Nedense, demlemek yükseltme 2X çalıştırmak zorunda kaldı ve ikinci kez XCode için bir güncelleme yüklememi istedi. Arasında brew link --overwrite nodeve son komut, tüm işin görünüyor. Önerdiğiniz son komut 'sudo nedeniyle çalışmıyor. Bunun yerine, kullanınbrew postinstall node
Dani Amsalem

10

Tüm uygulamalarımı eski Mac bilgisayarımdan yenisine aktardıktan sonra da aynı sorunu yaşadım.

Çözümü çalıştırarak buldum brew doctor:

Uyarı: Bozuk semboller bulundu. Onları ile kaldırbrew prune

brew pruneKoştuktan sonra Homebrew nihayet tekrar yola çıktı :)


4

Sorunumun biraz farklı bir çözümü vardı. Demlemenin simgeleri oluşturmak istediği dizinin sahibi geçerli kullanıcı değildi.

ls -la /usr/local/bin/lib/node | grep node vermiştir:

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

Benim için aşağıdakiler düzeltildi:

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

ps. $(users)kullanıcı adınıza genişleyecek, tembel kopya pastacılarına yardım etmek için yolumdan biraz dışarı çıkacak;)


2
Aynı sorunu yaşadım. Bu, başka bir uygulama için manuel olarak "make install" komutunu çalıştırdığınızda ortaya çıkabilir. Kısa bir süre önce bunu yaptım ve çözüm de sizin yaptığınız gibi seçilmektir.
Richard Tuttle

4

thx @suweller.

Sorunu çözdüm:

  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

Suweller ile aynı sorunu yaşadım:

  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

bu yüzden bu sorunu giderdim:

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

Bu sorunu giderdikten sonra başka bir tane aldım:

  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

Böylece node.d kaldırıldı:

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

başka bir izin hatası aldım:

  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.

ve düzelttim:

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

ve son olarak her şey işe yaradı:

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

3

Düğüme ilişkin demleme yükleme sorunlarının çoğu, izin hataları veya daha önce düğümün kurulu olması ve daha sonra demleme yoluyla yüklemeye çalışmasından kaynaklanır. Sonunda benim için çalışan çözüm:

UYARI: Bu, düğümleri (birden çok sürüm) kullanımını dikkatle kaldıracaktır:

  1. Demlemeyi demleme yoluyla çıkarın:

    demlemek kaldırma düğümü

  2. ayrıca zorla yaptı:

    demlemek kaldırma düğümü - kuvvet

  3. Komut dosyasını kullanmak için Kaynak: Düğümü kaldır :

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

Sonra:

chmod +x /path/to/terminatenode.sh

Sonra:

./terminatenode.sh .
  1. Ardından aşağıdaki komutu yaptığınızdan emin olun:

    chown $ USER / usr / yerel

  2. Ardından bir demleme güncellemesi yapın (her şey güncellenene kadar bunu yapmaya devam edin):

    demlemek güncelleme

  3. Demlemeyi temizleyin ve güncellemeyi tekrar çalıştırın (gereksiz olabilir) ve işlerin yerinde olduğundan emin olmak için doktoru çalıştırın:

    demlemek temizleme; demlemek güncelleme; demlemek doktor

  4. Ve son olarak düğümü demlemekle (ayrıntılı) yükleyin:

    demlemek kurulum -v düğümü


Sayılar doğru biçimlendirilmiyor ... ancak adımlar var. Biçimlendirme sorununu yarın düzeltir.
AhsenB

2

nihai cevap: o dizinin sahibini kim olduğunuza göre değiştirin

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

demlemek doktor çalıştırırsanız demlemek için de önerilir


2

Yükleme düğümü ve / usr / local / include'u bağlayamayan bir hata alıyordum

Aşağıdaki çözüm benim için çalıştı: - Öncelikle include klasörünü oluşturun, bunun sudo ayrıcalıkları gerektirdiğini unutmayın

cd /usr/local

sudo mkdir include

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

brew link node

1

Ayrıca, bu Homebrew sürümleri arasında NPM'mi ve kurulu paketleri karıştırmayı başardım ve ne kadar zaman bağlantısız kaldım / bağlandım ve kaldırdım / kurdum düğüm hala işe yaramadı.

Anlaşıldığı gibi NPM'yi yoldan kaldırmanız gerekiyor, aksi takdirde Homebrew yüklemez: https://github.com/mxcl/homebrew/blob/master/Library/Formula/node.rb#L117

Umarım bu aynı problemi olan birine yardımcı olur ve o saati kurtarır. Sorunu aramak için harcamak zorunda kaldım ...


Teşekkür ederim. Düzgün çalışması için bunu en yüksek oyu alan cevapla birlikte yapmak zorunda kaldım.
kflorence

1

Bulucu tarafından, Bu dosyayı sil:

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

terminalde:

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

sonra:

$ brew link node

1
Koştuğumda brew link --overwrite --dry-run nodehatayı görüyorum No such keg: /usr/local/Cellar/node. Neyi kaçırıyorum?
PKHunter


0

Bilmiyorum, iyi bir fikir ya da değil: Diğer tüm çözümleri başarıyla denedikten sonra, sadece / usr / local / lib / dtrace, bağlı düğüm yeniden adlandırdı ve dizini yeniden yeniden adlandırdı. Bundan sonra, düğüm beklendiği gibi çalıştı.


0

Bir süredir bununla uğraşıyordum. (benim için "npm kaldırma npm -g" hiçbir şey yapmadı)

Bir sürü şey denedim:

npm uninstall npm -g
brew uninstall node
brew install node

Hala bazı sorunlar yaşıyordum ve düğüm dosyalarını bağlamaya çalıştığımda hata alıyordum

Sonunda bunu denedim

brew link --overwrite node

Bunu düzeltmiş gibiydi. (çakışan dosyaların üzerine yazar ve düğümü ve npm'yi bağlar)

Bu yardımcı olur umarım


0

Demlemeyi tamamen çıkardım ve tekrar başladım, sadece aynı sorunu tekrar bulmak için.

Brew, gerekli ikili dosyaları sisteminize diğer kurulum yöntemlerinin genellikle dosyaları kopyalayacağı yere bağlayarak çalışıyor gibi görünüyor.

Burada varolan bir düğüm kitaplığı kümesi buldum:

/usr/local/include/node

Bazı kafa çizilmesinden sonra, bu eski versiyona karşı tarihte düğüm taktığımı hatırladım ve demleme yoluyla olmadı.

Bu klasörü el ile sildim ve başarıyla npm bağladım.

Bu, demleme kaldırma veya hatta demleme demiri kullanımının neden bir etkisi olmadığını açıklar.

En üst sıradaki cevap bunu çok basit bir şekilde ortaya koyuyor, ancak neden gerekli olduğuna dair gözlemlerimi ekleyeceğimi düşündüm.

Diğer demlemek paketleri ile ilgili sorunların bir sürü eski demlemek olmayan paketler yolunda olmasından kaynaklanıyor olabilir sanırım.


0

Symlinking düğümü kafamı yıkmıştı .. ve hiçbir şey işe yaramadı ... ama nihayet işe yarayan doğru izinleri ayarlamak. Bu 'sudo chown -R $ (whoami) / usr / local' işi benim için yaptı.


0

Aşağıdaki komutu kullanarak bunu El Capitan'da düzelttim. Dürüst olmak gerekirse, ne yaptığı hakkında hiçbir fikrim yok, ama sorunumu çözdüğünden beri paylaşacağımı düşündüm.

brew link --overwrite node

-5

Npm paketini manuel olarak kaldırmanız gerekir.

ilk bağlantıyı kaldırma düğümü: brew link -n node

npm klasörünü kaldır: rm -R /usr/local/Cellar/node/0.8.10/lib/node_modules/npm

tekrar bağlantı: brew link node

npm'nin yeni konumuna yumuşak bir bağlantı olacak


5
Bu, demlemenin kurmaya çalıştığı YENİ npm'yi kaldırmıyor mu? Bunu takiben çalışan npm yüklenmeden bırakıldı, oysa OLD npm klasörünü silme cevabımdaki gibi çalışıyor.
natevw

Bana da yeni paketi kaldırmaya çalıştığın anlaşılıyor - oysa kaldırılması gereken eskisi mu? Aslında / usr / local / bin / npm için kalan bir symlink olduğunu buldum
Caroline
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.