Homebrew: Simge bağlantısı yapılamadı, / usr / local / bin yazılabilir değil [kapalı]


361

Yüklerken tig, HomeBrewbir bağımlılık yüklerken aşağıdaki sorunları gösteriyor:

Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/a2x
/usr/local/bin is not writable.

You can try again using:
  brew link asciidoc

3
Bu, stackuserflow.com'a değil, superuser.com'a veya askdifferent.com'a ait değil
Ondra Žižka

Yanıtlar:


582

Aşağıdaki Alex'in cevabı ben bu sorunu çözmek için başardı; Bu, yüklenen paketlere özgü olmayan, ancak homebrewklasörlerin izinleriyle ilgili bir sorun gibi görünüyor .

sudo chown -R `whoami`:admin /usr/local/bin

Bazı paketler için, ayrıca bu yapmanız gerekebilir /usr/local/shareveya /usr/local/opt:

sudo chown -R `whoami`:admin /usr/local/share
sudo chown -R `whoami`:admin /usr/local/opt

25
Tüm / usr / local / bin komutunu geçerli kullanıma yeniden yönlendirmek sisteme veya diğer kullanıcılara herhangi bir sorun çıkarmaz mı?
Don Giulio

10
sudo chown -R Whoami , gerçek kullanıcı adınızla :admin /usr/local/bindeğiştirmeye gerek kalmadan yanıttaki komuta eşdeğer olmaz yourusenamemı?
Jason Swett

5
Ben de usr/local/opttekrar tekrar chown zorunda kaldı . Bundan sonra işe yaradı.
atripes

5
Benim mac (10.9.5) On izinleri /usr/local/bin(ve arkadaşları) için, geri almadan görünüyor drwxr-xr-x+ve root wheelher gün. Her istediğimde izinleri yeniden yapılandırmalıyım brew install. İşletim sisteminin beni korumak için izinleri sıfırladığını varsayıyorum? Nasıl durdurabilirim? (Denedim chflags uchg …ama demlemenin takılmasını önlüyor.)
Quinn Comendant

1
Hesabımı "tekerlek" grubuna ekledim. Bu, "sudo chmod -R g + w / usr / local" komutuna izin verir - bu, "wheel" grubunun üyelerinin klasörlere yazmasına izin verir. Bu hassas klasörlerin sahibini kökten daha az güvenli bir hesaba dönüştürmekten daha güvenli görünüyor.
Michael Krebs

220

Belirli bir komutu çalıştırmak yerine, brew doctortüm uyarıları ciddiye almanızı ve tavsiye etmenizi öneririm . Sıkıştığınız ve bu soruda yakalanamayan başka sorunlar olabilir.

Ayrıca, demleme zamanla güncellendiği için, belirli komutlar geçerli olabilir veya olmayabilir. brew doctorancak, sorun gidermeyle ilgili güncel bilgilere sahip olmanızı sağlayacaktır.


9
Cevabınızın daha az popüler olduğuna inanamıyorum. Yukarıda ifade edilen tahminlerden kesinlikle daha ihtiyatlıdır.
Fairfax Robert

34
brew doctorSorunu çözmeyecek, sadece size anlatacak ve doktor tavsiyesi aldığınızda, demlemek bunu yapamayacağını söylüyor. Bu bir çözüm değil
Keith Tyler

8
Belki birisi onu geliştirdi. Şimdi, demlemek doktor en popüler cevaba benzer bir cmd çalıştırmanızı önerir ve bunu yaptıktan sonra demlemek symlink çalışır. Bir mac'tayım, bu yüzden ne kadar sürdüğünü göreceğiz. :-)
Joshua Richardson

2
Bu çok faydalı oldu teşekkürler. Yukarıdaki öneriyi kaçırmak için diğer bazı özel dizinler düzeltildi.
SwimBikeRun

6
demlemek doktor EXACT sorunu sağladı ve manuel çözüm de sağladı!
netrox

74

Diğer cevaplar gittikleri kadar doğrudur, ancak bu sorunun neden ortaya çıkabileceğine ve bu temel nedenin nasıl ele alınacağına cevap vermezler .

