Instalación en errores de Homebrew

112

Intentando instalar rvm y ruby ​​1.9.2

Ya instalé homebrew y git, pero no pude obtener actualizaciones completas porque seguía recibiendo errores de permisos. Snow Leopard reinstalado y permisos reparados.

Ahora esto pasa ...

$ brew instalar wget

Error: no se puede escribir en / usr / local / Cellar

Ibrahim
fuente
stackoverflow.com/questions/4804169/… debe marcarse como respuesta aceptada; me temo que los visitantes que no vean que esta pregunta no ha sido respondida, seguirán adelante
dmo

Respuestas:

274

sudo chown -R $USER /usr/local

Tendrás que darte la propiedad de /usr/local/usar esa línea allí mismo. Tuve que hacer esto yo mismo después de usar el ruby ​​one-liner en la parte superior de los documentos oficiales para instalar Homebrew. Funcionó como un encanto para mí. Debería ser la única vez que necesitará hacerlo sudocon Homebrew.

No estoy seguro de si el rubí de una sola línea hace esto. Si lo hizo, entonces algo más en mi sistema tomó el control /usr/localdesde entonces.

Editar : me perdí por completo esto, pero @samvermette no (vea las respuestas a mi respuesta): si ejecuta este comando anterior y tiene algo instalado a través de homebrew que requiere permisos especiales de usuario, como mysql, asegúrese de devolver esos permisos (como el comando anterior le da propiedad recursiva a todo lo que hay dentro /usr/localde usted ( $USER). En el caso de mysql, es ...

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

Ben Kreeger
fuente
16
Tenga en cuenta : este comando eliminará la propiedad de / usr / local / mysql / data del mysqlusuario. En mi caso, eso impidió que mysql se iniciara. sudo chown -RL mysql:mysql /usr/local/mysql/data
Arregle
24
Evité el problema de mysql usando sudo chown -R $USER /usr/local/Cellarcomo /usr/local/ya tenía los permisos correctos para mí
Parker
1
Lamentablemente, los usuarios vienen y los usuarios se van ... quizás algún día Ibrahim regrese y lo marque. Tal vez. (Probablemente no.)
Ben Kreeger
4
No me gusta esta respuesta. Asume que solo un usuario usa el sistema y que el usuario debe poseer todo / usr / local, a pesar de que la pregunta es solo sobre homebrew. ¿La preparación no funciona con sistemas multiusuario? Es una respuesta descuidada, incluso si funciona. Además, no explica cómo un usuario pudo haber encontrado esta situación. Sugerencia: instalé HomeBrew usando las instrucciones canónicas, luego restauré desde una copia de seguridad de TimeMachine (a otra máquina). Sospecho que fue esa restauración la que alteró la propiedad del archivo.
Jason R. Coombs
1
Estoy de acuerdo con @ JasonR.Coombs; la gente no debería usar esta solución descuidada sin comprender las ramificaciones prácticas y de seguridad. Cualquier software en / usr / local ahora puede ser sobrescrito por cualquier cosa que se ejecute debajo de su usuario, abriendo un agujero de seguridad. Es muy posible que arruine algo más (además de MySQL) ejecutando ciegamente el primer comando chown, después de lo cual será demasiado tarde para identificar y arreglar todo lo que pueda haber arruinado.
robo el
41

Tuve este problema después de actualizar a Mavericks, y esta página fue el resultado de búsqueda principal al buscar en Google el mensaje de error. Continué buscando y encontré esta respuesta en stack overflow.com . Dicho de manera concisa, es:

sudo chmod a+w /usr/local/Cellar

Esto solucionó el problema para mí, y como solo cambia los permisos para la ruta específica a la que se hace referencia en el mensaje de error, parecía poco probable que tuviera efectos secundarios negativos con otras instalaciones.

Pongo esta respuesta aquí para cualquier otra persona que pueda encontrar esta página primero como lo hice yo. Sin embargo, el crédito debería ir a jdi .

Nathan
fuente
2
¿Se considera esto inseguro, ya que ahora todos pueden escribir a / usr / local / Cellar?
David Welch
Esta respuesta falla para los paquetes que requieren acceso a otras carpetas (como /usr/local/bin).
Jason R. Coombs
11

¿Puede permitir que solo los usuarios administradores escriban en /usr/local/?

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

Ya que cada usuario que pertenezca al grupo Admin, podrá instalar nuevas dependencias.

Swilgosz
fuente
Parece una mejor solución para máquinas con múltiples administradores (aunque mi directorio / usr / local / lib también necesitaba g + x para que funcione aspell).
James Snook
1
Para evitar que aparezca el error "El paso" brew link "no se completó correctamente", también puede aplicar lo que hay en este hilo , es decir sudo chgrp -R admin /usr/local/DDDD+ sudo chmod -R g+w /usr/local/DDDDdonde DDDD es bin , share , Library / LinkedKegs , opt
superk
1
Thnx para la respuesta, tuve que usar "sudo", por lo que si este comando no funciona, intente prefijarlo con sudo
MQoder
2

desinstale y vuelva a instalar HomeBrew que hará el truco

Ricardo Marín
fuente
1

Sugiero asegurarse de que el usuario actual sea miembro del grupo propietario de / usr / local. Creo que por defecto, ese grupo lo es wheel. Para hacerte miembro de ese grupo:

$ sudo dscl . append /Groups/wheel GroupMembership $USER

Aunque es un martillo poco elegante, tiene el efecto deseado: permite el acceso a elementos /usr/localque están destinados solo para su uso (lectura / escritura) por miembros elevados. Este enfoque tiene los beneficios del otro anterior porque aprovecha las membresías del grupo, lo que permite que múltiples usuarios (autorizados) en el sistema utilicen homebrew.

Jason R. Coombs
fuente
0

¿Cómo instalaste Homebrew? Sus instrucciones de instalación oficiales incluyen ejecutar un script ruby. Eso debería resolver los problemas de permisos por usted.

Si no desea ejecutar un script, hay una sección de esa página llamada "Instalación en / usr / local para desarrolladores" que explica el cambio en los permisos necesarios para el directorio / usr / local.

jhuebsch
fuente
Usé un script y se instaló, pero todavía tenía problemas para actualizar. Migré los datos del usuario a una computadora portátil nueva. Tuve que hacer algunas soluciones desde github porque el script no funcionó al principio.
Ibrahim
-3

EDITAR : Como se menciona en los comentarios, es una mala idea usar sudo con homebrew, ¡así que no use la siguiente respuesta!


También puede evitar este error si ejecuta el comando con sudo:

$ sudo brew install wget

Pero cuídate de usar sudoporque puedes cometer muchos errores.

Pascal
fuente
Este enfoque falla con las últimas versiones de homebrew que no permiten la invocación como root (a través de sudo).
Jason R. Coombs