Kesalahan: Langkah 'brew link' tidak berhasil diselesaikan

158

Saya mencoba menginstal node.js melalui Homebrew. Sayangnya, saya mendapatkan kesalahan ini:

  ~  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

Jadi saya mencoba untuk menghubungkan simpul secara manual ...

  ~  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

Tidak berhasil, jadi saya mencoba menghubungkan simpul dengan paksa ...

  ~  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

Saya tidak terbiasa dengan dtrace dalam hal apa pun dan saya takut mengacaukan izin, jadi saya mencoba 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.

Saya sudah mencoba menghapus simpul melalui brew uninstall nodedan mencoba kembali pemasangan tanpa hasil.

chandlervdw
sumber
Saya tidak bisa mendapatkan automake. mongodb dan simpul untuk dihubungkan dengan homebrew
pixel 67

Jawaban:

136

Paket homebrew untuk node.js sekarang termasuk npm lagi, jadi ini terjadi pada saya ketika saya melewatkan pesan paket homebrew tentang menghapus versi mandiri terlebih dahulu.

Dengan asumsi, seperti saya, Anda telah merusak node / npm dengan mencoba upgrade sebelum tahu npm uninstall npm -gterlebih dahulu, Anda bisa rm -rf /usr/local/lib/node_modules/npmdan kemudian brew link node. Hal ini menghilangkan mandiri diri-host paket NPM (daripada satu minuman ingin menginstal) dan memungkinkan minuman symlink yang dibundel satu dari Cellar.

natevw
sumber
9
Setelah Anda menghapus npm, Anda perlu menutup dan membuka kembali terminal Anda untuk menghapusnya dari jalur Anda agar tautan dapat berfungsi dengan baik, seperti yang disebutkan @dain dalam komentarnya.
kflorence
Ini berhasil untuk saya. Dalam kasus saya, saya tidak dapat menautkan Elixir dan Erlang selama peningkatan. Direktori yang menjadi perhatian tidak dimiliki oleh nama pengguna saya, tetapi dimiliki oleh "root". Saya memutuskan untuk menghapus direktori itu dan menginstal ulang.
Pelatih Roebuck
ketika saya mencoba tautan simpul saya mendapatkan: * Kesalahan: Tidak ada tong seperti itu: / usr / local / Cellar / node * | ada ide?
SuperUberDuper
1
Setelah mencoba memutakhirkan npm, saya menghabiskan satu jam mencoba mencari tahu ini. Brew tidak akan membiarkan saya menautkan hingga versi mandiri dihapus terlebih dahulu. Rekomendasi dari nate bekerja untuk saya.
Brandon Clapp
Bagaimana cara menginstal ulang npm? Atau apakah itu diinstal dengan simpul instal buatan?
marciokoko
153

Saya menjalankan Mac OS X Mavericks. Saya mencoba menginstal node 0.10.25 dan jawaban teratas tidak berfungsi untuk saya.

natevw mengatakan untuk rm -rf /usr/local/lib/node_modules/npmtetapi jika izin /usr/local/lib/node_modulesterlihat seperti ini:

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

maka minuman tidak akan dapat membuat symlink npm di direktori itu. Inilah solusi saya:

Langkah 1: Perbarui Homebrew

$ brew update

Langkah 2: Hapus node / npm di mana-mana di sistem Anda

Beberapa dari perintah ini tidak diperlukan tergantung pada bagaimana Anda menginstal node / npm di masa lalu.

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

Catatan: Saya memiliki file nyasar simpul yang saya temukan dengan menjalankan brew -v link node(yang memberi saya output verbose dari kesalahan pembuatan bir yang dikeluhkan). Anda mungkin perlu:

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

Langkah 3: Buka terminal baru dan instal simpul

$ brew install node
franksort
sumber
1
Terima kasih! Ini banyak membantu saya dan memperbaiki masalah saya. +1
Ricky Mutschlechner
5
Bekerja untuk saya ... walaupun saya harus menghapus direktori node_modules (berakhiran 's') ...
songololo
1
Ini harus menjadi jawaban yang diterima. Relevan untuk Yosemite juga.
Rog
1
Ini juga bekerja untuk saya, namun saya harus menjalankan perintah chown ini untuk akhirnya mengizinkan tautannya. sudo chown -R whoami/ usr / Saus
straubcreative
1
Untuk menghapus simpul di mana-mana di mac Anda, saya mengikuti artikel ini: stackabuse.com/how-to-uninstall-node-js-from-mac-osx
ankitkpd
40
sudo chown -R $(whoami) /usr/local 

