Bác sĩ bia nói: Cảnh báo: / usr / local / bao gồm không thể ghi.


352

Bác sĩ bia nói:

Cảnh báo: / usr / local / bao gồm không thể ghi. Điều này có thể xảy ra nếu bạn "sudo make install" không được quản lý bởi Homebrew.

Nếu một nhà sản xuất bia cố gắng ghi một tập tin tiêu đề vào thư mục này, cài đặt sẽ thất bại trong bước liên kết.

Bạn có lẽ nên chown/ usr / local / bao gồm

Tôi đã thử các lệnh khác nhau để giải quyết vấn đề này nhưng tôi vẫn bị mắc kẹt ở đây.

Tôi đang chạy homebrew vào ngày 10.8.2


1
Tôi đã gặp một lỗi tương tự cho "/ usr / local / lib" trong Homebrew 0.9.4 cũng được giải quyết với giải pháp bên dưới.
JeremiahLee

Câu trả lời:


680

Hãy sở hữu nó và mọi thứ trong đó.

Mac OS High Sierra hoặc mới hơn: (liên kết với Kirk trong các bình luận bên dưới)

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

Các phiên bản trước của macos:

$ sudo chown -R $USER:admin /usr/local/include

Sau đó làm khác

$ brew doctor

13
không được phép vận hành?
topwik

68
Bất kỳ lợi thế thay vì $ sudo chown -R `whoami` /usr/local/?
Labu

2
@WillemLabu một quá trình ít ngã ba? whoami là id người dùng hiệu quả và như trang man nói đã lỗi thời :) bash là shell mặc định trên OSX và ở đâu đó USER đang được thiết lập.
ngày

7
Tôi tự hỏi liệu thay đổi quyền sở hữu / usr / local cho người dùng một giải pháp sạch. Sẽ tốt hơn nếu thêm $ USER vào nhóm 'bánh xe'? Hoặc thay đổi nhóm / usr / local thành nhóm quản trị viên?
Michael Lehn

