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


11

Dopo l'aggiornamento a 10.8.0, ogni volta che faccio un sudo, ricevo 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, .zshrctutto ciò a cui potevo pensare e non vedo nulla di correlato DYLD_all'ambiente.

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

unset LD_LIBRARY_PATH  
unset DYLD_LIBRARY_PATH

Ma il fastidioso messaggio appare ancora.

Vado su un account ospite e non sudoho ricevuto questo messaggio. Quindi suppongo di aver installato una libreria personalizzata ... Ma non so come eseguire il debug di questo.

Risposte:


6

Hai altre variabili DYLD_ impostate? Esegui setsenza parametri per vedere tutte le variabili e annullare tutto ciò che viene fornito con quel prefisso.

Si noti che sembra che questo sia davvero solo una soluzione alternativa per un bug, quei messaggi non dovrebbero essere stampati a meno che tu non abbia DYLD_PRINT_WARNINGS abilitato.

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


1
Bug ML, per quanto ne so. Quelle variabili DYLD_ possono essere importanti, rimuoverle potrebbe spezzare tutto ciò per cui erano state impostate.
gabedwrds il

2
Bene, il bug è che non dovresti vedere quei messaggi a meno che tu non imposti la variabile di ambiente DYLD_PRINT_WARNINGS, ma per qualche ragione Mountain Lion li stampa in entrambi i modi.
gabedwrds il

2
10.8.1 Il problema non è stato risolto
Matteo

2
Disattivare tutte le variabili di ambiente DYLD_ non è una soluzione in quanto sono lì per un motivo. È un bug e ne siamo bloccati finché Apple non lo risolve.
Matteo,

2
Ho questo problema il 10.8.3
Alex Szatmary,

3

In zsh:

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

Ciò genera una sotto-shell in cui le variabili di ambiente di cui sudo si lamenta non sono impostate, quindi esegue sudo.

I vantaggi rispetto ad 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 assicura che se si interrompe il sudo mentre è in esecuzione (ad esempio, con Ctrl-C), LD_LIBRARY_PATH e DYLD_LIBRARY_PATH rimarranno invariati nella shell principale (a differenza dello script in un'altra risposta che imposta e disinserisce nella shell interattiva ).
  • L'uso di exec assicura che la shell genitore altrimenti non necessaria esca immediatamente quando si richiama sudo, quindi non ci sono processi extra in giro mentre il comando è in esecuzione.

Lascio che sia un esercizio per il lettore portare a bash, et al.


"Lascio che sia un esercizio per il lettore portare a bash, et al." Perché la maggior parte degli utenti Apple usa ZSH sul Bash preinstallato (sarcasmo).
Jonathan Dumaine,

2

aggiramento trovato nei forum di supporto Apple da yokyoh1987,

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

nel tuo .profile / .bashrc / .bash_profile (dipende dalle impostazioni del tuo terminale):

# imposta DYLD_ * per i miei programmi normali
DYLD_LIBRARY_PATH = '..'

# imposta un sudo alternativo
thesudo ()
{
# esegue il backup delle variabili DYLD_ *
local BACK = $ DYLD_LIBRARY_PATH

# unset DYLD_ *
non impostato DYLD_LIBRARY_PATH

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

# restore DYLD_ * al termine di sudo
export DYLD_LIBRARY_PATH = $ BACK
}

# reindirizzamento sudo
alias sudo = thesudo

È un piccolo pezzo intelligente di gestione ambientale.
bmike

Un problema con questa soluzione è che se si interrompe il sudo (ad es. Tramite ctrl-c) il DYLD_LIBRARY_PATH var verrà silenziosamente lasciato inattivo nella shell interattiva perché l'operazione di ripristino alla fine non sarà eseguita. L'uso di una subshell (vedi la mia altra risposta a questa domanda) risolve questo problema.
Pinko,

-3

Probabilmente hai impostato il tuo LD_LIBRARY_PATH.


2
Come scrive il poster, lo ha già fatto unset LD_LIBRARY_PATHe il problema persiste.
myhd
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.