akan baik-baik saja seperti yang disebutkan dalam pemecahan masalah situs buatan

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

Talal
sumber
3
Saya terkejut mereka merekomendasikan ini. Bukankah lebih baik untuk melakukan: sudo chmod -R g+w /usr/local(walaupun jujur, keduanya membuatku takut)
getWeberForStackExchange
@getWeberForStackExchange Saya mencoba apa yang Anda katakan tetapi itu tidak membuat perbedaan bagi saya. Adakah ide mengapa itu terjadi?
f1lt3r
@AlistairMacDonald Anda mungkin sudah menyelesaikan ini sekarang, tapi saya mungkin perlu lebih banyak info untuk mengetahui mengapa Anda mengalami masalah. Mengubah kepemilikan segala sesuatu di / usr / local seharusnya memungkinkan pengguna saat ini untuk membuat tautan node dalam struktur / usr / local. Saya mengusulkan untuk hanya mengubah izin grup dari setiap file alih-alih kepemilikan, yang sedikit kurang gila. Perintah saya berasumsi bahwa pengguna Anda adalah bagian dari grup yang memiliki semua / usr / local. Mungkin juga ada beberapa grup di / usr / local, yang membutuhkan chgrpperintah.
getWeberForStackExchange
Saya menginstal buatan sendiri di bawah OS X 10.11 khusus untuk mendapatkan komandan tengah malam dan wget. Saya tidak menginstal npm. Langkah "brew link" gagal seperti dijelaskan dalam pertanyaan selama instalasi mc. Jawaban ini berhasil untuk saya; Saya membuat perubahan, menjalankan kembali tautan dengan "brew link midnight-commander", yang kemudian berjalan dengan baik. Setelah itu, mengetik "mc" di baris perintah menampilkan komandan tengah malam seperti yang diharapkan. Setelah itu, "brew install wget" bekerja tanpa gembar-gembor. Jawaban yang bagus
fyngyrz
perintah ini direkomendasikan oleh brew doctor, tetapi saya lebih suka sudo su, jalankan perintah kemudian tutup terminal
jchnxu
37

Anda mungkin sudah menginstal versi node.js yang lebih lama menggunakan metode yang berbeda, jadi Anda perlu menghapus file yang menghalangi cara pembuatannya secara manual.

Lakukan brew link -n nodedan hapus file dan direktori yang bertentangan secara manual, lalu coba brew link nodelagi.

Trevor Dixon
sumber
4
Butuh waktu, tetapi hanya apa yang perlu saya lakukan. Terima kasih :)
Christoffer
Saya memiliki masalah yang sama dengan aspell. Bagaimana cara menemukan file dan direktori yang bertentangan?
LWZ
33

Saya agak terlambat, yang berhasil bagi saya adalah ini:

* 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

Semuanya berhasil setelah urutan ini

Akan
sumber
Ini akhirnya berhasil untuk saya. Saya mendapatkan masalah setelah saya mencoba menginstal node via minuman setelah npm diinstal. Ini pada dasarnya npm rusak bagi saya. Saya harus rm -rf folder npm kemudian instal melalui minuman (uninstall npm tidak lagi bekerja untuk saya). Setelah itu sisa langkah berjalan dengan sempurna.
rdrobinson3
5
sudo chmod 777Ini bukan solusi yang tepat, jika Anda memiliki masalah izin, selidiki mengapa itu terjadi dan setel tingkat minimum izin yang diperlukan untuk melakukan pekerjaan itu. Perintah ini akan memungkinkan file untuk dimodifikasi oleh siapa saja di sistem.
bobmagoo
Cemerlang. Terima kasih. Meskipun saya tidak punya masalah perms berjalan brew link nodeuntuk pertama kalinya.
Bede Constantinides
Daripada chmod direktori itu saya hanya mengambil kepemilikannya. chown myuser -R -v / usr / local / lib / dtrace / Saya juga punya masalah bahwa dtrace tidak ada sebagai direktori. Kesalahannya sama, tetapi tidak ada direktori.
Jason Short
15

