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
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 soy 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?
EDITAR: El problema ahora está solucionado en Homebrew:
Si aún experimenta el problema, actualice Homebrew de esta manera:
brew update
Si desea saber cuál fue el problema, he guardado mi respuesta original a continuación.
Estoy experimentando exactamente el mismo problema y, en mi opinión, el problema está en brew doctor
lugar de en su instalación y en la mía.
Creo que debería ignorar el problema en lugar de cambiar la propiedad de /usr/local
. Alternativamente, puede corregir su secuencia de brew doctor
comandos local hasta que se publique una corrección. Vea abajo.
No considero correcto hacer /usr/local
propiedad de un usuario específico. Tengo más de un usuario administrador en esta máquina. Debe dejar /usr/local
Propiedad de root:admin
como propietario y grupo.
Al igual que para usted, tengo una /usr/local
que mi usuario puede escribir perfectamente, que también es miembro del admin
grupo:
$ 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 escribible:
$ 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 del brew doctor
código me llevó a la conclusión de que el uso de la función Ruby Pathname.writable?
está causando el problema. Considere esta sesión interactiva de Ruby:
$ irb
>> require 'pathname'
=> true
>> Pathname('/usr/local').writable?
=> false
La función Pathname.writable?
dice /usr/local
que no se puede escribir aunque sabemos que sí.
Usar Pathname.writable_real?
en su lugar da el resultado correcto: dice que se puede escribir en el directorio:
>> Pathname('/usr/local').writable_real?
=> true
Esto debería arreglarse 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 aquí y aquí ):
writable?(nombre_de_archivo) → verdadero o falso: Devuelve verdadero si el identificador de usuario efectivo de este proceso puede escribir en el archivo nombrado.
writable_real?(file_name) → verdadero o falso: Devuelve verdadero si el identificador de usuario real de este proceso puede escribir en el archivo nombrado.
writable_real?
... ¿quizás es hora de una solicitud de extracción? :-)Creo que solo necesitas esto:
brew update
Luego inténtalo de brew doctor
nuevo.
Es posible que aún obtenga errores sobre las dependencias que no está usando (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, así que también está bien.
Para el beneficio de los demás: tenga en cuenta que debe iniciar sesión como administrador al hacer esto para que funcione.
Seguí una combinación de las sugerencias de iolsmit y Phil M: mezclé estos directorios con mi nombre de usuario, luego corrí brew update
de nuevo 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!
Pulgares arriba para la investigación y aclaración de @mgd... ¡es perfecto!
Parece que se planteó un problema similar en github.com hace aproximadamente un año, pero nunca se resolvió (¿correctamente?) , al menos no mediante el uso de writable_real?
... ¿quizás es hora de una solicitud de extracción? :-)
olsmit
mgd
/usr/local
debería pertenecerme a mí cuando esta máquina tiene múltiples usuarios administradores. Además, me es posible escribir a los lugares de los quebrew doctor
se queja. ¿Alguna otra idea?