Actualización de cerveza en El Capitan

38

Acabo de actualizar y El Capitan, cuando intenté actualizar brew, recibí el siguiente error:

$ brew update
Error: The /usr/local directory is not writable.
Even if this directory was writable when you installed Homebrew, other
software may change permissions on this directory. Some versions of the
"InstantOn" component of Airfoil are known to do this.

You should probably change the ownership and permissions of /usr/local
back to your user account.
  sudo chown -R $(whoami):admin /usr/local

Antes de proceder con la chownrecomendación, dado que El Capitán acaba de salir, ¿es esa la forma correcta de proceder aquí? ¿Por qué es necesario este paso y cuáles son las posibles consecuencias indeseables de ejecutar este comando?

En caso de que ayude, encontré dos problemas sobre El Capitán en brew: 40837 y 41665, pero la solución a este problema no estaba clara de inmediato. ¿Qué puedo hacer para seguir usando brewen El Capitan de manera confiable?

Amelio Vazquez-Reina
fuente
2
Bien, ¿hiciste lo que sugería el mensaje, cambiar la propiedad de /usr/local?
user3439894
Esto plantea una excelente pregunta para el caso de múltiples usuarios (o un usuario con múltiples cuentas que tienen diferentes perfiles) en la misma máquina.
Walt Stoneburner
44
Escribir sudo chown -Rme da los pelos de punta. No importa cuáles son los otros parámetros. Tengo más que Homebrew /usr/local, y no es un comando obviamente seguro. Confirmé a través de Time Machine que la instalación de El Capitan chowned, exclusivamente /usr/local, y no subdirectorios. Por lo tanto, pude evitar hacer una reversión no recursiva, es decir sudo chown $(whoami):admin /usr/local. YMMV.
duozmo
@duozmo tiene razón. El -Ren sudo chown -Restá muy pesado entregado. Eso equivale a que Brew reclama dominio sobre la totalidad de/usr/local
HairOfTheDog

Respuestas:

31

Quiero decir que te dan la solución allí mismo. Tuve el mismo problema y simplemente corrí:

  sudo chown -R $(whoami):admin /usr/local

Y funcionó.

Nombre para mostrar
fuente
1
+1 También necesitaba restablecer los permisos de mi usuario como se describe. No hay más problemas después de este pequeño ajuste: homebrew y mis paquetes han sido muy confiables en 10.11.
bmike
22
Esto realmente no responde la pregunta: se podría suponer que Apple bloqueó / usr / local por una razón y que esta solución NO es apropiada para El Capitan. Estoy buscando en Google ahora para ver si Apple proporciona alguna orientación. La pregunta es "... dado que El Capitán acaba de salir, ¿es esa la forma correcta de proceder aquí?"
Michael Welch
1
@MichaelWelch La respuesta se publicó antes de esa edición.
DisplayName
1
Lo siento @DisplayName, debería haber mirado las marcas de tiempo.
Michael Welch
2
Esta es la respuesta correcta. Ver github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/… - Corrí $ brew doctory descubrí que flacfaltaba una dependencia. Después $ brew install flactuve que correr tercamente $ brew updateun par de veces más.
Ando
9

Ya no necesitamos romper nuestras cabezas sobre esto. Arriesgué el consejo e hice el cambio de permiso sugerido. Luego, al actualizar al último homebrew, recibí este mensaje tranquilizador:

Homebrew ya no necesita ser propietario de / usr / local. Si lo desea, puede devolver / usr / local a su propiedad predeterminada con: sudo chown root: wheel / usr / local

JannieT
fuente
Entonces, ¿cómo resolver este problema?
Rajesh Maurya
@RajeshMaurya usa la solución por karolus
JannieT
8

Según algunas de las preguntas de seguridad anteriores, el cuadro de diálogo proporciona instrucciones para restablecer después de una actualización de preparación exitosa. despues de correr

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

Y entonces

brew update

Después de que la actualización se haya ejecutado con éxito, el cuadro de diálogo debe indicar hacer esto:

sudo chown root:wheel /usr/local

Después de que se haya ejecutado, eso debería aliviar cualquier problema de seguridad con MacOS 10.12

karolus
fuente
chown: / usr / local: Operación no permitida
Rajesh Maurya
6

La solución dada no funcionó para mí:

sudo chown -R $(whoami):admin /usr/local

Esta variación funcionó para mí:

sudo chown -R $USER /usr/local/

Brian Spiering
fuente
1
sudo chown -R $ USER / usr / local / trabajó para mí en el último macOS
Alex Trott
1
chown: / usr / local /: Operación no permitida
Rajesh Maurya
agregar y sudoluego escribir la contraseña de nivel raíz
Brian Spiering
1
Todavía conocido: / usr / local /: Operación no permitida incluso si escribo la contraseña de root.
2myCharlie
0

Lo arreglo usando este comando sudo chown -R admin /usr/local.

Lee Li
fuente
-1

mira el SIP con:

csrutil status

la protección de integridad del sistema se fija en "habilitar", con el último atributo de Apple 'restringido':

csrutil 
gran Ben
fuente
3
¿Cómo resuelve esto el problema planteado en la pregunta?
nohillside
-1

Funcionó para mi.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local
Mahfuz
fuente
1
Ambas soluciones no funcionan para mí. Todavía muestra: chown: / usr / local: Operación no permitida
2myCharlie
-2

La protección de la integridad del sistema necesita ser deshabilitada. Puedes hacerlo con esto.

sudo nvram boot-args="rootless=0";osascript -e 'tell app "loginwindow" to «event aevtrrst»’

Esto deshabilita todo el sistema de protección de integridad del sistema. Creo que también puedes hacerlo desde el modo de recuperación. Todavía tiene que escribir su contraseña de root cuando hace cosas con sudo, pero SIP no lo bloquea. Tampoco vas a abrir directorios sin querer tratando de establecer permisos.

Harry McGovern
fuente
3
No es necesario deshabilitar SIP para cambiar la propiedad a continuación /usr/local.
nohillside