không thể chown / usr / local cho homebrew trong Mac OS X 10.13 High Sierra


118

Homebrew cần quyền trong / usr / local và vì không có ai khác sử dụng máy tính xách tay của tôi nên tôi luôn làm đơn giản

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

nhưng ở High Sierra, điều này mang lại cho

chown: /usr/local: Operation not permitted

Cách khắc phục là gì?


Giải quyết với: sudo chown -R "$ USER": admin / usr / local / *
Marcelo Campusano

Câu trả lời:


218

Sự cố tiếp tục xảy ra ... sau khi tìm hiểu sâu hơn, tôi thấy rằng chỉ gỡ cài đặt Homebrew và sau đó cài đặt lại nó mới giải quyết được vấn đề này.

Gỡ cài đặt Homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

Sau đó cài đặt lại nó:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

4
đây là cách duy nhất để sửa lỗi homebrew của tôi sau khi nâng cấp "High" Sierra. lỗi của tôi là: gh4x-mbpr:~ gh4x$ brew link git Linking /usr/local/Cellar/git/2.15.0... Error: Permission denied @ dir_s_mkdir - /usr/local/libsudo chown -R $(whoami) $(brew --prefix)/* giúp đỡ didnt ...
gh4x

Không thể tin được. Lần đầu tiên không thành công, tập lệnh gỡ cài đặt không thành công, lần cài đặt thứ hai hoạt động.
GreenAsJade

Trước tiên, bạn có thể muốn lưu kết quả đầu ra của brew listtrong một tệp, để có bản ghi về những gói nào đã được cài đặt.
Giles Gardam

1
Không có bản sửa lỗi homebrew nào khác của Mojave sẽ hoạt động trên hệ thống của tôi. Gỡ cài đặt / Cài đặt lại hoạt động hoàn hảo.
pkamb

2
Hoạt động cũng với Catalina
Gefilte Fish

52

Thật không may, bạn không còn có thể chặt chém /usr/localtrong High Sierra. Một cách giải quyết là sudo mkdir /usr/local/include/usr/local/Frameworksnếu chúng không tồn tại, và

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

Cảm ơn ilovezfs vì giải pháp đơn giản này và vì homebrew tuyệt vời!


9
Vẫn không làm việc. $ brew update Lỗi: Thư mục / usr / local không thể ghi được.
Laurence Cope

Thử gỡ cài đặt và cài đặt lại Homebrew: stackoverflow.com/questions/46459152/…
ruggershawn

như tôi đã nhận xét ở nơi khác, việc gỡ cài đặt sẽ xóa TẤT CẢ các gói bia của bạn.
jaydel

$(brew --prefix)nên đánh giá /usr/local/, tôi tin.
Jordan Stewart

33

Bạn không thể thay đổi quyền cho /usr/localchính nó, nhưng bạn có thể thay đổi quyền phù hợp cho các thư mục bên dưới, vì vậy điều này đã sửa lỗi
sudo chown -R $(whoami) /usr/local/*


1
Vẫn gặp vấn đề tương tự
Laurence Cope

2
Chạy trên MacOS High Sierra. Đã làm việc. Cảm ơn.
Prince Odame

2
Làm việc cho tôi vào lúc: MacOS High Sierra 10.13.6
Gail Parsloe

8

Tôi đã làm theo điều này nhưng vấn đề vẫn tồn tại.
Vì vậy, tôi đã cài đặt lại homebrew mà không gỡ cài đặt trước đó. Nó đang làm việc bây giờ!
(Tôi không biết làm thế nào)


3
Tôi khuyên bạn nên gỡ cài đặt hoàn toàn Homebrew và sau đó cài đặt lại.
k1r8r0wn

Nhiều cài đặt đã hoạt động, tôi không thể sửa nó cho đến khi tôi gỡ cài đặt.
cbowns

gỡ cài đặt sẽ làm hỏng mọi thứ. Tôi đã cài đặt rất nhiều gói và sẽ phải cài lại và cài đặt lại tất cả. Đáng buồn thay, điều này đã hoạt động trước đây vì tôi CÓ các gói đó.
jaydel


3

Thử tắt Bảo vệ toàn vẹn hệ thống . Từ tài liệu:

Bảo vệ toàn vẹn hệ thống có thể được cấu hình bằng lệnh csrutil (1).

Bạn có thể kiểm tra xem Bảo vệ toàn vẹn hệ thống hiện đã được bật trên hệ thống của mình hay chưa bằng cách chạy lệnh sau trong Terminal:

$ csrutil status
System Integrity Protection status: enabled.

Để bật hoặc tắt Bảo vệ toàn vẹn hệ thống, bạn phải khởi động vào Hệ điều hành khôi phục và chạy lệnh csrutil (1) từ Thiết bị đầu cuối.

Khởi động vào Recovery OS bằng cách khởi động lại máy của bạn và giữ phím Command và R khi khởi động. Khởi chạy Terminal từ menu Tiện ích. Nhập lệnh sau: $ csrutil enable

Sau khi bật hoặc tắt Bảo vệ toàn vẹn hệ thống trên máy, khởi động lại là bắt buộc.


Mặc dù điều này về mặt lý thuyết có thể trả lời câu hỏi, nhưng tốt hơn hết bạn nên đưa các phần thiết yếu của câu trả lời vào đây và cung cấp liên kết để tham khảo.
Jake Symons

3
Điều này hơi giống như loại bỏ bảo vệ khỏi cưa bàn của bạn. Nó hoạt động và đôi khi có thể cần thiết, nhưng sẽ an toàn hơn nếu bạn không phải làm điều đó. Dù sao thì việc tự đặt mình là chủ sở hữu của / usr / local để giúp homebrew hoạt động có vẻ như là một vụ hack.
Caleb

3
Điều này rất không khuyến khích! Nó cực kỳ nguy hiểm trừ khi người dùng không làm những gì họ đang làm.
Abu Shumon

@oligofren: D: D: D cố lên bạn ơi. Thư giãn, nó không phải là một word in contextcuộc thi tiếng anh . : D: D Cờ để cảnh báo người dùng. Nhưng không sao, bạn chọn lên các chữ dành cho anh thì: p: p
Abu Shumon

1

nếu bạn đang sử dụng zsh vì bạn đến từ bash, bạn có thể phải thay đổi $ PATH của mình. bạn nên thêm export PATH=$HOME/bin:/usr/local/bin:$PATH .zshrc

thì nó sẽ hoạt động, vấn đề này đã được giải quyết trong máy mac của tôi bằng cách này.


1

Tôi cũng trên 10.13 High Sierra. Tôi đã thử các đề xuất trước đó; không có gì hoạt động. Cuối cùng, tôi đã thử cài đặt các công cụ dòng lệnh trước:

xcode-select --install

và sau đó (lại) chạy lệnh brew install:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

và cuối cùng nó đã hoạt động.


0

Đảm bảo rằng bạn không đặt khóa trên thư mục chính hoặc bất kỳ thư mục nào mà cài đặt cần quyền truy cập.

Ngay cả khi các quyền và quyền sở hữu được đặt chính xác và bạn hiện đang đăng nhập với đúng người dùng / hoặc người dùng Root, nó sẽ không cho phép bạn tạo các thư mục hoặc thư mục mới.


0

Tôi không có thư mục / user / local / Frameworks, vì vậy điều này đã khắc phục sự cố cho tôi

sudo mkdir -p /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/Frameworks

Tôi có OSX High Sierra


0

đây là Kaushik. Tôi đang sử dụng MacBook Pro macOS Catalina 10.15.4. Tôi đã tạo một tài khoản quản trị mới nhưng bia đã gặp lỗi. Do đó, tôi đã làm theo một bước từ bài đăng này. những gì đã hoạt động là:

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

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.