Có một cách nhanh chóng để xem lại thùng nhà của tôi?


61

Tôi vừa nâng cấp MacBook Air của mình lên Mavericks. Quá trình này dường như đã loại bỏ gần như tất cả các liên kết tượng trưng homebrewđược đưa vào /usr/local/bin. Khi tôi nhận thấy những thứ còn thiếu sau đó tôi xem lại chúng qua brew unlink <keg> && brew link <keg>(mặc dù các liên kết tượng trưng đã biến mất, homebrewvẫn nghĩ rằng chúng ở đó nên tôi cần unlinktrước tiên). Điều này cảm thấy hơi không hiệu quả.

Tôi chỉ có thể lặp qua mọi thứ trong đó /usr/local/Cellarnhưng không phải mọi thùng rác đều được liên kết tự động và tôi không muốn liên kết chúng. Vì vậy, dự đoán tiếp theo của tôi là liệt kê tất cả các thùng được liên kết và phát lại chúng (sử dụng ở trên).

Có một số lệnh ma thuật sẽ tìm thấy tất cả các thùng homebrew nghĩ rằng được liên kết để tôi có thể xem lại chúng?


Tôi đã sử dụng Trợ lý di chuyển để chuyển "mọi thứ" từ máy Mac cũ sang máy mới và tôi cũng mất tất cả các liên kết tượng trưng về nhà. Làm phiền.
Grav

Câu trả lời:


39

/usr/local/Library/LinkedKegs dường như có chứa một danh sách các thùng được liên kết, vì vậy điều này nên thực hiện thủ thuật:

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

Tôi khuyên bạn nên đảm bảo rằng bạn có quyền ghi /usr/local/liblại trước khi thử điều này.


Khá chắc chắn rằng điều này chỉ khôi phục homebrew của tôi vào trật tự làm việc. Cảm ơn!
Robert Massaioli

Tuyệt vời, cảm ơn bạn :) chỉ cần thực hiện một ý chính ra khỏi nó nếu bạn không nhớ, tôi khá chắc chắn rằng chúng tôi không phải là người duy nhất phải đối mặt với vấn đề này .. goo.gl/YTPMjh
Đá Alessandro

1
Không, đừng làm --force! brew linknên là đủ, và một số thùng thực sự không nên được liên kết (vì chúng có thể xung đột với các thư viện hệ thống), trong khi đó --forcesẽ buộc liên kết của chúng.
Chris Jefferson

Huh. Hình như tôi cũng đã xóa /usr/local/Library.
Kyle Strand

59

Lệnh bash này (được lấy từ đó ) sẽ hủy liên kết tất cả các công thức đã cài đặt và sau đó liên kết lại chúng:

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

Tôi đoán tất cả các công thức cần phải được liên kết, nếu không, bất kỳ công cụ nào phụ thuộc vào chúng, sẽ không thể tìm thấy chúng ..


Tôi không chắc chắn rằng tất cả các công thức cần phải được liên kết. Một số chỉ là keg nhưng tôi không biết điều đó, vì một số được cài đặt như là phụ thuộc của người khác.
Không gian vòng

4
Có vẻ như bạn chỉ nhận được một số cảnh báo như "Cảnh báo: extempore chỉ là keg và phải được liên kết với --force"
Grav

2
Đây là phiên bản tương đương sử dụng xargs:brew list -1 | xargs -I formula sh -c "brew unlink formula && brew link formula"
paulmelnikow

tuyệt vời để sử dụng. Tôi đang sử dụng 10.12.6 mac os
Raju yourPepe

8

Ngoài các câu trả lời khác cho câu hỏi này, bạn cũng có thể cần phải xem lại công thức với nhiều phiên bản được cài đặt ( brew linksẽ không làm điều này cho bạn).

Đầu tiên, hãy xem lại tất cả các công thức bạn có thể:

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

Sau đó chạy brew doctor, sẽ khiếu nại và cung cấp cho bạn hai danh sách:

  • Công thức không liên kết với nhiều phiên bản
  • Các công thức chỉ Keg đã được liên kết không chính xác bởi quá trình phát lại ban đầu.

Đối với mỗi công thức có nhiều phiên bản chạy như sau, thay thế "python" bằng tên công thức:

brew info python  

Điều này sẽ cho bạn thấy, trong số các thông tin khác, tất cả các phiên bản đã cài đặt. Chọn phiên bản bạn muốn liên kết (đối với tôi là 2.7.6) và sử dụngbrew switch

brew switch python 2.7.6

Bạn cũng sẽ muốn chạy brew unlinktrên danh sách (nếu có) các công thức chỉ keg đã được liên kết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.