13
Theo Homebrew trong Mac OS, trò chơi High Sierra /usr/localkhông hoạt động nữa. Thay vào đó hãy sử dụngsudo chown -R $(whoami) $(brew --prefix)/*
Kirk Hammett

115

Những gì làm việc cho tôi là quá

sudo chmod g+w /usr/local
sudo chgrp staff /usr/local

20
Đây là cách khắc phục lành mạnh duy nhất, không thực sự lành mạnh để sở hữu / usr / local trong hệ điều hành nhiều người dùng
Alexander Torstling

3
Cần phải có được anh chàng này một số phiếu! ;) Điều này làm việc tuyệt vời.
jrista

1
Đây là giải pháp tốt hơn IMHO
jacurtis

5
Chà, không phải ở High Sierra. "Không thể thay đổi chế độ tệp trên / usr / local: Không được phép thao tác"
user980018

1
@ user980018 Tôi vừa gặp phải điều tương tự - đây là cách giải quyết tôi đã sử dụng
Casey Davidson

38

Những gì làm việc cho tôi là

$ sudo chown -R yourname:admin /usr/local/bin

37

Người duy nhất làm việc cho tôi trên El Capitan là:

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

5
chown: / usr / local: Không được phép thao tác
AlxVallejo

1
@AlxVallejo làm việc đó trên / usr / local / bin đã làm việc cho tôi
marcotama

23

Nếu bạn đang ở High Sierra và gặp phải vấn đề này, hãy làm theo các bước bên dưới ( Lưu ý: / usr / local không thể được gọi ở High Sierra ):

sudo mkdir /usr/local/include
sudo chown -R $(whoami) $(brew --prefix)/*

Sau đó thử liên kết với liên kết bia. Tôi đã gặp vấn đề tương tự và không có giải pháp nào ở trên hoạt động cho High Sierra. Hy vọng điều này sẽ giúp được ai đó.


21

Đối với Sierra cao:

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

Sau đó, thử các lệnh brew của bạn.

Vấn đề # 3285


2
Không chắc chắn lý do tại sao điều này bị hạ cấp, nếu trước đây bạn đã cài đặt và nâng cấp lên High Sierra, cài đặt lại Homebrew sẽ khắc phục sự cố. Đây là cách tiếp cận dễ nhất
sam9046

Trớ trêu thay vì kịch bản thực hiện chính xác những gì các câu trả lời khác đang gợi ý.
Các cuộc đua nhẹ nhàng trong quỹ đạo

Điều này làm việc cho tôi nhưng trước tiên tôi đã gỡ cài đặt trước đó bằng cách sử dụng: ruby ​​-e "$ (curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall )"
abbas

12

Bạn có thể bí danh lệnh để khắc phục sự cố này trong .bash_profile và chạy nó mỗi khi bạn gặp phải nó:

Vào cuối tập tin ~/.bash_profile, thêm:

alias fix_brew='sudo chown -R $USER /usr/local/'

Và bây giờ bên trong thiết bị đầu cuối của bạn, bạn có thể chạy:

$ fix_brew

12

Điều này làm việc cho tôi trên macOS 10.12

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

Tôi gặp sự cố khi cập nhật homebrew với lỗi sau:

/usr/local is not writable. You should change the ownership
and permissions of /usr/local back to your user account:
  sudo chown -R $(whoami) /usr/local

8

Đối với một số người sẽ là:

sudo chown -R JonJames:admin /usr/local/lib

trong đó "lib" được sử dụng trái ngược với "bin" hoặc "bao gồm" hoặc "bất cứ điều gì khác"

Cảnh báo Homebrew "nên" giải thích cụ thể những gì không thể ghi được và sau đó cung cấp cho bạn cú pháp lệnh để theo dõi, tuy nhiên bạn sẽ cần sử dụng ":" trái ngược với những gì Cảnh báo đề cập thực sự không đúng cú pháp ??


Cú pháp trong Cảnh báo hơi khó hiểu Tôi tin rằng, tôi đã gửi email cho người đóng góp chính cho Homebrew để hỏi liệu họ có thay đổi gì về điều đó không, chờ trả lời, có lẽ thông báo của Cảnh báo sẽ thay đổi trong các bản cập nhật bia trong tương lai ..
Jonathan James

cảm ơn! Điều này làm việc sau khi một số lượng lớn tìm kiếm xung quanh.
thiswayup


5

Lỗi tương tự trên MacOS 10.13

/usr/local/include/usr/local/ /usr/libkhông được tạo ra. Tôi tự tạo và brew linkcuối cùng đã làm việc.


3

Bạn cần tạo / usr / local / bao gồm và / usr / local / lib nếu chúng không tồn tại:

$ sudo mkdir -p /usr/local/include
$ sudo chown -R $USER:admin /usr/local/include

3

Những gì làm việc cho tôi, trong khi tôi có nhiều hơn hơn 1 người dùng trên máy tính của mình.

Sử dụng thiết bị đầu cuối:

  • Đang chạy brew doctor
    • Nhìn thấy nhiều /usr/local/...lỗi không thể ghi
  • Vô hiệu hóa bảo vệ tính toàn vẹn hệ thống của Mac: https://apple.stackexchange.com/a/208481/55628
  • Chạy như sau
  • sudo chown -R $(whoami) /usr/local/*
  • brew doctor && brew upgrade && brew doctor

Chạy Macbook Pro OSX High Sierra (phiên bản 10.13.3.)

CHỈNH SỬA 1:

FYI - Xin lưu ý rằng điều này gây ra sự cố khi chạy MySQL trên MAC của bạn.

Để có thể khởi động máy chủ cục bộ của mình, tôi đã phải chạy:

sudo chown -R mysql:mysql /usr/local/mysql/data

Sau khi chạy, bạn có thể khởi động Máy chủ MySQL cục bộ của mình.


1
Thông minh! Cảm ơn bạn!
shmuli

3
sudo mkdir -p /usr/local/include /usr/local/lib /usr/local/sbin

sudo chown -R $(whoami) /usr/local/include /usr/local/lib /usr/local/sbin

Điều này sẽ tạo ra tất cả các thư mục cần thiết và cung cấp cho nó quyền sở hữu chính xác.

Sau khi chạy các lệnh này, kiểm tra với: brew doctor

Điều này làm việc cho Mojave.


2

Bạn cần kiểm soát toàn bộ /usr/localđể làm điều đó, bạn cần thực hiện đệ quy chowntheo/usr/local

sudo chown -R YOUR_USERNAME:admin /usr/local/


2

Tôi chỉ muốn lặp lại nhận xét khiêm tốn của sam9046 như một giải pháp thay thế và có khả năng dễ dàng hơn nhiều trong trường hợp của tôi: gỡ cài đặtcài đặt lại homebrew từ đầu. Không có lệnh sudo cần thiết.

Bạn cũng có thể duyệt / sửa đổi tập lệnh gỡ cài đặt từ liên kết đó ở trên nếu bạn cần đảm bảo nó sẽ không ảnh hưởng đến các gói đã cài đặt trước đó của bạn. Trong trường hợp của tôi đây chỉ là máy gia đình của tôi vì vậy tôi chỉ mới bắt đầu lại.



2

Đầu tiên bạn cần tạo thư mục:

sudo mkdir /usr/local/include

Thứ hai:

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

1

Tôi đã có điều này xảy ra trong tổ chức của mình sau khi tất cả người dùng của chúng tôi bị ràng buộc vào thư mục hoạt động (thay đổi hiệu quả UID từ 50x thành #######).

Bây giờ nó chỉ đơn giản là một trường hợp thay đổi quyền sở hữu của tất cả các tệp được sở hữu bởi x thành y.

Trong đó 501 là id người dùng số cũ của tôi vẫn được liên kết với tất cả các tệp homebrew.

Có thể tìm thấy id người dùng cũ bằng cách sử dụng ll /usr/local/Cellar

Bây giờ cập nhật quyền sở hữu sudo find /usr/local -user 501 -exec chown -h $USER {} \;

Bằng cách này, chúng tôi tránh thay đổi quyền sở hữu đối với các tệp không được kiểm soát bởi homebrew hoặc thuộc về một số người dùng hệ thống khác.


1

Đi vào thư mục / bin và gõ:

chown -R $ (whoami): admin / usr / local / bin

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.