Buat file dalam `/ usr / local` dapat ditulis untuk homebrew

35

Saya sudah mencoba untuk membuat homebrew bekerja dengan baik, tetapi tampaknya semuanya di dalam /usr/localtidak dapat ditulis, dan semuanya jatuh.

Itu terus mengatakan kepada saya untuk secara rekursif chown /usr/local, dan saya mencobanya. Operasi ditolak, jadi saya sudo'd itu. Tampaknya berhasil, tetapi dengan keheningan yang menakutkan yang saya dengar dianggap sopan di Unix. Sayangnya, setiap upaya yang berhasil brew updatebertemu dengan hiruk pikuk kesalahan yang sama.

Saya mengulangi perintah dengan -vdan sepertinya operasi tidak diizinkan untuk apa pun di dalamnya.

Sebanyak jawabannya mungkin "belajar UNIX" Saya hanya mencoba untuk memenuhi beberapa persyaratan pekerjaan di sini untuk tutorial tentang Ruby, jadi itu beberapa langkah di atas di mana saya saat ini berada.

brew doctor:

Warning: /usr/local/Frameworks isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/Frameworks
Warning: /usr/local/Cellar isn't writable.
You should `chown` /usr/local/Cellar
Warning: /usr/local/etc isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/etc
Warning: /usr/local/include isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/include
Warning: /usr/local/lib isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib
Warning: /usr/local/lib/pkgconfig isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib/pkgconfig
Warning: /usr/local/opt isn't writable.
You should `chown` /usr/local/opt
Warning: /usr/local/share isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/share
Warning: Some directories in /usr/local/share/man aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.
You should probably `chown` them:

    /usr/local/share/man
    /usr/local/share/man/man1
    /usr/local/share/man/man3
    /usr/local/share/man/man5
    /usr/local/share/man/man7
    /usr/local/share/man/man8
Warning: /usr/local/var isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/var
Tigt
sumber
Apakah brew doctormemberi tahu Anda sesuatu yang bermanfaat? Poskan hasilnya di sini.
Ian C.
@IanC. Ini daftar panjang segala sesuatu yang berhubungan dengan pembuatan bir yang tidak dapat ditulis. Apakah ada utilitas stackexchange pastebin? Ada banyak sekali.
Tigt
Yah, itu aneh. Ada jauh lebih sedikit daripada sekarang.
Tigt
Hanya FYI: Saya hanya berlari brew updatedan menemukan bahwa "Homebrew tidak perlu lagi memiliki kepemilikan / usr / lokal." Info lebih lanjut dalam pertanyaan ini . Jelas untuk sampai ke titik itu Anda masih perlu untuk sementara memperbarui izin pada / usr / local :)
acobster

Jawaban:

26

Ini harus dipecahkan dengan mengubah perms pada direktori tersebut dengan cara berikut:

$ cd /usr/local
$ sudo chown -R <your-username>:<your-group-name> *

Jika Anda tidak tahu grup Anda, ketikkan saja id -g.

jherran
sumber
Bagian yang penting adalah -Rmembuatnya rekursif. Dan Anda mungkin harus melakukan chownpenggunaan sudo. Untuk grup pengguna, saya biasanya menggunakan staffOS X.
nwinkler
Menarik. Mengapa menggunakan grup sangat berbeda dari hanya pengguna?
Tigt
4
Mengapa / usr / local tepat untuk dimiliki oleh pengguna Anda? Saya pikir itu adalah risiko keamanan, karena ada banyak program lain yang menggunakan / usr / lokal dan dapat diambil alih secara diam-diam. Apakah minuman benar-benar membutuhkan sesuatu yang begitu drastis?
dfrankow
1
Saya percaya ini berbahaya karena memilih grup 'staff', yang berarti setiap pengguna pada OS kemudian dapat mengubah konten / usr /. Anda mungkin harus beralih ke 'admin'.
Indolering
1
@dfrankow ya, ini adalah kesalahan homebrew. Mereka bahkan tidak berpikir apa yang terjadi jika ada dua pengguna di mesin yang sama.
poige
22

Anda harus menggunakan sudo untuk menjalankan perintah dengan priltges yang ditinggikan, seperti ini:

sudo chown -R `whoami` /usr/local
Ian C.
sumber
Aku melakukannya. "Operasi ditolak, jadi aku sudo melakukannya."
Tigt
1
Untuk pengguna kerang ikan itu akansudo chown -R (whoami) /usr/local
kibin
10

Saya menghadapi masalah ini kemarin dengan macOS 10.13.4 dan saya mencoba sudo chgrp -R admin /usr/localatau sudo chown -R <your-username>:<your-group-name> /usr/localyang mendapatkan Operation not permittedkesalahan meskipun menggunakansudo

Jadi saya mencoba hanya chgrpuntuk Homebrewfolder terkait admin(Pengguna saya dalam admingrup, tergantung pada pengguna yang Anda jalankan, Anda mungkin akan berubah ke grup lain) dan berikan admingrup akses tulis ke folder tersebut menggunakan perintah ini

sudo chgrp -R admin /usr/local/Homebrew/
sudo chmod -R g+w /usr/local/Homebrew/
sudo chgrp -R admin /usr/local/var/homebrew/
sudo chmod -R g+w /usr/local/var/homebrew/

Setelah menjalankan perintah ini, saya dapat menginstal paket baru tanpa masalah. Jika Anda menekan masalah izin lagi mencoba menjalankan dua perintah pertama dengan mengganti nama folder dengan yang Anda memukul masalah izin.

Semoga ini bisa membantu pengguna lain dengan macOS 10.13.

Catatan: Meskipun mengubah pemilik untuk /usr/localatau mengubah grup /usr/localdan memberikan akses untuk grup Anda mungkin berhasil, Anda harus TIDAK PERNAH melakukannya karena Anda juga memodifikasi folder yang tidak terkait lainnya. Memodifikasi folder yang Anda butuhkan jauh lebih aman.

Kong
sumber
ini benar-benar berjalan baik untuk saya! <3 terima kasih
DariusV
Ini harus dipilih sebagai jawaban yang benar! Terima kasih atas bantuan Anda!
Yini
2

untuk menyelesaikan masalah izin pada direktori kita dapat melakukan perintah berikut:

brew prune
Catto
sumber
1

Itu berhasil untuk saya.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local
Mahfuz
sumber
0

Jawaban Reza dalam pertanyaan ini berhasil untuk saya:

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

Anda tidak dapat mengubah izin untuk / usr / lokal itu sendiri, tetapi Anda dapat mengubah izin yang tepat untuk folder di bawahnya

spacetyper
sumber