Il fastidioso messaggio di sudo può essere rimosso da Mountain Lion 10.8.0?

11

Dopo l'upgrade a 10.8.0, ogni volta che faccio un sudo , ottengo sempre questo messaggio:

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

Ho controllato il mio .bash_profile , .zshrc tutto quello che potevo pensare e non vedo nulla relativo all'ambiente DYLD_ .

Dopo aver cercato su google per ore, ho provato a mettere queste due righe nel mio .zshrc :

unset LD_LIBRARY_PATH  
unset DYLD_LIBRARY_PATH

Ma il messaggio fastidioso appare ancora.

Vado a un account ospite e ho fatto un sudo ma non ho ricevuto questo messaggio. Quindi suppongo di aver installato qualche libreria personalizzata ... Ma non so come eseguire il debug di questo.

    
posta BPm 30.07.2012 - 05:45
fonte

4 risposte

6

Hai altre variabili DYLD_ impostate? Esegui set senza parametri per visualizzare tutte le variabili e disimballare tutto ciò che viene visualizzato con quel prefisso.

Si noti che questo è davvero solo un rimedio per un bug, quei messaggi non dovrebbero essere stampati a meno che non sia attivato DYLD_PRINT_WARNINGS.

Inoltre, l'aggiornamento a 10.8.1 sembra aver risolto questo fastidio.

    
risposta data 30.07.2012 - 06:11
fonte
3

In zsh:

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

Questo genera una sotto-shell in cui le variabili d'ambiente di cui sudo si lamenta non sono impostate, e quindi esegue sudo.

I vantaggi su alcune delle altre risposte includono:

  • Non rimuove LD_LIBRARY_PATH e DYLD_LIBRARY_PATH dall'ambiente shell interattivo (per comandi non sudo che ne hanno bisogno).
  • L'uso di una subshell garantisce che se interrompi il sudo mentre è in esecuzione (ad es. con Ctrl-C), il tuo LD_LIBRARY_PATH e DYLD_LIBRARY_PATH rimarrà invariato nella tua shell principale (diversamente dallo script in un'altra risposta che imposta e li disattiva in la shell interattiva).
  • L'uso di exec garantisce che la shell parent altrimenti superflua esca immediatamente quando si richiama sudo, quindi non ci sono processi extra in giro mentre il comando è in esecuzione.

Lo lascerò come esercizio al lettore di port to bash, et al.

    
risposta data 26.02.2013 - 16:54
fonte
2

funziona nei forum di supporto Apple di yokyoh1987,

link

nel tuo file .profile / .bashrc / .bash_profile (dipende dall'impostazione del terminale):

# 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
    
risposta data 28.12.2012 - 22:43
fonte
-3

Probabilmente hai il tuo set LD_LIBRARY_PATH.

    
risposta data 22.12.2012 - 13:52
fonte

Leggi altre domande sui tag