Saya baru saja memutakhirkan dari Snow Leopard ke Lion dan saya sedang mencoba memasang Homebrew. Namun setelah instalasi, saya menjalankan brew doctor
sesuai instruksi instalasi, dan melihat serangkaian kesalahan yang menunjukkan bahwa / usr / direktori lokal tidak dapat ditulis. Sebagai contoh:
Error: /usr/local/share isn't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew.
If a brew tries to write a file to this directory, the install will
fail during the link step.
You should probably `chown` /usr/local/share
Saya mendapatkan ini untuk banyak direktori:
You should probably `chown` /usr/local/include
You should probably `chown` /usr/local/share
You should probably `chown` /usr/local/share/man
Saya tidak tahu mengapa kesalahan ini muncul, karena saya adalah bagian dari grup Unix yang memiliki izin menulis ke direktori ini:
Mini:~ felciano$ ls -ld /usr/local/share
drwxrwxr-x 4 root admin 136 May 13 15:53 /usr/local/share
Mini:~ felciano$ whoami
felciano
Mini:~ felciano$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root felciano
Mini:~ felciano$
Apa yang saya lewatkan?
/usr/local
harus menjadi milik saya ketika mesin ini memiliki beberapa pengguna admin. Juga, Mungkin bagi saya untuk menulis ke lokasibrew doctor
mengeluh. Ada ide lain?Jawaban:
EDIT: Masalahnya sekarang sudah diperbaiki di Homebrew:
Jika Anda masih mengalami masalah, perbarui Homebrew seperti ini:
Jika Anda ingin tahu apa masalahnya, saya telah menyimpan jawaban asli saya di bawah ini.
Abaikan masalah permisson untuk saat ini
Saya mengalami masalah yang sama persis dan menurut saya masalahnya
brew doctor
bukan pada instalasi Anda dan saya.Saya pikir Anda harus mengabaikan masalah daripada mengubah kepemilikan
/usr/local
. Atau, Anda bisa memperbaikibrew doctor
skrip lokal Anda sampai perbaikan dilepaskan. Lihat di bawah.Saya tidak menganggap itu benar untuk
/usr/local
dimiliki oleh pengguna tertentu. Saya memiliki lebih dari satu pengguna admin di mesin ini. Anda harus meninggalkan/usr/local
milikroot:admin
sebagai pemilik dan grup.Investigasi saya
Seperti untuk Anda, saya memiliki
/usr/local
yang dapat ditulis dengan sempurna oleh pengguna saya yang juga merupakan anggotaadmin
grup:Mari kita uji bahwa dir benar - benar dapat ditulis:
Penyelidikan lebih lanjut ke dalam
brew doctor
kode membawa saya pada kesimpulan bahwa penggunaan fungsi rubyPathname.writable?
menyebabkan masalah. Pertimbangkan sesi Ruby interaktif ini:Fungsi
Pathname.writable?
mengatakan/usr/local
tidak bisa ditulisi meskipun kita tahu itu.Pathname.writable_real?
Sebaliknya, menggunakan memberikan hasil yang benar - itu mengatakan bahwa direktori dapat ditulis:Ini harus diperbaiki di
/usr/local/Library/Homebrew/cmd/doctor.rb
. Anda dapat memperbaikinya di instalasi Anda sendiri sambil menunggu perbaikan.Perbedaan antara kedua fungsi tersebut adalah (menurut Ruby docs di sini dan di sini ):
writable? (file_name) → true atau false: Mengembalikan nilai true jika file bernama dapat ditulis oleh id pengguna yang efektif dari proses ini.
writable_real? (file_name) → true atau false: Mengembalikan nilai true jika file bernama dapat ditulis oleh id pengguna sebenarnya dari proses ini.
sumber
writable_real?
... mungkin sudah waktunya untuk permintaan tarik?!? :-)Saya percaya Anda hanya membutuhkan ini:
brew update
Lalu coba
brew doctor
lagi.Anda mungkin masih mendapatkan kesalahan tentang dependensi yang tidak Anda gunakan (Java dalam kasus saya), yang tidak apa-apa. Jika Anda memiliki Alat Baris Perintah untuk Xcode diinstal alih-alih instalasi Xcode lengkap Anda juga akan mendapatkan pesan kesalahan yang mengatakan Anda memiliki jalur yang tidak valid, tetapi tepat di pesan Anda juga akan membaca bahwa tidak ada jalur yang valid jika Anda hanya menggunakan Alat Baris Perintah untuk Xcode, jadi tidak apa-apa juga.
Untuk kepentingan orang lain: Ingatlah bahwa Anda harus masuk sebagai admin saat melakukan ini agar bisa berfungsi.
sumber
Saya mengikuti kombinasi saran iolsmit dan Phil M: Saya membagikan direktori ini ke nama pengguna saya, kemudian berlari
brew update
lagi diikuti olehbrew doctor
. Ini menghilangkan semua pesan kesalahan dan membuat instalasi sekarang tampaknya berfungsi dengan baik. Terima kasih semuanya!sumber
Acungan jempol untuk investigasi dan klarifikasi @ mgd ... tepat!
Tampaknya masalah serupa muncul di github.com sekitar setahun yang lalu, tetapi tidak pernah (semestinya?) Diselesaikan, setidaknya tidak dengan menggunakan
writable_real?
... mungkin sudah waktunya untuk permintaan tarik?!? :-)sumber