macos - ¿Cómo arreglar los permisos de homebrew?
libjpeg (19)
Como primera opción para quienquiera que llegue aquí como lo hice yo, sigue lo que esto te sugiera:
brew doctor
Es el camino más seguro, y entre otras cosas, me sugirió:
sudo chown -R $(whoami) /usr/local
Lo que resolvió esa cuestión de permisos.
El OP hizo precisamente eso, pero aparentemente no recibió la sugerencia anterior; Podrías, y siempre es mejor empezar allí.
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 obtengo:
$ 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'' resulta en
Error: Permission denied - /usr/local/opt/jpeg
Esto es lo que lee mi doctor de cerveza
$ 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 permiso ha hecho que sea imposible usar brew en cualquier cosa y realmente agradecería cualquier sugerencia.
El comando de la answer votada no funciona para mí.
Tiene salida:
chown: / usr / {my_username} dmin: nombre de usuario ilegal
Este comando funciona bien (el grupo para / usr / local ya era admin
):
sudo chown -R $USER /usr/local
En realidad es muy simple, ejecuta este comando: brew doctor
Y le dirá qué hacer para solucionar los problemas de permisos, por ejemplo, en mi caso:
Este fue el problema:
Warning: The following directories are not writable by your user:
/usr/local/share/man/man5
/usr/local/share/man/man7
Y esta fue la solución:
You should change the ownership of these directories to your user.
sudo chown -R $(whoami) /usr/local/share/man/man5 /usr/local/share/man/man7
Esto solucionó el problema para mí.
sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew
sudo chown -R "$USER":admin /usr/local
Hay un script asesino en github que corrige los permisos en los directorios / usr / local y brew para que todos los 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 cambia los directorios / usr / local / ___ a $ USER, entonces rompe cualquier otro usuario administrador de homebrew en esa máquina.
Aquí están las agallas de la secuencia de comandos 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
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 se debió específicamente a la ejecución de sudo con brew cask y luego a una contraseña incorrecta. Después de esto, me quedé atascado con los permisos que impiden la instalación.
Intenta también ejecutar este comando
sudo chmod + t / tmp
No quería meterme con los permisos de las carpetas, así que hice lo siguiente:
brew doctor
brew upgrade
brew cleanup
Entonces pude continuar instalando con éxito mi otra fórmula de preparación.
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
Para resolver errores en los permisos de Brew en la carpeta
brew prune
Esto resolverá los problemas y no tenemos que chown ningún directorio.
Pude resolver el problema usando chown
en la carpeta:
sudo chown -R "$USER":admin /usr/local
También (lo más probable) tendrás 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 alteró el permiso de mi carpeta en /usr/local
, desde aquí en adelante todas las instalaciones con brew han probado ser exitosas.
Esta respuesta es cortesía del rastreador de problemas de homebrew de gitHub
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
Si desea un enfoque un poco más específico que la manta- chown -R
, puede encontrar útil este script fix-homebrew
:
#!/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 hacer un chmod
a su usuario, le otorga al grupo de admin
(al que presumiblemente pertenece) acceso de escritura a los directorios específicos en /usr/local
que utiliza Homebrew. También le dice exactamente lo que pretende hacer antes de hacerlo.
Si estás en High Sierra, / usr / local ya no puede ser chown''d. Puedes usar:
sudo chown -R $ (whoami) $ (brew --prefix) / *
Si no tiene la última versión de Homebrew: "Lo arreglé" en el pasado forzando a Homebrew a ejecutarse como root, lo que solo se podrí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, no funciona correctamente de otra manera.
Tengo OSX High Sierra y no tenía la carpeta /user/local/Frameworks
, así que esto me lo arregló
sudo mkdir -p /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/Frameworks
Todas estas sugerencias pueden funcionar. En la última versión de brew doctor, sin embargo, se hicieron mejores sugerencias.
En primer lugar, corrija el desorden que probablemente ya haya hecho de /usr/local
ejecutando esto en la línea de comandos:
sudo chown -R root:wheel /usr/local
A continuación, tome posesión de las rutas que deben 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 la sudo brew update
y luego lee todas las advertencias y errores con los que se encontrará ...
Tuve este problema ... Una solución de trabajo es cambiar la propiedad de /usr/local
al usuario actual en lugar de la root
mediante:
sudo chown -R $(whoami):admin /usr/local
Pero en realidad esta no es una forma adecuada. Principalmente si su máquina es un servidor o multiusuario.
Mi sugerencia es cambiar la propiedad como se indica arriba y hacer lo que quieras implementar con Brew .. (actualizar, instalar ... etc) y luego restablecer la propiedad a la 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.
cd /usr/local && sudo chown -R $(whoami) bin etc include lib sbin share var opt Cellar Frameworks