update tweaks aurman zsh zsh-completion

tweaks - zsh update



zsh compinit: directorios inseguros (9)

En macOS Sierra debe ejecutar: sudo chown -R $(whoami):staff /usr/local

¿Qué significa y cómo puedo solucionarlo?

zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]?

Ejecutar el compaudit devuelve lo siguiente:

There are insecure directories: /usr/local/share/zsh/site-functions


Estas dos líneas me han arreglado.

sudo chown -R _user_:root /usr/local/share/zsh sudo chown -R _user_:root /usr/local/share/zsh/*


Esto funciona para mi Mac después de la actualización de High Sierra.

Eliminar el acceso de escritura global:

sudo chmod g-w /usr/local/share/zsh/site-functions sudo chmod g-w /usr/local/share/zsh


Esto me lo arregló:

$ cd /usr/local/share/zsh $ sudo chmod -R 755 ./site-functions

Crédito: una publicación en la lista de correo zsh

EDITAR: Como señaló @biocyberman en los comentarios. Es posible que necesite actualizar también al propietario de site-functions del site-functions :

$ sudo chown -R root:root ./site-functions

En mi máquina (OSX 10.9), no necesito hacer esto, sino YMMV.

EDIT2: en OSX 10.11, solo esto funcionó:

$ cd /usr/local/share/ $ sudo chmod -R 755 zsh $ sudo chown -R root:staff zsh

También usuario: el personal es el permiso predeterminado correcto en OSX.


La mayoría de las respuestas vienen con una solución, pero no mencione por qué ocurre esta advertencia. Aquí hay un extracto del compinit de compinit :

Por razones de seguridad, compinit también comprueba si el sistema de finalización usaría archivos que no son propiedad de root o del usuario actual , o archivos en directorios que son de escritura mundial o grupal o que no son propiedad de root o del usuario actual . Si se encuentran dichos archivos o directorios, compinit preguntará si el sistema de finalización realmente debería ser utilizado. Para evitar estas pruebas y hacer que todos los archivos encontrados se usen sin preguntar, use la opción -u, y para hacer que compinit ignore silenciosamente todos los archivos y directorios inseguros use la opción -i. Esta comprobación de seguridad se omite por completo cuando se proporciona la opción -C.

Por lo tanto, la solución implica arreglar uno (o todos) de los siguientes:

  • estableciendo el usuario actual como el propietario de todos los directorios / subdirectorios / archivos en causa:

    compaudit | xargs chown -R "$(whoami)"

  • eliminando permisos de escritura para grupos / otros para los archivos en causa:

    compaudit | xargs chmod go-w

Otro enfoque sería omitir estos controles mediante el uso de

compinit -u

pero realmente no sugiero esto, ya que esconder problemas debajo de una alfombra solo resuelve problemas en el corto plazo.


La respuesta aceptada no funcionó para mí en macOs Sierra (10.12.1). Tuve que hacerlo recursivo de / usr / local

cd /usr/local sudo chown -R <your-username>:<your-group-name> *

Nota: Puede obtener su nombre de usuario con whoami y su grupo con id -g


Lo arreglé haciendo

sudo chown root:staff -R /usr/local/share/zsh

en mi caso, otros directorios dentro de compartir / también tienen asignado el grupo "staff"


Recibí las mismas advertencias cuando sudo -i comencé un shell raíz, la solución de @ chakrit no funcionó para mí.

Pero encontré -u interruptor de compinit funciona, por ejemplo, en su .zshrc / zshenv o donde llamó compinit

compinit -u

NB: No recomendado para el sistema de producción

Consulte también http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Initialization