Cài đặt lỗi Homebrew


112

Cố gắng cài đặt rvm và ruby ​​1.9.2

Tôi đã cài đặt homebrew và git, nhưng không thể nhận được bản cập nhật hoàn chỉnh vì tôi liên tục gặp lỗi quyền. Đã cài đặt lại Snow Leopard và sửa chữa các quyền.

Bây giờ điều này xảy ra ...

$ brew cài đặt wget

Lỗi: Không thể ghi vào / usr / local / Cellar


stackoverflow.com/questions/4804169/… phải được đánh dấu là câu trả lời được chấp nhận - tôi sợ rằng những khách truy cập không thấy rằng câu hỏi này chưa được trả lời, họ sẽ tiếp tục
dmo

Câu trả lời:


274

sudo chown -R $USER /usr/local

Bạn sẽ phải cấp cho mình quyền sở hữu /usr/local/sử dụng dòng đó ngay tại đó. Tôi đã phải tự mình thực hiện việc này sau khi sử dụng một lớp lót ruby ​​ở đầu tài liệu chính thức để cài đặt Homebrew. Làm việc như một cái duyên đối với tôi. Đây hẳn là lần duy nhất bạn cần đến sudovới Homebrew.

Tôi không chắc liệu một lớp lót ruby ​​có làm được điều này hay không. Nếu nó xảy ra, thì một thứ khác trên hệ thống của tôi đã kiểm soát /usr/localkể từ đó.

