¿Se puede eliminar el molesto mensaje de sudo de Mountain Lion 10.8.0?

11

Después de la actualización a 10.8.0, siempre que hago un sudo , siempre recibo este mensaje:

dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/sudo) is setuid or setgid

He comprobado mi .bash_profile , .zshrc todo lo que se me ocurre, y no veo nada relacionado con el entorno DYLD_ .

Después de buscar en Google durante horas, intenté poner estas dos líneas en mi .zshrc :

unset LD_LIBRARY_PATH  
unset DYLD_LIBRARY_PATH

Pero el mensaje molesto sigue apareciendo.

Voy a una cuenta de invitado e hice un sudo pero no recibí este mensaje. Así que supongo que tengo instalada una biblioteca personalizada ... Pero no sé cómo depurar esto.

    
pregunta BPm 30.07.2012 - 05:45

4 respuestas

6

¿Tienes algún otro conjunto de variables DYLD_? Ejecute set sin parámetros para ver todas las variables y desactive todo lo que aparezca con ese prefijo.

Tenga en cuenta que parece que esto es solo una solución para un error, esos mensajes no deberían imprimirse a menos que tenga habilitado DYLD_PRINT_WARNINGS.

Además, la actualización a 10.8.1 parece haber solucionado este problema.

    
respondido por el gabedwrds 30.07.2012 - 06:11
3

En zsh:

 sudo () { ( unset LD_LIBRARY_PATH DYLD_LIBRARY_PATH; exec command sudo $* ) }

Esto genera un sub-shell en el que las variables de entorno de las que se queja sudo no están establecidas, y luego se ejecuta sudo.

Las ventajas sobre algunas de las otras respuestas incluyen:

  • No elimina LD_LIBRARY_PATH y DYLD_LIBRARY_PATH de su entorno de shell interactivo (para comandos que no lo necesiten).
  • El uso de una subshell garantiza que si interrumpes el sudo mientras se está ejecutando (por ejemplo, con Ctrl-C), tu LD_LIBRARY_PATH y DYLD_LIBRARY_PATH se mantendrán sin cambios en tu shell principal (a diferencia del script en otra respuesta que los establece y los elimina en el shell interactivo).
  • El uso de exec garantiza que el shell primario, que de otro modo sería innecesario, se cierra inmediatamente cuando se invoca sudo, por lo que no hay procesos adicionales que permanezcan mientras se ejecuta el comando.

Lo dejaré como un ejercicio para que el lector lo transfiera a bash, et al.

    
respondido por el Pinko 26.02.2013 - 16:54
2

alrededor de los foros de soporte de Apple por yokyoh1987,

enlace

en su .profile / .bashrc / .bash_profile (depende de su configuración de terminal):

# set DYLD_* for my normal programs
DYLD_LIBRARY_PATH='..'

# set an alternative sudo
thesudo()
{
# back up the DYLD_* variables
local BACK=$DYLD_LIBRARY_PATH

# unset DYLD_*
unset DYLD_LIBRARY_PATH

# calling sudo
/usr/bin/sudo "$@"

# restore DYLD_* after sudo finished
export DYLD_LIBRARY_PATH=$BACK
}

# redirect sudo
alias sudo=thesudo
    
respondido por el Brendon-Van-Heyzen 28.12.2012 - 22:43
-3

Probablemente tengas tu LD_LIBRARY_PATH establecido.

    
respondido por el user37093 22.12.2012 - 13:52

Lea otras preguntas en las etiquetas