Coba ini. Dapatkan dari referensi lain dan bekerja untuk saya.

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
sumber
brew postinstall nodeadalah tiket
prototipe
Ini tiketnya! Untuk beberapa alasan, saya harus menjalankan upgrade bir 2X dan pada kedua kalinya meminta saya untuk menginstal pembaruan ke XCode. Antara brew link --overwrite nodedan perintah terakhir, semuanya tampaknya berhasil. Perintah terakhir yang Anda sarankan tidak berfungsi karena 'sudo. Sebagai gantinya, gunakanbrew postinstall node
Dani Amsalem
10

Saya memiliki masalah yang sama setelah mentransfer semua aplikasi saya dari Mac lama saya ke yang baru.

Saya menemukan solusinya dengan menjalankan brew doctor:

Peringatan: Symlinks rusak ditemukan. Hapus denganbrew prune

Setelah berlari brew prune, Homebrew akhirnya kembali ke jalur :)

Kévin LR
sumber
4

Masalah saya punya solusi yang sedikit berbeda. Direktori tempat minuman ingin membuat symlink tidak dimiliki oleh pengguna saat ini.

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

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

Bagi saya, berikut ini memperbaikinya:

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

ps. $(users)akan diperluas ke nama pengguna Anda, sedikit keluar dari cara saya untuk membantu copy paste malas;)

suweller
sumber
2
Saya memiliki masalah yang sama. Ini tampaknya dapat terjadi jika Anda menjalankan "make install" untuk beberapa aplikasi lain secara manual. Saya baru saja melakukan hal itu dan solusinya adalah mengunyah seperti yang Anda lakukan.
Richard Tuttle
4

thx @suweller.

Saya memperbaiki masalahnya:

  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

Saya memiliki masalah yang sama dengan suweller:

  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

jadi saya memperbaiki masalah ini dengan:

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

setelah saya memperbaiki masalah ini saya mendapat satu lagi:

  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

Jadi saya menghapus node.d oleh:

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

mendapat kesalahan izin lainnya:

  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.

dan memperbaikinya:

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

dan akhirnya semuanya bekerja:

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

Sebagian besar masalah pemasangan bir dengan simpul disebabkan oleh kesalahan izin atau memiliki simpul yang dipasang sebelumnya dan kemudian mencoba untuk menginstalnya melalui minuman. Solusi yang berhasil bagi saya akhirnya adalah:

PERINGATAN: Ini akan menghapus instalan nodejs (beberapa versi) dengan hati-hati:

  1. Hapus simpul melalui minuman:

    buat simpul instalan

  2. juga melakukannya dengan paksa:

    buat simpul instalan - force

  3. Untuk menggunakan Sumber skrip: Hapus simpul :

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

Kemudian:

chmod +x /path/to/terminatenode.sh

Kemudian:

./terminatenode.sh .
  1. Kemudian pastikan untuk melakukan perintah berikut:

    chown $ USER / usr / local

  2. Kemudian lakukan pembaruan minuman (terus lakukan ini sampai semua hal diperbarui):

    pembaruan minuman

  3. Bersihkan minuman dan jalankan pembaruan lagi (mungkin berlebihan) dan jalankan dokter untuk memastikan semuanya ada:

    menyeduh minuman; pembaruan minuman; buatlah dokter

  4. Dan akhirnya instal node via brew (verbose):

    buat install -v node

AhsenB
sumber
Angka-angka tidak diformat dengan benar ... tetapi langkah-langkahnya ada di sana. Akan memperbaiki masalah format besok.
AhsenB
2

jawaban terakhir: ubah pemilik direktori itu menjadi siapa pun Anda

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

yang juga direkomendasikan oleh minuman jika Anda menjalankan dokter minuman

Bobo
sumber
2

Saya mendapatkan kesalahan saat instalasi yang tidak dapat menghubungkan simpul dan / usr / local / include tidak dapat ditulis

Solusi di bawah ini berfungsi untuk saya: - Pertama buat folder include, perhatikan bahwa ini membutuhkan hak akses sudo

cd /usr/local

sudo mkdir include

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

brew link node
Pukhraj soni
sumber
1

Saya juga berhasil mengacaukan NPM saya dan menginstal paket-paket di antara versi-versi Homebrew ini dan tidak peduli berapa kali saya memutuskan tautan / mencopot dan mencopot pemasangan / instal masih tidak berfungsi.

Ternyata Anda harus menghapus NPM dari jalur, jika tidak, Homebrew tidak akan menginstalnya: https://github.com/mxcl/homebrew/blob/master/Library/Formula/node.rb#L117