Sebep olmak

Bu sorunun iki olası nedeni vardır:

  1. Homebrew kurulumu, şu anda kullanmakta olduğunuzdan farklı bir kullanıcıyla gerçekleştirildi. Homebrew, yalnızca ilk olarak yükleyen kullanıcının onu kullanmak isteyeceğini umuyor.
  2. Demlemek kullanmadan / usr / local'a yazan bir yazılım yüklediniz. brew doctorEğer çalıştırırsanız , nedeni budur .

Çözüm

Çok Kullanıcılı Homebrew

Birden fazla kullanıcı hesabınız varsa ve bunlardan birden fazlasının demleme kullanabilmesini istiyorsanız, birkaç adım atmanız gerekir, aksi takdirde kullanıcıları her değiştirdiğinizde Homebrew dosya yapısının sahipliğini sürekli olarak değiştirmeniz gerekir, ve bu harika bir fikir değil.

Ayrıntılı talimatlar çevrimiçi olarak bulunabilir , ancak hızlı cevap şudur:

  1. Demlemek adlı bir grup oluşturun :

    1. Açık Sistem tercihleri
    2. Hesaplar'ı tıklayın
    3. "+" İşaretini tıklayın (gerekirse önce kilidini açın)
    4. Yeni hesap altında Grup'u seçin
    5. girmek demlemek
    6. Grup Oluştur'u tıklayın
  2. Demlemek grubunu seçin ve demlemek için kullanmak istediğiniz kullanıcı hesaplarını ekleyin.
  3. / usr / local klasör grubu sahipliğini değiştirin: sudo chgrp -R brew /usr/local
  4. / usr / local komutuna grup olarak ekleme izinlerini değiştirin: sudo chmod -R g+w /usr/local
  5. homebrew önbellek dizin grubunu değiştir: sudo chgrp -R brew /Library/Caches/Homebrew
  6. homebrew önbellek dizini izinlerini değiştirin: sudo chmod -R g+w /Library/Caches/Homebrew

Tek Kullanıcılı Homebrew

Homebrew ile birden fazla kullanıcı kullanmaya çalışmıyorsanız, diğer cevapların önerilerine dayanarak sağladığı çözüm brew doctormuhtemelen yeterlidir:

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

sudo chown -R $(whoami) /Library/Caches/Homebrew

Doğrulama

Bu adımlardan sonra , yeni grup üyeliklerini uygulamak için oturumunuzu kapatıp tekrar açtığınızı varsayarak (çok kullanıcılı rotaya gittiyseniz) demleme grubundaki brew doctorherhangi bir kullanıcının başarılı olduğunu bildirmelisiniz . Tek kullanıcılı homebrew için işleri düzelttiyseniz, grup üyeliğinizin hiçbiri değişmediği için oturumunuzu kapatıp tekrar açmanız gerekmez.


2
Teşekkürler! Muhtemelen unix kullanıcı grupları hakkında daha fazla bilgi okumalıyım. Akıl yürütmeyi yeterince iyi sindirmenin nasıl çalıştığı hakkında tamamen bilgim yok. Ama çok mantıklı geliyor, işaretçi için teşekkürler!
Jikku Jose

1
unix grupları tahmin edebileceğinizden daha basittir - her dosyanın, o dosyanın sahibi olan 'kullanıcı' ve 'grup' ve 'diğerleri' için okuma, yazma ve yürütme izinleri vardır. Bir dosya veya klasöre sahip olan grubu ayarlar ve bu klasör için 'grup'a yazma izinleri eklerseniz, o gruptaki herhangi bir kullanıcı klasöre yazabilir. Gerçekten bundan daha fazlası yok. pencerelerin izinleri kadar karmaşık değil.
stonecrusher

1
Bu yüzden bir grup dosya izin sistemi bir gruba kulüp kolay bir yolu böylece tek bir seferde tüm bu izinleri uygulamak için birden fazla kullanıcı kolaylıkla eklenebilir?
Jikku Jose

