Brew doctor dice: "Advertencia: / usr / local / include no se puede escribir".


352

Brew doctor dice:

Advertencia: / usr / local / include no se puede escribir. Esto puede suceder si "sudo make install" software que no es administrado por Homebrew.

Si una cerveza intenta escribir un archivo de encabezado en este directorio, la instalación fallará durante el paso del enlace.

Probablemente debería chown/ usr / local / include

He intentado diferentes comandos para resolver esto, pero todavía estoy atrapado aquí.

Estoy ejecutando homebrew en 10.8.2


1
Obtuve un error similar para "/ usr / local / lib" en Homebrew 0.9.4 que también se resolvió con la solución a continuación.
JeremiahLee

Respuestas:


680

Asumir la propiedad y todo lo que contiene.

Mac OS High Sierra o más reciente: (escriba a Kirk en los comentarios a continuación)

$ sudo chown -R $(whoami) $(brew --prefix)/*

Versiones anteriores de macos:

$ sudo chown -R $USER:admin /usr/local/include

Entonces haz otro

$ brew doctor

13
¿operación no permitida?
topwik

68
¿Alguna ventaja en lugar de $ sudo chown -R `whoami` /usr/local/?
Labu

2
@WillemLabu una bifurcación de proceso menos? whoami es una identificación de usuario efectiva y, como dice la página del manual, está obsoleta :) bash es el shell predeterminado en OSX y en algún lugar el USUARIO se está configurando.
jrwren

77
Me pregunto si cambiar la propiedad de / usr / local a un usuario es una solución limpia. ¿No sería mejor agregar $ USER al grupo 'rueda'? ¿O cambiar el grupo de / usr / local al grupo de administración?
Michael Lehn

13
Según Homebrew en Mac OS, High Chown /usr/localya no funciona. En lugar de utilizarsudo chown -R $(whoami) $(brew --prefix)/*
Kirk Hammett

115

Lo que funcionó para mí también fue

sudo chmod g+w /usr/local
sudo chgrp staff /usr/local

20
Esta es la única solución sensata, no realmente sensata para tomar posesión de / usr / local en un sistema
operativo

3
¡Necesito darle a este chico algunos votos! ;) Esto funcionó muy bien.
jrista

1
Esta es la mejor solución en mi humilde opinión
jacurtis

55
Bueno, no en High Sierra. "No se puede cambiar el modo de archivo en / usr / local: operación no permitida"
user980018

1
@ user980018 Me encontré con lo mismo: aquí está la solución que usé
Casey Davidson el

38

Lo que funcionó para mí fue

$ sudo chown -R yourname:admin /usr/local/bin

37

El único que me funcionó en El Capitán fue:

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

55
chown: / usr / local: Operación no permitida
AlxVallejo

1
@AlxVallejo hacerlo en / usr / local / bin locales trabajado para mí
marcotama

23

Si está en High Sierra y experimenta este problema, siga los pasos a continuación ( Nota: / usr / local no se puede encontrar en High Sierra ):

sudo mkdir /usr/local/include
sudo chown -R $(whoami) $(brew --prefix)/*

Luego intente vincular con brew link. Estaba experimentando un problema similar y ninguna de las soluciones anteriores funcionó para High Sierra. Espero que esto ayude a alguien.


21

Para High Sierra:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Luego, pruebe sus comandos de preparación.

Edición 3285


2
No estoy seguro de por qué se rechazó esto, si anteriormente había instalado brew y actualizado a High Sierra, reinstalar Homebrew soluciona el problema. Este es el enfoque más fácil
sam9046

Irónicamente, eso se debe a que el guión hace exactamente lo que sugieren las otras respuestas.
ligereza corre en órbita el

Esto funcionó para mí, pero primero desinstalé el anterior usando: ruby ​​-e "$ (curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall )"
abbas

12

Puede alias el comando para solucionar este problema en su .bash_profiley ejecutarlo cada vez que lo encuentre:

Al final del archivo ~/.bash_profile, agregue:

alias fix_brew='sudo chown -R $USER /usr/local/'

Y ahora dentro de su terminal puede ejecutar:

$ fix_brew

12

Esto funcionó para mí en macOS 10.12

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

Tuve el problema de actualizar homebrew con el siguiente error:

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

8

Para algunos será:

sudo chown -R JonJames:admin /usr/local/lib

donde "lib" se usa en lugar de "bin" o "include" o "cualquier otra cosa"

La Advertencia de Homebrew "debería" explicar qué específicamente no se puede escribir y luego darle una sintaxis de comando para seguir, sin embargo, deberá usar ":" en lugar de lo que menciona la Advertencia, que en realidad no es la sintaxis correcta.


Creo que la sintaxis de la Advertencia es un poco confusa, le envié un correo electrónico al colaborador principal de Homebrew para preguntarle si cambiarían algo al respecto, esperando respuesta, tal vez la palabrería de la Advertencia cambie en futuras actualizaciones de cerveza ...
Jonathan James

¡Gracias! Esto funcionó después de una buena cantidad de búsquedas.
thiswayup


5

Mismo error en MacOS 10.13

/usr/local/includey /usr/local/ /usr/libno fueron creados. Creé manualmente y brew linkfinalmente trabajé.


3

Debe crear / usr / local / include y / usr / local / lib si no existen:

$ sudo mkdir -p /usr/local/include
$ sudo chown -R $USER:admin /usr/local/include

3

Lo que funcionó para mí, mientras que tengo más de 1 usuario en mi computadora.

Usando terminal:

  • Corriendo brew doctor
    • Ver múltiples /usr/local/...no es un error de escritura
  • Deshabilitar la protección de integridad del sistema de Mac: https://apple.stackexchange.com/a/208481/55628
  • Ejecute lo siguiente
  • sudo chown -R $(whoami) /usr/local/*
  • brew doctor && brew upgrade && brew doctor

Ejecutando Macbook Pro OSX High Sierra (versión 10.13.3.)

EDITAR 1:

FYI: tenga en cuenta que esto causa un problema al ejecutar MySQL en su MAC.

Para poder iniciar mi servidor local, tuve que ejecutar:

sudo chown -R mysql:mysql /usr/local/mysql/data

Después de ejecutar esto, puede iniciar su servidor MySQL local.


1
¡Excelente! ¡Gracias!
shmuli

3
sudo mkdir -p /usr/local/include /usr/local/lib /usr/local/sbin

sudo chown -R $(whoami) /usr/local/include /usr/local/lib /usr/local/sbin

Esto creará todos los directorios necesarios y le dará la propiedad correcta.

Después de ejecutar estos comandos, verifique con: brew doctor

Esto funciona para Mojave.


2

Necesita obtener el control de todo /usr/localpara hacer eso, necesita hacer un recursivo chownbajo/usr/local

sudo chown -R YOUR_USERNAME:admin /usr/local/


2

Solo quiero hacer eco del modesto comentario de sam9046 como una solución alternativa y potencialmente mucho más fácil que funcionó en mi caso: desinstalar e instalar homebrew nuevamente desde cero. No se requieren comandos sudo.

También puede examinar / modificar el script de desinstalación desde ese enlace de arriba si necesita asegurarse de que no afectará a sus paquetes instalados previamente. En mi caso, esta era solo mi máquina doméstica, así que comencé de nuevo.



2

Primero necesitas crear el directorio:

sudo mkdir /usr/local/include

Segundo:

sudo chown -R $(whoami) $(brew --prefix)/*

1

Esto sucedió en mi organización después de que todos nuestros usuarios estuvieran vinculados al directorio activo (cambiando efectivamente el UID de 50x a ######).

Ahora se trata simplemente de cambiar la propiedad de todos los archivos que eran propiedad de xay.

Donde 501 es mi antiguo ID de usuario numérico que todavía está asociado con todos los archivos homebrew.

La identificación de usuario anterior se puede encontrar usando ll /usr/local/Cellar

Ahora actualice la propiedad sudo find /usr/local -user 501 -exec chown -h $USER {} \;

De esta forma, evitamos cambiar la propiedad de los archivos que no están controlados por homebrew o que pertenecen a algún otro usuario del sistema.


1

Vaya al directorio / bin y escriba:

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.