¿Cómo Homebrew ya no necesita la propiedad de / usr / local?

28

Hoy corrí brew updatey después de migrar el repositorio, informó que ya no necesitaba la propiedad de /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

Este cambio parece un poco dudoso. ¿Cómo logra Brew este nuevo comportamiento, aparentemente evitando los controles de seguridad?

Jason R. Coombs
fuente
¿Qué controles de seguridad está pasando por alto? El /usr/localno está incluido en SIP. Consulte Acerca de la Protección de integridad del sistema en su Mac en "Rutas y aplicaciones que las aplicaciones y los instaladores de terceros pueden escribir para incluir:" /usr/localaparece en la lista.
user3439894
3
Dicho esto, al no ser un usuario de Homebrew, ya que compilo directamente del código fuente las utilidades que quiero que no están incluidas en OS X, no obstante imagino que Homebrew se ha reescrito según sea necesario / necesario para actuar normalmente como otras aplicaciones hecho en el pasado. ¡IMO Homebrew debería haber sido escrito desde el principio para no tener que usurpar la propiedad raíz para empezar!
user3439894
Quiero decir, si /usr/localy sus hijos son propiedad de root:admino root:wheelno son de escritura grupal, entonces no tengo acceso para escribir en esos directorios (y tampoco lo haría homebrew, presumiblemente), pero si ese es el caso, ¿cómo puede Homebrew administrar la instalación? y eliminar aplicaciones de esos lugares?
Jason R. Coombs
3
Solo estoy notando que el mensaje solo hace referencia /usr/localy no sus descendientes. Y mirando lo que hace una nueva instalación de homebrew, establece que todos los subdirectorios sean propiedad de $ USER y del grupo de escritura.
Jason R. Coombs

Respuestas:

19

De acuerdo con este script de ruby: update-report.rb , acaban de mover cosas a / usr / local / Homebrew, que aún es de tu propiedad.

albb
fuente
2
¿No es necesario que / usr / local pueda ser escrito por $ USER para que se cree / usr / local / Homebrew? ¿Qué pasa con otros directorios, como / usr / local / Cellar o / usr / local / opt? ¿Homebrew todavía no necesita acceso (no sudo) para escribir en esos directorios? ¿Cómo puede hacer eso si los directorios son propiedad de root y no se pueden escribir en grupo?
Jason R. Coombs
1
En la primera instalación, todavía usan sudo para crear el repositorio homebrew, vea instalar . La secuencia de comandos en mi respuesta para actualizar, en ese momento todavía posee / usr / local que conoció en la versión anterior.
albb
6

Ahora creamos todos los directorios raíz /usr/localque necesita y verificamos la propiedad de los mismos en lugar de exigirlos /usr/local.

Mike McQuaid
fuente