Bagaimana Homebrew tidak lagi membutuhkan kepemilikan / usr / lokal?

28

Hari ini saya berlari brew updatedan setelah memigrasi repositori, ia melaporkan bahwa ia tidak lagi memerlukan kepemilikan /usr/local:

$ brew update
Updated Homebrew from 5371359 to 13f08a2.
...
==> Migrating HOMEBREW_REPOSITORY (please wait)...
==> Migrated HOMEBREW_REPOSITORY to /usr/local/Homebrew!
Homebrew no longer needs to have ownership of /usr/local. If you wish you can
return /usr/local to its default ownership with:
  sudo chown root:wheel /usr/local

Perubahan ini sepertinya sedikit meragukan. Bagaimana cara minuman mencapai perilaku baru ini, yang tampaknya melewati kontrol keamanan?

Jason R. Coombs
sumber
Kontrol keamanan apa yang dilewati? Itu /usr/localtidak termasuk dalam SIP. Lihat Tentang Perlindungan Integritas Sistem pada Mac Anda di bawah "Jalur dan aplikasi yang dapat ditulis oleh aplikasi dan pemasang oleh pihak ketiga:" /usr/localterdaftar.
user3439894
3
Yang mengatakan, tidak menjadi pengguna Homebrew, karena saya mengkompilasi langsung dari kode sumber utilitas yang saya inginkan yang tidak termasuk dalam OS X, namun saya akan membayangkan bahwa Homebrew telah ditulis ulang sesuai kebutuhan / perlu untuk bertindak secara normal seperti aplikasi lain memiliki dilakukan di masa lalu. IMO Homebrew seharusnya ditulis sejak awal agar tidak harus merebut kepemilikan root untuk memulainya!
user3439894
Maksud saya, jika /usr/localdan anak-anaknya dimiliki oleh root:adminatau root:wheeldan tidak dapat ditulis kelompok, maka saya tidak memiliki akses untuk menulis ke direktori tersebut (dan mungkin juga tidak akan homebrew), tetapi jika itu masalahnya, bagaimana Homebrew dapat mengatur instalasi dan menghapus aplikasi dari lokasi tersebut?
Jason R. Coombs
3
Saya hanya memperhatikan bahwa pesan itu hanya referensi /usr/localdan bukan turunannya. Dan melihat apa yang dilakukan oleh instalasi homebrew baru, ia mengatur semua subdir yang akan dimiliki oleh $ USER dan grup yang dapat ditulisi.
Jason R. Coombs

Jawaban:

19

Menurut skrip ruby ​​ini: update-report.rb , mereka baru saja memindahkan barang ke / usr / local / Homebrew, yang masih dimiliki oleh Anda.

albb
sumber
2
Tidakkah / usr / local perlu ditulis oleh $ USER untuk membuat / usr / local / Homebrew dapat berlangsung? Bagaimana dengan direktori lain, seperti / usr / local / Cellar atau / usr / local / opt? Bukankah homebrew masih memerlukan (non-sudo) akses untuk menulis ke direktori tersebut? Bagaimana bisa melakukan itu jika direktori dimiliki oleh root dan tidak dapat ditulisi kelompok?
Jason R. Coombs
1
Pada instalasi pertama, mereka masih menggunakan sudo untuk membuat repositori homebrew, lihat menginstal . Script dalam jawaban saya untuk memperbarui, pada saat itu Anda masih memiliki / usr / local yang Anda chown-ed dalam versi lama.
albb
6

Kami sekarang membuat semua direktori root /usr/localyang Anda butuhkan dan memeriksa kepemilikannya alih-alih mengharuskannya /usr/localsendiri.

Mike McQuaid
sumber