Lo uso homebrew
como administrador de paquetes para ciertas aplicaciones de desarrollo web. Para mantenerme brew
actualizado, corro update brew
cada dos días y también corro brew doctor
. Por lo general, esto está bien y brew
me dice que estoy listo para preparar cerveza.
Sin embargo, de vez en cuando, aparece el siguiente error:
Advertencia: / usr / local / etc no se puede escribir.
Esto puede suceder si "sudo make install" software que no es administrado por Homebrew. Si una fórmula intenta escribir un archivo en este directorio, la instalación fallará durante el paso del enlace.
Probablemente deberías
chown
/ usr / local / etcAdvertencia: el directorio / usr / local no se puede escribir. Incluso si este directorio se podía escribir cuando instaló Homebrew, otro software puede cambiar los permisos en este directorio. Se sabe que algunas versiones del componente "InstantOn" de Airfoil hacen esto.
Probablemente debería cambiar la propiedad y los permisos de / usr / local a su cuenta de usuario.
Es bastante fácil restablecer los permisos a mi nombre de usuario. Luego brew
parece estar bien.
Pero, ¿qué está causando que esto suceda?
¿Hay un registro que muestre qué está causando el cambio de los permisos?
fuente
/usr/local
. Pero si insiste, podríamake install
hacerlo sin usar lossudo
paquetes que usted mismo instala./usr/local
?Respuestas:
Tuve exactamente el mismo problema, y resulta que la actualización automática de Sophos fue la culpable. Me di cuenta de esto ejecutando:
sudo fs_usage | grep "usr/local"
Me tomó un tiempo, pero finalmente vi que el demonio de "Instalación" de Sophos se metía con los permisos de / usr / local.
Todavía estoy tratando de encontrar una solución adecuada para este comportamiento.
EDITAR: Creo que Sophos ha solucionado este problema, vea el enlace en los comentarios de esta respuesta. ¡Parece estar arreglado para mí al menos!
fuente
Resulta que Filewave es el culpable. Filewave es un software de administración del sistema utilizado por nuestra escuela para impulsar actualizaciones de software. Gracias por el aporte.
fuente
Solo tengo una idea aproximada de cómo obtener el ladrón de permisos. Esta no es una solución a su problema, sino más bien una solución alternativa.
¿Qué hay de escribir un perro guardián en Automator o con Hazel (acciones de carpeta) para ver esta carpeta en particular, pero en lugar de agregar una función como Escalar imágenes, solo usa un shellscript que ejecuta varios comandos de shell:
fuser <foldername>
.ps auxwwwwww | grep <process id>
) y finalmenteDesafortunadamente no soy un Automator sadhu, pero descubrí por Google que hay muchas soluciones para un problema tan similar.
fuente
Si usa Time Machine, puede encontrar el tiempo aproximado cuando los permisos cambiaron explorando
Backups.backupdb
en la Terminal. Usarls -ld
en las carpetas con marca de tiempo, p. Ej.Que mostrará información del propietario y del grupo.
Una vez que tenga la fecha en que ocurrió el cambio, puede detectar qué más podría haber cambiado en su sistema. Una técnica simple es utilizar el Archivo del buscador ›Buscar y agregar un
Last modified date
criterio. Otras buenas herramientas sonfind
ymdfind
en Terminal.fuente
Este es un efecto secundario de actualizar su sistema; OS X probablemente realiza algunas "reparaciones" de permisos generales durante el proceso de actualización, ya que / usr / local está anidado en una carpeta propiedad de la raíz.
fuente
¿Ha utilizado
Disk Utility
selectMacintosh HD
luego runVerify Disk Permission
y luegoRepair Disk Permission
si es necesario, en lugar de hacerlo manualmente?Ahora, esto no debería solucionar su problema, pero es un buen punto de partida 'conocido' para ver cuándo la preparación casera cambia los permisos. Podría mostrar el problema subyacente si tienes suerte.
También
new update -v
para obtener resultados más detallados, además de registros antiguos están aquí~/Library/Logs/Homebrew
según ¿Dónde se registra homebrew?fuente
Disk Utility
no verificaría ni repararía los permisos/usr/local
ya que este directorio no existe en una nueva instalación de Yosemite./usr/local
que me pertenece y ejecutándomeDU
. No hay ninguno/usr/local
dentro delDU
registro. Y/usr/local
aún me pertenece.