Homebrew fıçılarımı yeniden bağlamanın hızlı bir yolu var mı?


61

MacBook Air'ini Mavericks'e yükselttim. Sürecin homebrewiçine giren sembolik bağlantıların neredeyse tümünü kaldırdığı görülüyor /usr/local/bin. Eksik olan şeyleri fark ettiğimde, onları yeniden bağlarım brew unlink <keg> && brew link <keg>(semboliklerin gitmesine rağmen, homebrewhala orada olduklarını düşünüyor, bu yüzden unlinkilk önce ihtiyacım var ). Bu biraz verimsiz hissediyor.

İçindeki her şeyde dolaşabiliyorum /usr/local/Cellarama her fıçı otomatik olarak birbirine bağlı değil ve bunları birbirine bağlamak istemiyorum. Bu yüzden bir sonraki tahminim, bağlantılı her fıçıyı listelemek ve onları yeniden bağlamaktır (yukarıdakileri kullanarak).

Bağlanabileceğimi homebrew düşünen tüm fıçıları bulabilecek bir sihir emri var mı ?


"Her şeyi" eski bir Mac'ten yenisine taşımak için Migration Assistant'ı kullandım ve aynı zamanda tüm homebrew sembollerimi de kaybettim. Can sıkıcı.
Grav

Yanıtlar:


39

/usr/local/Library/LinkedKegs bağlantılı fıçıların bir listesini içeriyor gibi görünüyor, bu yüzden bu hile yapmalı:

ls -1 /usr/local/Library/LinkedKegs | while read line; do
    echo $line
    brew unlink $line
    brew link --force $line
done

Bunu /usr/local/libdenemeden önce tekrar yazma izniniz olduğundan emin olmanızı tavsiye ederim .


Eminim ki bu sadece homebrew'umu çalışma düzenine soktu. Teşekkürler!
Robert Massaioli

Şaşırtıcı, teşekkür ederim :) sakıncası yoksa, sadece bir yalvardı,
Stone Alessandro

1
Hayır yapma --force! brew linkyeterli olmalı ve bazı fıçılar (sistem kütüphaneleriyle çatışabilecekleri için) gerçekten birbirine bağlanmamalıdır, oysa --forcebağlarını zorlarlar.
Chris Jefferson

Huh. Görünüşe göre sildim /usr/local/Library.
Kyle Strand

59

Bu bash komutu ( oradan alınmış ) yüklenen tüm formüllerin bağlantısını kaldıracak ve sonra bunları yeniden bağlayacaktır:

brew list -1 | while read line; do brew unlink $line; brew link $line; done

Sanırım tüm formüller birbirine bağlı olmalı, aksi halde, hangi araç onlara bağlı olursa olsun, bunları bulamaz.


Tüm formüllerin birbirine bağlı olması gerektiğinden emin değilim. Bazıları sadece fıçı ama hangisini bilmiyorum, çünkü bazıları diğerlerinin bağımlılıkları olarak kuruldular.
Döngü Alanı

4
: "Doğaçlama fıçı içindir ve --force ile bağlantılı olmalıdır Uyarı" sadece gibi bazı uyarılar almak görünüyor
Grav

2
İşte xargs kullanarak eşdeğer bir sürüm:brew list -1 | xargs -I formula sh -c "brew unlink formula && brew link formula"
paulmelnikow

kullanmak harika. 10.12.6 mac os kullanıyorum
Raju yourPepe

8

Bu soruya verilen diğer cevaplara ek olarak, birden fazla sürümün kurulu olduğu formülün yeniden bağlanması gerekebilir ( brew linkbunu sizin için yapmaz).

İlk önce, yapabileceğiniz tüm formülleri yeniden bağlayın:

brew list -1 | while read line; do brew unlink $line; brew link --force $line; done

Sonra koşun brew doctor, şikayet etmeli ve size iki liste vermeli

  • Çoklu versiyonlara sahip bağlantısız formüller
  • Orijinal yeniden bağlanma işlemi tarafından hatalı şekilde bağlanmış olan fıçı formüller.

Birden çok sürüm içeren her formül için, "python" ifadesini formül adıyla değiştirerek aşağıdakileri çalıştırın:

brew info python  

Bu, diğer bilgilerin yanı sıra, yüklü tüm sürümleri size gösterecektir. Hangi sürümü bağlamak istediğinizi seçin (benim için 2.7.6) vebrew switch

brew switch python 2.7.6

Ayrıca brew unlinkbağlantılı olan fıçı-yalnızca formüllerin listesinde (varsa) çalıştırmak isteyeceksiniz .

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.