2
Bu demlemek bağlantı sorunlarımı düzeltti, teşekkürler.
Keith Tyler

Hala /usr/local/bingrup yazılabilir, esp gibi hassas bir dizine sahip olmak bana biraz tehlikeli gibi geliyor . çok kullanıcılı bir ortamda. Bu gerçekten "resmi" demleme yolu mu?
corwin.amber

67

Arayanlar /usr/local/sbinyazılabilir bir hata değildir:

GÜNCELLEME:/usr/local/someOtherFolderName Örneğin olabilir /usr/local/include. Sadece şu klasörü oluşturmalısınız:

  • sudo mkdir someOtherFolderName

Öncelikle sbinklasörü oluşturun, bunun sudoayrıcalıklar gerektirdiğini unutmayın

  • cd /usr/local

  • sudo mkdir sbin

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

  • brew link yourPackageName


6
Bu benim için çalıştı
robin

Ayrıca dizini ~ / .bash_profile dosyasına eklemem gerekiyor:PATH=$PATH:/usr/local/sbin
Julien

Saatlerce arama yaptıktan sonra, bu benim için işe yarayan tek şeydi. Yüksek Sierra'dayım.
ItsJoeTurner

34

Özel kurulumum için aşağıdaki komutların çalıştığını buldum

brew doctor

Ve sonra bana hatalarımın nerede olduğunu gösterdi ve sonra bu yukarıdaki yorumdan biraz farklı bir komut.

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

2
Açık öneri için teşekkür ederim. Unutmaya meyilliyimbrew doctor
Antony

1
Bu, sorunu burada çözdü
khaosdoctor

brew doctoriyidir.
AechoLiu

cazibe gibi çalıştı, teşekkürler
hexley

15

Aynı sorunu buldum, üç adımda çözebiliriz: -

Aşama 1

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

Adım 2

brew doctor

Aşama 3

brew prune

Hâlâ hiçbir bağlantı sorunu alırsanız, için diyelim mysql, sadece yazma

brew link mysql

Bu çalışacak.


1
rabbitmq için çalıştı
Omar

'Adım 1'in amacı nedir?
Conrad C

1
demlemek doktor Yaşasın! Demlemek demedim, ancak diğer eksik paketleri yükledi ve mongodb için çalıştı.
Chenlu

'Demlemek kuru erik' çağrısı devre dışı. Bunun yerine 'demlemek temizleme' kullanın.
hanumanDev

12

Mac OS High Sierra çalıştırılırken (bu gönderi yapıldıktan 4 yıl sonra verilen) bu sorunla karşılaşanlar için - burada özetlenen adımlar benim için sorunu çözdü. Aslında sadece demleme kaldırma ve yeniden yükleme özetliyor.

https://medium.com/@mrkdsgn/brew-error-on-macos-high-sierra-check-you-have-permission-to-write-to-usr-local-e8bd1c6a22d4

Bu adımları brew link uyguladıktan sonra bir cazibe gibi çalıştı!


Bunun benim için işe yaradığını gördüm (ilk dökümü komutu olmadan): github.com/Homebrew/brew/issues/3285#issuecomment-334976806
vr_driver

Teşekkür ederim! Harry'nin üst cevabını denedim, şans yok - bunu denedi ve bir cazibe gibi çalıştı!
Joe

Benim için çalıştı, teşekkürler!
zen

9

Benim için çözüm çalıştırmaktı brew update.

Yani, İLK YAPIN.

Bu, homebrew'a aşina olan insanlar için normal bir uygulama olabilir, ancak ben o insanlardan biri değilim.

Düzenleme: brew doctor@ kinnth'in aynı soruya vereceği cevabın önerdiği şekilde çalıştırarak güncellemem gerektiğini keşfettim .

Genel bir sorun giderme iş akışı şu şekilde görünebilir: 1. run brew update 2. çalıştırma yardımcı olmazsa brew doctorve yönergelerini takip edemezseniz 3. yığın taşmasını kontrol etmenize yardımcı olmazsa