Chỉnh sửa : Tôi hoàn toàn bỏ lỡ điều này, nhưng @samvermette thì không (xem câu trả lời cho câu trả lời của tôi): nếu bạn chạy lệnh này ở trên và cài đặt thứ gì đó qua homebrew yêu cầu quyền người dùng đặc biệt, chẳng hạn như mysql, hãy đảm bảo cung cấp lại các quyền đó (như lệnh trên cấp quyền sở hữu đệ quy cho mọi thứ bên trong /usr/localcho bạn ( $USER). Trong trường hợp của mysql, đó là…

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


16
Xin lưu ý : lệnh này sẽ xóa quyền sở hữu / usr / local / mysql / data khỏi mysqlngười dùng. Trong trường hợp của tôi, điều đó đã ngăn mysql khởi động. Khắc phục điều đó với:sudo chown -RL mysql:mysql /usr/local/mysql/data
samvermette

24
Tôi đã tránh được sự cố mysql bằng cách sử dụng sudo chown -R $USER /usr/local/Cellar/usr/local/đã có quyền chính xác cho tôi
Parker

1
Than ôi, người dùng đến và người dùng đi… có lẽ một ngày nào đó Ibrahim sẽ quay lại và đánh dấu nó. Có lẽ. (Có lẽ không.)
Ben Kreeger

4
Tôi không thích câu trả lời này. Nó giả định rằng chỉ có một người dùng từng sử dụng hệ thống và người dùng đó phải sở hữu mọi thứ / usr / local, mặc dù câu hỏi chỉ là về homebrew. Bia không hoạt động với hệ thống nhiều người dùng? Đó là một câu trả lời cẩu thả, ngay cả khi nó hoạt động. Hơn nữa, nó không giải thích cách người dùng có thể gặp phải tình huống này. Gợi ý - Tôi đã cài đặt HomeBrew bằng hướng dẫn chuẩn, sau đó khôi phục từ bản sao lưu TimeMachine (sang máy khác). Tôi nghi ngờ rằng chính việc khôi phục đó đã thay đổi quyền sở hữu tệp.
Jason R. Coombs

1
Tôi đồng ý với @ JasonR.Coombs; mọi người không nên sử dụng giải pháp cẩu thả này mà không hiểu các phân nhánh thực tế và bảo mật. Mọi phần mềm trong / usr / local hiện có thể bị ghi đè bởi bất kỳ thứ gì đang chạy dưới quyền người dùng của bạn, mở ra một lỗ hổng bảo mật. Hoàn toàn có khả năng bạn sẽ làm hỏng một thứ gì đó khác (ngoài MySQL) bằng cách chạy một cách mù quáng lệnh chown đầu tiên, sau đó sẽ quá muộn để xác định và sửa chữa mọi thứ mà bạn có thể vừa mắc phải.
cướp

41

Tôi gặp sự cố này sau khi nâng cấp lên Mavericks và trang này là kết quả tìm kiếm hàng đầu khi googling thông báo lỗi. Tôi tiếp tục tìm kiếm và tìm thấy câu trả lời này trên stack tràn.com . Nói một cách ngắn gọn, nó là:

sudo chmod a+w /usr/local/Cellar

Điều này đã khắc phục sự cố cho tôi và vì nó chỉ thay đổi quyền đối với đường dẫn cụ thể được tham chiếu trong thông báo lỗi, dường như không có tác dụng phụ tiêu cực với các cài đặt khác.

Tôi đặt câu trả lời này ở đây cho bất kỳ ai khác có thể tìm thấy trang này đầu tiên giống như tôi đã làm. Tuy nhiên, tín dụng sẽ được chuyển đến jdi .


2
Điều này có được coi là không được biết đến không, vì mọi người hiện có thể viết thư tới / usr / local / Cellar?
David Welch

Câu trả lời này không thành công đối với các gói yêu cầu quyền truy cập vào các thư mục khác (chẳng hạn như /usr/local/bin).
Jason R. Coombs

11

Bạn chỉ có thể cho phép người dùng Admin viết vào /usr/local/?

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

Vì mỗi người dùng thuộc nhóm Quản trị viên, sẽ có thể cài đặt các phần phụ thuộc mới.


Có vẻ như một giải pháp tốt hơn cho các máy nhiều quản trị viên (mặc dù thư mục / usr / local / lib của tôi cũng cần g + x để aspell hoạt động).
James Snook,

1
Để tránh bị các 'Các 'brew liên kết' bước không hoàn thành' lỗi bạn cũng có thể áp dụng những gì trong chủ đề này , cụ thể là sudo chgrp -R admin /usr/local/DDDD+ sudo chmod -R g+w /usr/local/DDDDnơi dddd là bin , cổ phiếu , Library / LinkedKegs , opt
superk

1
Thnx cho anwer, tôi đã phải sử dụng "sudo", vì vậy nếu các lệnh không làm việc, cố gắng để tiền tố nó với sudo
MQoder


2

gỡ cài đặt và cài đặt lại HomeBrew sẽ thực hiện thủ thuật


1

Tôi khuyên bạn nên đảm bảo rằng người dùng hiện tại là thành viên của nhóm sở hữu / usr / local. Tôi tin rằng theo mặc định, nhóm đó là wheel. Để biến mình thành thành viên của nhóm đó:

$ sudo dscl . append /Groups/wheel GroupMembership $USER

Mặc dù một thứ gì đó của một cái búa không nhẹ nhàng, nó có tác dụng dự kiến ​​- cho phép truy cập vào các vật phẩm /usr/localchỉ dành cho các thành viên cao cấp sử dụng (đọc / ghi). Cách tiếp cận này có lợi ích của cách khác ở trên vì nó tận dụng các thành viên nhóm, cho phép nhiều người dùng (được ủy quyền) trên hệ thống sử dụng homebrew.


0

Bạn đã cài đặt Homebrew như thế nào? Hướng dẫn cài đặt chính thức của họ bao gồm chạy tập lệnh ruby. Điều đó sẽ chăm sóc các vấn đề về quyền cho bạn.

Nếu bạn không muốn chạy tập lệnh, có một phần của trang đó được gọi là "Cài đặt vào / usr / local dành cho Nhà phát triển" giải thích sự thay đổi về quyền cần thiết cho thư mục / usr / local.


tôi đã sử dụng một tập lệnh và nó đã được cài đặt nhưng nó vẫn gặp sự cố khi cập nhật. Tôi đã di chuyển dữ liệu người dùng sang một máy tính xách tay mới. Phải thực hiện một số giải pháp thay thế từ github b / c ban đầu tập lệnh không hoạt động.
Ibrahim

-3

CHỈNH SỬA : Như đã đề cập trong các ý kiến, bạn nên sử dụng sudo với homebrew, vì vậy đừng sử dụng câu trả lời sau!


Bạn cũng có thể ngăn lỗi này nếu bạn thực thi lệnh với sudo:

$ sudo brew install wget

Nhưng hãy cẩn thận khi sử dụng sudovì bạn có thể mắc rất nhiều sai lầm.


Cách tiếp cận này không thành công với các phiên bản muộn của homebrew không cho phép gọi là root (thông qua sudo).
Jason R. Coombs
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.