Memasang di Homebrew error

112

Mencoba memasang rvm dan ruby ​​1.9.2

Saya sudah menginstal homebrew dan git, tetapi tidak bisa mendapatkan pembaruan lengkap karena saya terus mendapatkan kesalahan izin. Menginstal ulang Snow Leopard dan izin yang diperbaiki.

Sekarang ini terjadi ...

$ brew install wget

Kesalahan: Tidak dapat menulis ke / usr / local / Cellar

Ibrahim
sumber
stackoverflow.com/questions/4804169/… harus ditandai sebagai jawaban diterima - saya khawatir pengunjung yang tidak melihat bahwa pertanyaan ini belum dijawab mereka akan pindah
dmo

Jawaban:

274

sudo chown -R $USER /usr/local

Anda harus memberi diri Anda kepemilikan untuk /usr/local/menggunakan baris itu di sana. Saya harus melakukan ini sendiri setelah menggunakan ruby ​​one-liner di bagian atas dokumen resmi untuk menginstal Homebrew. Bekerja seperti pesona bagi saya. Ini harus menjadi satu-satunya saat Anda perlu sudobersama Homebrew.

Saya tidak yakin apakah ruby ​​one-liner melakukan ini. Jika ya, maka sesuatu yang lain di sistem saya mengambil kendali /usr/localsejak itu.

