Cómo resolver errores de permisos en OS X Lion después de la instalación de Homebrew

9

Acabo de actualizar de Snow Leopard a Lion y estoy tratando de instalar Homebrew. Sin embargo, después de la instalación, ejecuto brew doctor según las instrucciones de instalación, y veo una serie de errores que indican que los directorios / usr / local no se pueden escribir. Por ejemplo:

Error: /usr/local/share isn't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew.

If a brew tries to write a file to this directory, the install will
fail during the link step.

You should probably 'chown' /usr/local/share

Obtengo estos para un montón de directorios:

You should probably 'chown' /usr/local/include

You should probably 'chown' /usr/local/share

You should probably 'chown' /usr/local/share/man

No puedo entender por qué aparece este error, ya que parece que formo parte del grupo de Unix que tiene permisos de escritura en estos directorios:

Mini:~ felciano$ ls -ld /usr/local/share
drwxrwxr-x  4 root  admin  136 May 13 15:53 /usr/local/share
Mini:~ felciano$ whoami
felciano
Mini:~ felciano$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root felciano
Mini:~ felciano$

¿Qué me estoy perdiendo?

    
pregunta Ramon 19.05.2012 - 07:25

4 respuestas

7

EDITAR: El problema ahora se ha solucionado en Homebrew:

Si aún experimenta el problema, actualice Homebrew así:

brew update

Si quieres saber cuál fue el problema, he mantenido mi respuesta original a continuación.

Ignorar el problema de permisos por ahora

Estoy experimentando exactamente el mismo problema y, en mi opinión, el problema está en brew doctor en lugar de en tu y mi instalación.

Creo que deberías ignorar el problema en lugar de cambiar la propiedad de /usr/local . Alternativamente, puede corregir su script local brew doctor hasta que se lance una solución. Vea abajo.

No considero correcto hacer que /usr/local sea propiedad de un usuario específico. Tengo más de un usuario administrador en esta máquina. Debe dejar a /usr/local propiedad de root:admin como propietario y grupo.

Mi investigación

Al igual que para ti, tengo un /usr/local que mi usuario puede escribir perfectamente, que también es miembro del grupo admin :

$ ls -ld /usr/local/
drwxrwxr-x  14 root  admin  476 22 Jun 23:33 /usr/local/
$ whoami
mgd
$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root mgd rgd

Probemos que el directorio es realmente de escritura:

$ ls -l /usr/local/newfile
ls: /usr/local/newfile: No such file or directory
$ touch /usr/local/newfile
$ ls -l /usr/local/newfile
-rw-r--r--  1 mgd  admin  0 23 Jun 14:52 /usr/local/newfile

Una mayor investigación sobre el código brew doctor me llevó a la conclusión de que el uso de la función ruby Pathname.writable? está causando el problema. Considera esta sesión interactiva de Ruby:

$ irb
>> require 'pathname'
=> true
>> Pathname('/usr/local').writable?
=> false

La función Pathname.writable? dice que /usr/local no se puede escribir aunque sabemos que lo es.

En lugar de utilizar Pathname.writable_real? , se obtiene el resultado correcto: dice que el directorio es de escritura:

>> Pathname('/usr/local').writable_real?
=> true

Esto debería ser arreglado en /usr/local/Library/Homebrew/cmd/doctor.rb . Puede arreglarlo en su propia instalación mientras espera una solución.

La diferencia entre las dos funciones es (según los documentos de Ruby here y aquí ):

¿se puede escribir? (nombre_archivo) → verdadero o falso: Devuelve verdadero si el archivo nombrado se puede escribir con el ID de usuario efectivo de este proceso.

writable_real? (file_name) → verdadero o falso: Devuelve verdadero si el archivo nombrado se puede escribir con el ID de usuario real de este proceso.

    
respondido por el mgd 23.06.2012 - 15:17
0

Creo que solo necesitas esto:

brew update

Luego, intente brew doctor otra vez.

Es posible que aún tenga errores sobre las dependencias que no esté utilizando (Java en mi caso), lo cual está bien. Si tiene instaladas las Herramientas de línea de comandos para Xcode en lugar de la instalación completa de Xcode, también recibirá un mensaje de error que indica que tiene una ruta no válida, pero justo en el mensaje también leerá que no hay una ruta válida si está simplemente usando las herramientas de línea de comandos para Xcode, también está bien.

Para el beneficio de los demás: tenga en cuenta que debe iniciar sesión como administrador cuando haga esto para que funcione.

    
respondido por el Phil M 20.05.2012 - 07:09
0

Seguí una combinación de las sugerencias de iolsmit y Phil M: coloqué estos directorios en mi nombre de usuario y luego volví a ejecutar brew update seguido de brew doctor . Esto eliminó todos los mensajes de error y las instalaciones de preparación ahora parecen funcionar bien. ¡Gracias a los dos!

    
respondido por el Ramon 24.05.2012 - 19:59
0

¡Aprobado por la investigación y aclaración de @mgd ... es perfecto!

Parece que surgió un problema similar en github.com hace aproximadamente un año, pero nunca fue < em> (¿apropiadamente?) resuelto, al menos no usando writable_real? ... tal vez es hora de una solicitud de extracción? :-)

    
respondido por el pvandenberk 09.07.2012 - 17:11

Lea otras preguntas en las etiquetas