EDIT: El problema es que ahora se fija en el Homebrew:
Si sigue experimentando el problema, la actualización de Homebrew como este:
brew update
Si desea saber cuál era el problema, he cumplido con mi respuesta original a continuación.
Ignorar la permisson problema por ahora
Estoy experimentando el mismo problema y en mi opinión el problema está en brew doctor
más que en el y mi instalación.
Creo que usted debe ignorar el problema, en lugar de cambiar la propiedad de la /usr/local
. Alternativamente, usted podría arreglar su local brew doctor
script hasta que se publique una solución. Ver a continuación.
Yo no lo considero correcto hacer /usr/local
de propiedad de un usuario específico. Puedo tener más de un usuario administrador en este equipo. Usted debe dejar a /usr/local
propiedad root:admin
como propietario y grupo.
Mi investigación
Para ti tengo un /usr/local
que es perfectamente modificable por mi usuario que es también un miembro de la 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
Vamos a probar que la dir es realmente 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
La investigación adicional en el brew doctor
código llevó a mi a la conclusión de que el uso de la ruby función Pathname.writable?
está causando el problema. Considere la posibilidad de esta interactivo de Ruby sesión:
$ irb
>> require 'pathname'
=> true
>> Pathname('/usr/local').writable?
=> false
La función Pathname.writable?
dice /usr/local
no tiene permisos de escritura, aun cuando sabemos que es.
El uso de Pathname.writable_real?
cambio da el resultado correcto – se dice que el dir se puede escribir:
>> Pathname('/usr/local').writable_real?
=> true
Esto debe ser corregido en /usr/local/Library/Homebrew/cmd/doctor.rb
. Se puede fijar en su propia instalación, mientras que a la espera de una solución.
La diferencia entre las dos funciones son (de acuerdo con el Rubí docs aquí y aquí):
escritura?(file_name) → true o false: Devuelve true si el nombre de fichero es modificable por el identificador de usuario efectivo de este proceso.
writable_real?(file_name) → true o false: Devuelve true si el nombre de fichero es modificable por el real id de usuario de este proceso.