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

gaggina
fuente
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
jrwren
fuente
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
Durul Dalkanat
fuente
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
Ana isabel
fuente
37

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

sudo chown -R $(whoami) /usr/local
Fornido
fuente
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.

Pro
fuente
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

Mahi
fuente
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
karlingen
fuente
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
Max
fuente
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.

Jonathan James
fuente
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
7

Trabaja para mi

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

$ cd /usr/local/Library && git stash && git clean -d -f
Alexander Salas Bastidas
fuente
5

Mismo error en MacOS 10.13

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

Miguel
fuente
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
Waldencoder
fuente
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.

JayRizzo
fuente
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.

Sven
fuente
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/

agregar-punto y coma
fuente
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.

adamkski
fuente
2

Primero necesitas crear el directorio:

sudo mkdir /usr/local/include

Segundo:

sudo chown -R $(whoami) $(brew --prefix)/*
gugapc
fuente
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.

Tarun
fuente
1

Vaya al directorio / bin y escriba:

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

Yusuf
fuente