1
Bu benim için her şeyi düzeltti ve her şeyden önce yapmaya değer.
Rob Evans

Tüm demlemek doktor yok benim Mahzende sevmeyen fıçıları var ... bu OP OP sorunu düzeltmek için hiçbir şey yok
AlxVallejo

@AlxVallejo OP ile hemen hemen aynı bir hata alırken yaşadığım bir sorunu çözmek için yaptım. Brew Doctor'dan aldığınız mesaj bana farklı bir sorun gibi geliyor. "1. demlemek güncelleme çalıştırın 2. Bu demlemek doktor çalıştırmak yardımcı olmaz ve onun yönlerini izleyin 3. Bu yığın taşmasını kontrol yardımcı olmazsa büyük olasılıkla hala geçerlidir.
FragmentalStew

6

Demlemek bağlantı düğümü yaparken Ek olarak ben de aşağıdaki sorunları var:

Hata: include / node / usr / local / include dosyası eklenemedi yazılabilir değil.

/Usr/local/Cellar/node/9.3.0 bağlanıyor ... Hata: @ dir_s_mkdir - / usr / local / lib için izin verilmedi

Yukarıdakileri çözmek için / usr / local / dizinine gidin ve 'include' ve 'lib' klasörlerinin kullanılabilirliğini kontrol edin, eğer bu klasörler mevcut değilse bunları manuel olarak oluşturun.

Ve demlemek kurulum düğümünü tekrar çalıştırın


5

Bunun nedeni, geçerli kullanıcının bu yola yazmasına izin verilmemesidir . Bu nedenle, r / w (okuma / yazma) izinlerini değiştirmek için 1. terminal veya 2. Grafik "Bilgi Al" penceresini kullanabilirsiniz.

1. Terminal Kullanımı

Google , terminalden chmod / chown (modu değiştir / sahibini değiştir) komutlarını kullanma

2. Grafik 'Bilgi Al' kullanarak

İzinlerini değiştirmek istediğiniz klasöre / dosyaya sağ tıklayabilir, ardından altta r / w izinlerini kolayca değiştirebileceğiniz aşağıdaki gibi bir pencere gösterecek olan Bilgi Al'ı açabilirsiniz : resim açıklamasını buraya girin

Mümkünse geçici çalışmanızdan sonra izni "salt okunur" olarak değiştirmeyi unutmayın.


demlemek doktor kullanın - düzeltilmesi gereken (sistem) klasörlerini doğru bir şekilde tanımlayacaktır.
johndpope


2

Benim sorunum

Error: Could not symlink share/man/man7/ABORT.7
/usr/local/share/man/man7 is not writable.

chownyardım etmedi, ama çalışan brew doctortavsiyeleri takip ettim ve bu uyarı bana yardımcı oldu:

Warning: Broken symlinks were found. Remove them with `brew prune`:
/usr/local/share/man/man3/* 

Sonuçta brew pruneiyi çalıştı!


Harika. Benim için çalışıyor.
Bagusflyer

1

Tanıdık olmayanlar için:

sudo chown -R YOUR_COMPUTER_USER_NAME PATH_OF_FILE

0

Bulucudaki klasöre giderseniz, sağ tıklayın ve "Bilgi Al" ı seçin, klasör için "Paylaşım ve İzinler" bölümüne gidebilir ve "Herkes" e "Okuma ve Yazma" izni verebilirsiniz.

Simgelerin bu hatayla geçmesini sağlamak için yaptığım şey bu. Ayrıca demlemek klasörde izinleri sıfırlamış gibi görünüyor.


0

Yüklemekte olduğunuz /usr/localpaket için zaten bir dizininiz varsa, bu dizini silmeyi deneyebilirsiniz.

Benim durumumda demlemeksizin kurmaya çalıştığım paketi daha önce kurmuştum ve daha sonra kaldırmıştım. /usr/local/<my_package>/Önceki kurulumdan geriye kalan bir dizin vardı. Bu klasörü ( sudo rm -rf /usr/local/<my_package>/) sildim ve bundan sonra demleme bağlantı adımı başarılı oldu.

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.