¿Cómo arreglar los permisos homebrew?

He desinstalado e instalado Homebrew 3 veces porque parece que nunca me permite instalar nada, ya que me niega los permisos al final de la mayoría de las instalaciones.

Como ejemplo, publicaré este escenario de descarga libjpeg que estoy enfrentando actualmente.

Intento instalar libjpeg y obtener:

$ brew install libjpeg ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/jpeg-8d.mountain_lion.bottle.1.tar.gz Already downloaded: /Library/Caches/Homebrew/jpeg-8d.mountain_lion.bottle.1.tar.gz ==> Pouring jpeg-8d.mountain_lion.bottle.1.tar.gz Warning: Could not link jpeg. Unlinking... Error: The brew link step did not complete successfully The formula built, but is not symlinked into /usr/local You can try again using `brew link jpeg' Error: Permission denied - /usr/local/opt/jpeg 

‘brew link jpeg’ resultados en

 Error: Permission denied - /usr/local/opt/jpeg 

Esto es lo que mi médico elabora

 $ brew doctor Warning: "config" scripts exist outside your system or Homebrew directories. ./configure scripts often look for *-config scripts to determine if software packages are installed, and what additional flags to use when compiling and linking. Having additional scripts in your path can confuse software installed via Homebrew if the config script overrides a system or Homebrew provided script of the same name. We found the following "config" scripts: /Library/Frameworks/Python.framework/Versions/2.7/bin/python-config /Library/Frameworks/Python.framework/Versions/2.7/bin/python2-config /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config Warning: You have unlinked kegs in your Cellar Leaving kegs unlinked can lead to build-trouble and cause brews that depend on those kegs to fail to run properly once built. Run brew link on these: jpeg 

Este problema de permisos ha hecho que sea imposible usar cerveza en cualquier cosa y realmente agradecería cualquier sugerencia.

Pude resolver el problema usando chown en la carpeta:

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

También (muy probablemente) tendrá que hacer lo mismo en /Library/Caches/Homebrew :

 sudo chown -R "$USER":admin /Library/Caches/Homebrew 

Aparentemente había usado sudo antes de una manera que alteraba mi permiso de carpeta en /usr/local , de aquí en adelante todas las instalaciones con brew han demostrado ser exitosas.

Esta respuesta es cortesía del rastreador de problemas homebrew de gitHub

Nuevo comando para usuarios en macOS High Sierra ya que no es posible chown en /usr/local :

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

referencia: https://github.com/Homebrew/brew/issues/3228

Como primera opción para quien aterrice aquí como lo hice, siga lo que esto sugiera que haga:

 brew doctor 

Es el camino más seguro, y entre otras cosas, me sugirió que:

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

que resolvió ese problema de permisos.

El OP hizo exactamente eso, pero aparentemente no recibió la sugerencia anterior; es posible, y siempre es mejor comenzar allí.

Tuve este problema. Una solución de trabajo es cambiar la propiedad de /usr/local al usuario actual en lugar de root por:

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

Pero realmente esta no es una forma adecuada. Principalmente si su máquina es un servidor o un usuario múltiple.

Mi sugerencia es cambiar la propiedad como se indica más arriba y hacer lo que quiera implementar con Brew .. (actualizar, instalar … etc.) y restablecer la propiedad a raíz como:

  sudo chown -R root:admin /usr/local 

Eso resolvería el problema y mantendría la propiedad establecida en el conjunto adecuado.

Si está en High Sierra, / usr / local ya no puede ser elegido. Puedes usar:

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

El comando de la respuesta más votados no funciona para mí.

Obtuvo salida:

chown: / usr / {mi_nombredeusuario} dmin: nombre de usuario ilegal

Este comando funciona bien (el grupo para / usr / local ya era admin ):

 sudo chown -R $USER /usr/local 

Si desea un enfoque un poco más específico que el chown -R manta chown -R , puede encontrar este script fix-homebrew útil:

 #!/bin/sh [ -e `which brew` ] || { echo Homebrew doesn\'t appear to be installed. exit -1 } BREW_ROOT="`dirname $(dirname $(which brew))`" BREW_GROUP=admin BREW_DIRS=".git bin sbin Library Cellar share etc lib opt CONTRIBUTING.md README.md SUPPORTERS.md" echo "This script will recursively update the group on the following paths" echo "to the '${BREW_GROUP}' group and make them group writable:" echo "" for dir in $BREW_DIRS ; do { [ -e "$BREW_ROOT/$dir" ] && echo " $BREW_ROOT/$dir " } ; done echo "" echo "It will also stash (and clean) any changes that are currently in the homebrew repo, so that you have a fresh blank-slate." echo "" read -p 'Press any key to continue or CTRL-C to abort.' echo "You may be asked below for your login password." echo "" # Non-recursively update the root brew path. echo Updating "$BREW_ROOT" . . . sudo chgrp "$BREW_GROUP" "$BREW_ROOT" sudo chmod g+w "$BREW_ROOT" # Recursively update the other paths. for dir in $BREW_DIRS ; do { [ -e "$BREW_ROOT/$dir" ] && ( echo Recursively updating "$BREW_ROOT/$dir" . . . sudo chmod -R g+w "$BREW_ROOT/$dir" sudo chgrp -R "$BREW_GROUP" "$BREW_ROOT/$dir" ) } ; done # Non-distructively move any git crud out of the way echo Stashing changes in "$BREW_ROOT" . . . cd $BREW_ROOT git add . git stash git clean -d -f Library echo Finished. 

En lugar de hacerle un chmod a su usuario, le da al grupo de admin (al que presumiblemente pertenece) acceso de escritura a los directorios específicos en /usr/local que usa homebrew. También le dice exactamente lo que pretende hacer antes de hacerlo.

Esto resolvió el problema antes que yo.

 sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew sudo chown -R "$USER":admin /usr/local 

No quería perder el tiempo con los permisos de la carpeta, así que hice lo siguiente:

brew doctor
brew upgrade
brew cleanup

Luego pude continuar la instalación de mi otra fórmula de cerveza con éxito.

Todas estas sugerencias pueden funcionar. En la última versión del brew doctor, se hicieron mejores sugerencias.

En primer lugar, solucione el problema que probablemente ya haya cometido con /usr/local ejecutando esto en la línea de comando:

sudo chown -R root:wheel /usr/local

Luego tome posesión de las rutas que deberían ser específicamente para este usuario:

 sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin /usr/local/var /usr/local/Frameworks /usr/local/lib/pkgconfig /usr/local/share/locale 

Toda esta información está disponible si ejecuta sudo brew update y luego lee todas las advertencias y errores con los que se encontrará …

Resolví mi problema con estos comandos:

 sudo mkdir /usr/local/Cellar sudo mkdir /usr/local/opt sudo chown -R $(whoami) /usr/local/Cellar sudo chown -R $(whoami) /usr/local/opt 

Hay una secuencia de comandos asesina en github que arregla las permanentes en / usr / local y elabora directorios para que todos los que sean miembros del grupo “admin” puedan acceder a ellos.

https://gist.github.com/jaibeee/9a4ea6aa9d428bc77925

Esta es una solución mejor que la respuesta elegida, ya que si seleccionas los directorios / usr / local / ___ en $ USER, rompes cualquier otro usuario administrador de homebrew en esa máquina.

Aquí están las agallas del guión en el momento en que publiqué esto:

 chgrp -R admin /usr/local chmod -R g+w /usr/local chgrp -R admin /Library/Caches/Homebrew chmod -R g+w /Library/Caches/Homebrew chgrp -R admin /opt/homebrew-cask chmod -R g+w /opt/homebrew-cask 

Si no tiene el último Homebrew: “solucioné” esto en el pasado al forzar a Homebrew a ejecutar como root, lo cual solo se podía hacer cambiando la propiedad de los ejecutables de Homebrew a root. En algún momento, eliminaron esta característica.

Y sé que darán muchas advertencias diciendo que no debería ejecutarse como root, pero vamos, de lo contrario no funciona.

Intenté todo en esta página, terminé usando esta solución:

brew uninstall --force brew-cask; brew untap $tap_name; brew update; brew cleanup; brew cask cleanup;

Mi situación era similar a la OP, sin embargo, mi problema fue específicamente causado por ejecutar sudo con brew cask, y luego obtener mi contraseña incorrecta. Después de esto, me quedé con permisos impidiendo la instalación.

intente también ejecutar este comando

sudo chmod + t / tmp