Hacer archivos en `/ usr / local` escribibles para homebrew


35

He estado tratando de hacer que homebrew funcione bien, pero parece que todo lo que hay dentro /usr/localno se puede escribir, y todo se cae.

Sigue diciéndome recursivamente chown /usr/local, y lo intenté. Operación negada, así que lo sudo. Parecía funcionar, pero con un silencio misterioso que escucho se considera cortés en Unix. Desafortunadamente, cualquier intento posterior de brew updateencontrarse con la misma cacofonía de errores.

Volví a ejecutar el comando con -vy parece que la operación no está permitida para nada dentro.

Aunque la respuesta es probablemente "aprender UNIX", solo estoy tratando de cumplir con algunos requisitos de trabajo aquí para un tutorial sobre Ruby, así que eso es unos pasos más arriba de donde estoy actualmente.

brew doctor:

Warning: /usr/local/Frameworks isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/Frameworks
Warning: /usr/local/Cellar isn't writable.
You should `chown` /usr/local/Cellar
Warning: /usr/local/etc isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/etc
Warning: /usr/local/include isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/include
Warning: /usr/local/lib isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib
Warning: /usr/local/lib/pkgconfig isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib/pkgconfig
Warning: /usr/local/opt isn't writable.
You should `chown` /usr/local/opt
Warning: /usr/local/share isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/share
Warning: Some directories in /usr/local/share/man aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.
You should probably `chown` them:

    /usr/local/share/man
    /usr/local/share/man/man1
    /usr/local/share/man/man3
    /usr/local/share/man/man5
    /usr/local/share/man/man7
    /usr/local/share/man/man8
Warning: /usr/local/var isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/var

¿ brew doctorTe dice algo útil? Publique la salida aquí.
Ian C.

@IanC. Es una larga lista de todo lo relacionado con la cerveza que no se puede escribir. ¿Existe una utilidad de pila de intercambio de stackexchange? Hay un montón de eso.
Tigt

Bueno, eso es raro. Ahora hay mucho menos de lo que había.
Tigt

Solo para tu información: acabo de correr brew updatey descubrí que "Homebrew ya no necesita tener la propiedad de / usr / local". Más información en esta pregunta . Obviamente para llegar a ese punto, aún necesitaría actualizar temporalmente los permisos en / usr / local :)
acobster

Respuestas:


26

Esto debería resolverse cambiando los permisos en ese directorio de la siguiente manera:

$ cd /usr/local
$ sudo chown -R <your-username>:<your-group-name> *

Si no conoce a su grupo, simplemente escriba id -g.


La parte importante es -Rhacerla recursiva. Y probablemente tengas que hacer el chownuso sudo. Para el grupo de usuarios, generalmente uso staffen OS X.
nwinkler

Interesante. ¿Por qué usar el grupo es tan diferente de solo el usuario?
Tigt

44
¿Por qué es correcto que / usr / local sea propiedad de su usuario? Creo que es un riesgo de seguridad, ya que hay muchos otros programas que usan / usr / local y podrían ser tomados en silencio. ¿Brew realmente necesita algo tan drástico?
dfrankow

1
Creo que esto es peligroso ya que selecciona el grupo 'personal', lo que significa que cada usuario en el sistema operativo puede alterar el contenido de / usr /. Probablemente deberías cambiar a 'admin'.
Invasión del

1
@dfrankow sí, este es un error de homebrew. Ni siquiera pensaron qué pasa si hay dos usuarios en la misma máquina.
Poige

22

Debe usar sudo para ejecutar el comando con privilegios elevados, como este:

sudo chown -R `whoami` /usr/local

Yo si. "Operación denegada, así que lo sudo".
Tigt

1
Para los usuarios de conchas de pescado serásudo chown -R (whoami) /usr/local
kibin el

10

Ayer me enfrenté a este problema con macOS 10.13.4 e intenté sudo chgrp -R admin /usr/localo sudo chown -R <your-username>:<your-group-name> /usr/localque recibí un Operation not permittederror a pesar de usarsudo

Así que intenté solo chgrppara la Homebrewcarpeta relacionada a admin(Mi usuario está en el admingrupo, depende del usuario que esté ejecutando, es posible que deba cambiar a un grupo diferente) y otorgue adminacceso de escritura grupal a esas carpetas con estos comandos

sudo chgrp -R admin /usr/local/Homebrew/
sudo chmod -R g+w /usr/local/Homebrew/
sudo chgrp -R admin /usr/local/var/homebrew/
sudo chmod -R g+w /usr/local/var/homebrew/

Después de ejecutar estos comandos, puedo instalar un nuevo paquete sin ningún problema. Si vuelve a encontrar algún problema con el permiso, intente ejecutar los dos primeros comandos reemplazando el nombre de la carpeta con el que está utilizando.

Espero que esto ayude a los otros usuarios con macOS 10.13.

Nota: Aunque cambiar el propietario /usr/localo el grupo /usr/localy otorgar el acceso para su grupo podría funcionar, NUNCA debe hacerlo ya que también está modificando la otra carpeta no relacionada. Modificar las carpetas que necesita es mucho más seguro.


¡Esto realmente me va bien! <3 gracias
DariusV

¡Esto debería votarse como la respuesta correcta! ¡Gracias por tu ayuda!
Yini

2

Para resolver los problemas de permisos en los directorios podemos ejecutar el siguiente comando:

brew prune

1

Funcionó para mi.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local

0

La respuesta de Reza en esta pregunta me funcionó:

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

No puede cambiar el permiso para / usr / local en sí, pero puede cambiar el permiso correcto para las carpetas debajo

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.