Saya menggunakan homebrew
sebagai manajer paket untuk aplikasi pengembangan web tertentu. Untuk tetap brew
up to date, saya menjalankan update brew
setiap beberapa hari dan juga menjalankan brew doctor
. Biasanya, ini baik-baik saja dan brew
mengatakan bahwa saya siap untuk menyeduh.
Namun, kadang-kadang, saya mendapatkan kesalahan berikut:
Peringatan: / usr / local / etc tidak dapat ditulisi.
Ini bisa terjadi jika Anda "sudo make install" perangkat lunak yang tidak dikelola oleh Homebrew. Jika rumus mencoba menulis file ke direktori ini, penginstalan akan gagal selama langkah tautan.
Anda mungkin
chown
/ usr / local / etcPeringatan: Direktori / usr / local tidak dapat ditulis. Bahkan jika direktori ini dapat ditulis ketika Anda menginstal Homebrew, perangkat lunak lain dapat mengubah izin pada direktori ini. Beberapa versi komponen "InstantOn" dari Airfoil diketahui melakukan hal ini.
Anda mungkin harus mengubah kepemilikan dan izin dari / usr / local kembali ke akun pengguna Anda.
Cukup mudah untuk mengatur ulang izin kembali ke nama pengguna saya. Setelah itu brew
tampaknya baik-baik saja.
Tetapi apa yang menyebabkan ini terjadi?
Apakah ada log yang menunjukkan apa yang menyebabkan izin berubah?
sumber
/usr/local
. Tetapi jika Anda bersikeras maka Anda bisamake install
tanpa menggunakansudo
untuk paket yang Anda instal sendiri./usr/local
?Jawaban:
Saya memiliki masalah yang sama persis ini, dan ternyata pembaruan otomatis Sophos yang harus disalahkan. Saya menemukan ini dengan menjalankan:
sudo fs_usage | grep "usr/local"
Butuh beberapa saat, tetapi akhirnya saya melihat daemon Sophos yang bernama "Instalasi" membantu dengan / usr / local's permissions.
Saya masih mencoba mencari cara yang tepat untuk perilaku ini.
EDIT: Saya yakin Sophos telah memperbaiki masalah ini, lihat tautan di komentar dari jawaban ini. Tampaknya setidaknya sudah diperbaiki untuk saya!
sumber
Ternyata Filewave adalah biang keladinya. Filewave adalah perangkat lunak manajemen sistem yang digunakan oleh sekolah kami untuk mendorong pembaruan perangkat lunak. Terima kasih atas masukannya.
sumber
Saya hanya punya ide kasar bagaimana mendapatkan izin pencuri. Ini bukan solusi untuk masalah Anda, tetapi lebih banyak solusi.
Bagaimana dengan menulis anjing penjaga di Automator atau dengan Hazel (tindakan folder) untuk menonton folder khusus ini tetapi alih-alih menambahkan fungsi seperti Skala gambar Anda hanya menggunakan shellscript yang menjalankan beberapa perintah shell:
fuser <foldername>
.ps auxwwwwww | grep <process id>
) dan akhirnyaSayangnya saya bukan Sadhu Automator, tetapi saya menemukan oleh Google ada banyak solusi untuk masalah yang sama.
sumber
Jika Anda menggunakan Time Machine, Anda dapat menemukan perkiraan waktu ketika izin diubah dengan menjelajahi
Backups.backupdb
Terminal. Gunakanls -ld
dalam folder timestamped, misYang akan menampilkan informasi pemilik dan grup.
Setelah tanggal perubahan terjadi, Anda dapat mengetahui apa lagi yang mungkin berubah pada sistem Anda. Teknik sederhana adalah dengan menggunakan File Finder ›Temukan dan tambahkan
Last modified date
kriteria. Alat bagus lainnya adafind
danmdfind
di Terminal.sumber
Ini adalah efek samping dari memperbarui sistem Anda; OS X mungkin melakukan beberapa perbaikan "izin" lintas-papan selama proses pembaruan karena / usr / local bersarang di folder yang dimiliki root.
sumber
Sudahkah Anda menggunakan
Disk Utility
pilihMacintosh HD
lalu jalankanVerify Disk Permission
dan kemudianRepair Disk Permission
jika perlu, daripada melakukannya secara manual?Sekarang ini seharusnya tidak memperbaiki masalah Anda, tetapi ini merupakan titik awal yang 'dikenal' untuk melihat kapan buatan rumahan mengubah izin. Itu bisa menunjukkan masalah mendasar jika Anda beruntung.
Juga
new update -v
untuk keluaran verbose yang lebih banyak, ditambah log lama ada di sini~/Library/Logs/Homebrew
seperti di mana log homebrew?sumber
Disk Utility
tidak akan memverifikasi atau memperbaiki izin/usr/local
sejak direktori ini tidak ada pada pemasangan baru Yosemite./usr/local
milik baru saya, dan menjalankannyaDU
. Tidak ada/usr/local
di dalamDU
log. Dan/usr/local
masih milik saya.