11 votos

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

Después de la actualización a 10.8.0, cada vez 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 pude pensar, y no veo nada relacionado con la DYLD_ ambiente.

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 molesto mensaje sigue apareciendo.

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

6voto

MasterKye Puntos 46

¿Tiene alguna otra variable DYLD_ configurada? Ejecute set sin parámetros para ver todas las variables y desajustar cualquier cosa que aparezca con ese prefijo.

Tenga en cuenta que parece que esto es realmente una solución para un error, esos mensajes no deben ser impresos a menos que tenga DYLD_PRINT_WARNINGS activado.

Además, la actualización a 10.8.1 parece haber parcheado esta molestia.

3voto

BenM Puntos 2241

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 se desajustan, y luego 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 los comandos no-sudo que lo necesitan).
  • El uso de una subshell asegura que si interrumpes el sudo mientras se está ejecutando (por ejemplo, con Ctrl-C), tu LD_LIBRARY_PATH y DYLD_LIBRARY_PATH no se modificarán en tu shell maestro (a diferencia del script en otra respuesta que los establece y desestablece en la shell interactiva).
  • El uso de exec garantiza que el shell principal, que de otro modo no sería necesario, salga inmediatamente al invocar sudo, de modo que no haya procesos adicionales mientras se ejecuta el comando.

Dejaré como ejercicio al lector el puerto para golpear, et al.

2voto

Arda Xi Puntos 1099

Solución encontrada en los foros de soporte de apple por yokyoh1987,

https://discussions.apple.com/thread/4143805?start=30&tstart=0

en su .profile/.bashrc/.bash_profile (depende de la configuración de su 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

-3voto

user37093 Puntos 1

Probablemente tienes tu LD_LIBRARY_PATH configurado.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X