Tạo các tệp trong `/ usr / local` có thể ghi cho homebrew


35

Tôi đã cố gắng để homebrew hoạt động tốt, nhưng dường như mọi thứ bên trong /usr/localđều không thể ghi được, và mọi thứ sụp đổ.

Nó cứ bảo tôi đệ quy chown /usr/local, và tôi đã thử nó. Hoạt động bị từ chối, vì vậy tôi sudo'd nó. Nó dường như hoạt động, nhưng với một sự im lặng kỳ lạ mà tôi nghe thấy được coi là lịch sự trong Unix. Thật không may, bất kỳ nỗ lực thành công nào brew updateđáp ứng với cùng một lỗi caophony.

Tôi chạy lại lệnh với -vvà có vẻ như hoạt động không được phép cho bất cứ điều gì bên trong.

Nhiều như câu trả lời có lẽ là "học UNIX" Tôi chỉ đang cố gắng tuân thủ một số yêu cầu công việc ở đây để xem hướng dẫn về Ruby, vì vậy đó là một vài bước ở trên nơi tôi hiện đang ở.

brew doctor:

Warning: /usr/local/Frameworks isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/Frameworks
Warning: /usr/local/Cellar isn't writable.
You should `chown` /usr/local/Cellar
Warning: /usr/local/etc isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/etc
Warning: /usr/local/include isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/include
Warning: /usr/local/lib isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib
Warning: /usr/local/lib/pkgconfig isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib/pkgconfig
Warning: /usr/local/opt isn't writable.
You should `chown` /usr/local/opt
Warning: /usr/local/share isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/share
Warning: Some directories in /usr/local/share/man aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.
You should probably `chown` them:

    /usr/local/share/man
    /usr/local/share/man/man1
    /usr/local/share/man/man3
    /usr/local/share/man/man5
    /usr/local/share/man/man7
    /usr/local/share/man/man8
Warning: /usr/local/var isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/var

brew doctorcho bạn biết bất cứ điều gì hữu ích? Đăng đầu ra ở đây.
Ian C.

@IanC. Đó là một danh sách dài tất cả mọi thứ liên quan đến bia không thể ghi được. Có một tiện ích pastebin stackexchange? Có rất nhiều điều khủng khiếp .
Hổ

Chà, thật lạ. Bây giờ có ít hơn rất nhiều so với trước đây.
Hổ

Chỉ cần FYI: Tôi vừa chạy brew updatevà phát hiện ra rằng "Homebrew không còn cần phải có quyền sở hữu / usr / local". Thêm thông tin trong câu hỏi này . Rõ ràng để đến thời điểm đó, bạn vẫn cần cập nhật tạm thời các quyền trên / usr / local :)
acobster

Câu trả lời:


26

Điều này sẽ được giải quyết thay đổi perms trên thư mục đó theo cách sau:

$ cd /usr/local
$ sudo chown -R <your-username>:<your-group-name> *

Nếu bạn không biết nhóm của mình, chỉ cần gõ id -g.


Phần quan trọng là -Rlàm cho nó đệ quy. Và bạn có thể phải làm việc chownsử dụng sudo. Đối với nhóm người dùng, tôi thường sử dụng stafftrên OS X.
nwinkler

Hấp dẫn. Tại sao việc sử dụng nhóm lại khác với chỉ người dùng?
Hổ

4
Tại sao nó phù hợp với / usr / local được sở hữu bởi người dùng của bạn? Tôi nghĩ đó là một rủi ro bảo mật, vì có rất nhiều chương trình khác sử dụng / usr / local và có thể âm thầm tiếp quản. Có thực sự cần một cái gì đó rất quyết liệt?
dfrankow

1
Tôi tin rằng điều này nguy hiểm vì nó chọn nhóm 'staff', có nghĩa là mọi người dùng trên HĐH đều có thể thay đổi nội dung của / usr /. Bạn có lẽ nên chuyển sang 'admin'.
Mất lòng

1
@dfrankow yep, đây là một sai lầm của homebrew. Họ thậm chí không nghĩ điều gì sẽ xảy ra nếu có hai người dùng trên cùng một máy.
poige

22

Bạn phải sử dụng sudo để chạy lệnh với các priledges nâng cao, như thế này:

sudo chown -R `whoami` /usr/local

Tôi đã làm. "Hoạt động bị từ chối, vì vậy tôi sudo'd nó."
Hổ

1
Đối với người dùng vỏ cá, nó sẽ làsudo chown -R (whoami) /usr/local
kibin

10

Tôi đã phải đối mặt với vấn đề này ngày hôm qua với macOS 10.13.4 và tôi đã cố gắng sudo chgrp -R admin /usr/localhoặc sudo chown -R <your-username>:<your-group-name> /usr/localgặp Operation not permittedlỗi ngay cả khi sử dụngsudo

Vì vậy, tôi đã cố gắng chỉ chgrpcho Homebrewthư mục liên quan đến admin(Người dùng của tôi ở trong adminnhóm, tùy thuộc vào người dùng bạn đang chạy, bạn có thể được thay đổi thành một nhóm khác) và cấp adminquyền truy cập ghi nhóm vào các thư mục đó bằng các lệnh này

sudo chgrp -R admin /usr/local/Homebrew/
sudo chmod -R g+w /usr/local/Homebrew/
sudo chgrp -R admin /usr/local/var/homebrew/
sudo chmod -R g+w /usr/local/var/homebrew/

Sau khi chạy các lệnh này, tôi có thể cài đặt một gói mới mà không gặp vấn đề gì. Nếu bạn gặp lại bất kỳ vấn đề cấp phép nào, hãy thử chạy hai lệnh đầu tiên bằng cách thay thế tên thư mục bằng lệnh mà bạn đang gặp phải vấn đề về quyền.

Hy vọng điều này sẽ giúp những người dùng khác với macOS 10.13.

Lưu ý: Mặc dù việc thay đổi chủ sở hữu /usr/localhoặc thay đổi nhóm /usr/localvà cấp quyền truy cập cho nhóm của bạn có thể hoạt động, bạn KHÔNG BAO GIỜ làm điều đó vì bạn cũng đang sửa đổi thư mục không liên quan khác. Sửa đổi (các) thư mục bạn cần an toàn hơn nhiều.


Điều này thực sự tốt cho tôi! <3 cảm ơn
DariusV

Điều này nên được bình chọn là câu trả lời chính xác! Cảm ơn bạn đã giúp đỡ!
Yini

2

Để giải quyết các vấn đề về quyền trên các thư mục, chúng ta có thể thực hiện lệnh sau:

brew prune

1

Nó làm việc cho tôi.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local

0

Câu trả lời của Reza trong câu hỏi này có hiệu quả với tôi:

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

Bạn không thể thay đổi quyền cho / usr / local, nhưng bạn có thể thay đổi quyền cho các thư mục bên dưới

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.