Sunting : Saya benar-benar melewatkan ini, tetapi @samvermette tidak (lihat balasan untuk jawaban saya): jika Anda menjalankan perintah ini di atas dan menginstal sesuatu melalui homebrew yang memerlukan izin pengguna khusus, seperti mysql, pastikan untuk memberikan izin itu kembali (seperti perintah di atas memberikan kepemilikan rekursif untuk semua yang ada di dalam /usr/localdiri Anda ( $USER). Dalam kasus mysql, itu…

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

Ben Kreeger
sumber
16
Harap diperhatikan : perintah ini akan menghapus kepemilikan / usr / local / mysql / data dari mysqlpengguna. Dalam kasus saya yang mencegah mysql untuk memulai. Perbaiki itu dengan:sudo chown -RL mysql:mysql /usr/local/mysql/data
samvermette
24
Saya menghindari masalah mysql dengan menggunakan sudo chown -R $USER /usr/local/Cellarsebagaimana /usr/local/telah memiliki izin yang benar untuk saya
Parker
1
Sayangnya, pengguna datang dan pengguna pergi… mungkin suatu saat Ibrahim akan kembali dan menandainya. Mungkin. (Mungkin tidak.)
Ben Kreeger
4
Saya tidak suka jawaban ini. Ini mengasumsikan bahwa hanya satu pengguna yang pernah menggunakan sistem dan pengguna itu harus memiliki semua / usr / local, meskipun pertanyaannya hanya tentang homebrew. Apakah minuman tidak bekerja dengan sistem multipengguna? Itu jawaban yang ceroboh, meskipun berhasil. Selain itu, ini tidak menjelaskan bagaimana pengguna mungkin menghadapi situasi ini. Petunjuk - Saya menginstal HomeBrew menggunakan petunjuk kanonik, lalu memulihkan dari cadangan TimeMachine (ke komputer lain). Saya menduga bahwa pemulihan itulah yang mengubah kepemilikan file.
Jason R. Coombs
1
Saya setuju dengan @ JasonR.Coombs; orang tidak boleh menggunakan solusi ceroboh ini tanpa memahami konsekuensi praktis dan keamanan. Perangkat lunak apa pun di / usr / local sekarang dapat ditimpa oleh apa pun yang berjalan di bawah pengguna Anda, membuka celah keamanan. Sangat mungkin Anda akan mengacaukan sesuatu yang lain (selain MySQL) dengan menjalankan perintah chown pertama secara membabi buta, setelah itu akan terlambat untuk mengidentifikasi dan memperbaiki semua yang mungkin baru saja Anda buat kacau.
merampok
41

Saya mengalami masalah ini setelah meningkatkan ke Mavericks, dan halaman ini adalah hasil pencarian teratas saat mencari pesan kesalahan di Google. Saya terus mencari dan menemukan jawaban ini di stack overflow.com . Singkatnya, ini adalah:

sudo chmod a+w /usr/local/Cellar

Ini memperbaiki masalah bagi saya, dan karena hanya mengubah izin untuk jalur tertentu yang dirujuk dalam pesan kesalahan, tampaknya tidak mungkin memiliki efek samping negatif dengan penginstalan lain.

Saya memberikan jawaban ini di sini untuk siapa pun yang mungkin menemukan halaman ini pertama kali seperti yang saya lakukan. Namun, kredit harus diberikan kepada jdi .

Nathan
sumber
2
Apakah ini dianggap tidak aman, karena semua orang sekarang dapat menulis ke / usr / local / Cellar?
David Welch
Jawaban ini gagal untuk paket yang memerlukan akses ke folder lain (seperti /usr/local/bin).
Jason R. Coombs
11

Anda hanya dapat mengizinkan pengguna Admin menulis ke /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

Karena itu setiap pengguna yang termasuk dalam grup Admin, akan dapat menginstal dependensi baru.

swilgosz.dll
sumber
Sepertinya solusi yang lebih baik untuk mesin multi-administrator (meskipun direktori / usr / local / lib saya juga membutuhkan g + x agar aspell berfungsi).
James Snook
1
Untuk menghindari kesalahan 'The "brew link" tidak berhasil diselesaikan', Anda juga dapat menerapkan apa yang ada di utas ini , yaitu sudo chgrp -R admin /usr/local/DDDD+ di sudo chmod -R g+w /usr/local/DDDDmana DDDD adalah bin , share , Library / LinkedKegs , opt
superk
1
Terima kasih untuk jawabannya, saya harus menggunakan "sudo", jadi jika perintah ini tidak berfungsi, coba
awali
5

Di High Sierra Anda memerlukan perintah berikut karena chown tidak akan berfungsi:

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

Tautan:

https://github.com/Homebrew/brew/issues/3228

Metodij Zdravkin
sumber
2

uninstall dan instal ulang HomeBrew yang akan melakukan trik

Ricardo Marin
sumber
1

Saya sarankan memastikan bahwa pengguna saat ini adalah anggota grup yang memiliki / usr / local. Saya percaya secara default, grup itu adalah wheel. Untuk menjadikan diri Anda anggota grup itu:

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

Meskipun sesuatu dari palu yang tidak elegan, itu memiliki efek yang diinginkan - memungkinkan akses ke item /usr/localyang dimaksudkan hanya untuk digunakan (baca / tulis) oleh anggota yang ditinggikan. Pendekatan ini memiliki keunggulan lain di atas karena memanfaatkan keanggotaan grup, memungkinkan beberapa pengguna (resmi) di sistem untuk menggunakan homebrew.

Jason R. Coombs
sumber
0

Bagaimana Anda menginstal Homebrew? Petunjuk penginstalan resmi mereka termasuk menjalankan skrip ruby. Itu harus mengurus masalah izin untuk Anda.

Jika Anda tidak ingin menjalankan skrip, ada bagian halaman yang disebut "Menginstal ke / usr / local untuk Pengembang" yang menjelaskan perubahan izin yang diperlukan untuk direktori / usr / local.

jhuebsch.dll
sumber
saya menggunakan skrip dan sudah terpasang tetapi masih mengalami masalah saat memperbarui. Saya memigrasikan data pengguna ke laptop baru. Harus melakukan beberapa solusi dari github b / c skrip tidak berfungsi pada awalnya.
Ibrahim
-3

EDIT : Seperti yang disebutkan di komentar, menggunakan sudo dengan homebrew adalah ide yang buruk, jadi jangan gunakan jawaban berikut!


Anda juga dapat mencegah kesalahan ini jika Anda menjalankan perintah dengan sudo:

$ sudo brew install wget

Tapi berhati-hatilah saat menggunakannya sudokarena Anda bisa membuat banyak kesalahan.

Pascal
sumber
Pendekatan ini gagal dengan versi terbaru dari homebrew yang melarang pemanggilan sebagai root (melalui sudo).
Jason R. Coombs