Semoga ini akan membantu seseorang dengan masalah yang sama dan menghemat satu jam atau lebih sehingga saya harus menghabiskan mencari masalah ...

lelah
sumber
Terima kasih. Saya harus melakukan ini dalam kombinasi dengan jawaban tertinggi untuk membuatnya berfungsi dengan baik.
kflorence
1

oleh Finder, Hapus file ini:

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

di terminal:

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

kemudian:

$ brew link node
monimen
sumber
1
Ketika saya menjalankan brew link --overwrite --dry-run node, saya melihat kesalahan No such keg: /usr/local/Cellar/node. Apa yang saya lewatkan?
PKHunter
1

Saya telah mencoba semua metode dan tidak satupun yang berhasil. Cara termudah adalah menginstal ulang simpul dari https://nodejs.org/en/download/

Cukup unduh pkgdan instal. Sekarang saya punya pekerjaan npmdan nodelagi.

Pemburu
sumber
0

Tidak tahu, apakah itu ide yang bagus atau tidak: Setelah mencoba semua solusi lain tanpa hasil, saya hanya mengganti nama / usr / local / lib / dtrace, menautkan simpul dan mengganti nama direktori kembali. Setelah itu, simpul bekerja seperti yang diharapkan.

Alex Maiburg
sumber
0

Saya berjuang dengan ini untuk sementara waktu. (bagi saya "npm uninstall npm -g" tidak melakukan apa-apa)

Saya mencoba banyak hal:

npm uninstall npm -g
brew uninstall node
brew install node

Saya masih mengalami beberapa masalah dan mendapatkan kesalahan ketika saya mencoba menautkan file simpul

Akhirnya saya mencoba ini

brew link --overwrite node

Itu sepertinya telah memperbaikinya. (itu menimpa semua file yang saling bertentangan dan juga menghubungkan node dan npm)

Semoga ini membantu

Tanuj
sumber
0

Saya benar-benar menghapus minuman dan mulai lagi, hanya untuk menemukan masalah yang sama lagi.

Brew tampaknya berfungsi dengan menyinkronkan binari yang diperlukan ke sistem Anda di mana metode instalasi lain biasanya menyalin file.

Saya menemukan satu set perpustakaan simpul yang ada di sini:

/usr/local/include/node

Setelah beberapa goresan kepala saya ingat menginstal node pada tanggal terhadap versi lama ini dan itu belum melalui minuman.

Saya secara manual menghapus seluruh folder ini dan berhasil menautkan npm.

Ini akan menjelaskan mengapa menggunakan brew uninstall atau bahkan uninstall brew itu sendiri tidak berpengaruh.

Jawaban peringkat tertinggi menempatkan ini sangat sederhana, tapi saya pikir saya akan menambahkan pengamatan saya tentang mengapa itu perlu.

Saya menduga banyak masalah dengan paket minuman lain mungkin disebabkan oleh contoh paket lama yang sedang dalam proses.

Henry
sumber
0

Telah merusak kepalaku di simpul yang terhubung .. dan sepertinya tidak ada yang berhasil ... tapi akhirnya yang berhasil adalah mengatur izin yang tepat. 'Sudo chown -R $ (whoami) / usr / local' ini berhasil untuk saya.

Shahsayyad
sumber
0

Saya memperbaiki ini di El Capitan dengan menggunakan perintah berikut. Jujur, tidak tahu apa fungsinya, tetapi saya pikir saya akan berbagi karena itu memperbaiki masalah saya.

brew link --overwrite node
Fizzix
sumber
-5

Anda perlu menghapus paket npm secara manual.

simpul tautan pertama: brew link -n node

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

tautan lagi: brew link node

akan ada tautan lunak ke lokasi baru npm

Soenke
sumber
5
Tidakkah ini menghapus npm BARU yang sedang diseduh oleh pembuat bir? Mengikuti ini membuat saya tanpa npm yang berfungsi diinstal, sedangkan menghapus folder npm LAMA seperti dalam jawaban saya berfungsi.
natevw
bagi saya sepertinya Anda mencoba untuk menghapus paket baru juga - padahal pasti itu yang lama yang perlu dihapus? Saya benar-benar menemukan bahwa ada symlink yang tersisa untuk / usr / local / bin / npm
Caroline