¿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, 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 revisado mi .bash_profile, .zshrctodo lo que puedo pensar, y no veo nada relacionado con el DYLD_medio 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 mensaje molesto todavía aparece.

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

Respuestas:


6

¿Tiene alguna otra variable DYLD_ establecida? Ejecute setsin parámetros para ver todas las variables y desarme 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 deben imprimirse a menos que tenga DYLD_PRINT_WARNINGS habilitado.

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


1
Error de ML, por lo que puedo decir. Esas variables DYLD_ pueden ser importantes, eliminarlas puede romper lo que sea que se establecieron.
gabedwrds

2
Bueno, el error es que se supone que no debes ver esos mensajes a menos que configures la variable de entorno DYLD_PRINT_WARNINGS, pero por alguna razón Mountain Lion los imprime de cualquier manera.
gabedwrds

2
10.8.1 No solucionó el problema
Matteo

2
Desarmar todas las variables de entorno DYLD_ no es una solución, ya que están allí por una razón. Es un error y estamos atascados hasta que Apple lo arregle.
Matteo

2
Tengo este problema en 10.8.3
Alex Szatmary

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 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 que no son sudo que lo necesitan).
  • El uso de una subshell garantiza que si interrumpe el sudo mientras se está ejecutando (por ejemplo, con Ctrl-C), su LD_LIBRARY_PATH y DYLD_LIBRARY_PATH no se modificarán en su shell maestro (a diferencia del script en otra respuesta que los establece y los desarma en el shell interactivo )
  • El uso de exec asegura que el shell padre, que de otra forma sería innecesario, saldrá inmediatamente al invocar sudo, por lo que no habrá procesos adicionales mientras el comando se ejecute.

Lo dejaré como un ejercicio para el lector a port to bash, et al.


"Lo dejaré como un ejercicio para el lector a port to bash, et al." Porque la mayoría de los usuarios de Apple usan ZSH sobre el Bash preinstalado (sarcasmo).
Jonathan Dumaine

2

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_ * para mis programas normales
DYLD_LIBRARY_PATH = '..'

# establecer un sudo alternativo
thesudo ()
{
# copia de seguridad de las variables DYLD_ *
ATRÁS local = $ DYLD_LIBRARY_PATH

# unset DYLD_ *
desarmar DYLD_LIBRARY_PATH

# llamando a sudo
/ usr / bin / sudo "$ @"

# restablecer DYLD_ * después de que sudo haya terminado
export DYLD_LIBRARY_PATH = $ BACK
}

# redirect sudo
alias sudo = thesudo

Esa es una pequeña parte inteligente de la gestión del medio ambiente.
bmike

Un problema con esta solución es que si interrumpe el sudo (por ejemplo, a través de ctrl-c) su DYLD_LIBRARY_PATH var quedará silenciosamente sin configurar en su shell interactivo porque la operación de restauración al final no se habrá ejecutado. El uso de una subshell (vea mi otra respuesta a esta pregunta) resuelve esto.
Pinko

-3

Probablemente tenga su conjunto LD_LIBRARY_PATH.


2
Como escribe el cartel, él / ella ya lo ha hecho unset LD_LIBRARY_PATH, y el problema persiste.
myhd
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.