Sudo'nun can sıkıcı mesajı Mountain Lion 10.8.0'dan kaldırılabilir mi?


11

10.8.0 sürümüne geçtikten sonra, her ne zaman yapsam, sudoşu mesajı alıyorum:

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

Kontrol ettim .bash_profile, .zshrctek düşünebildiğim ve DYLD_çevre ile ilgili hiçbir şey göremiyorum .

Saatlerce çalıştıktan sonra, bu iki satırı şurama koymaya çalıştım .zshrc:

unset LD_LIBRARY_PATH  
unset DYLD_LIBRARY_PATH

Ancak can sıkıcı mesaj hala görünüyor.

Bir konuk hesabına gidip yaptım sudoama bu mesajı alamadım. Sanırım yüklü bazı özel kitaplığım var ... Ama bunu nasıl ayıklayacağımı bilmiyorum.

Yanıtlar:


6

Ayarlanmış başka DYLD_ değişkeniniz var mı? setTüm değişkenleri görmek için parametre kullanmadan çalıştırın ve bu önekle gelen herhangi bir şeyi kaldırın.

Bunun gerçekten bir hata için geçici bir çözüm olduğuna dikkat edin, DYLD_PRINT_WARNINGS etkin değilse bu mesajlar yazdırılmamalıdır.

Ayrıca, 10.8.1'e yapılan güncelleme bu rahatsızlığı düzeltti.


1
ML bug, anlayabildiğim kadarıyla. Bu DYLD_ değişkenleri önemli olabilir, kaldırılması ayarlandıkları her şeyi kırabilir.
gabedwrds

2
Hata, DYLD_PRINT_WARNINGS ortam değişkenini ayarlamadığınız sürece bu mesajları görmemeniz gerektiğidir, ancak bir nedenle Mountain Lion bunları her iki şekilde de yazdırır.
gabedwrds

2
10.8.1 Sorunu çözmedim
Matteo

2
Tüm DYLD_ ortam değişkenlerinin ayarının kaldırılması , bir nedenden dolayı orada oldukları için bir çözüm değildir . Bu bir hata ve Apple onu düzeltene kadar onunla sıkışıp kaldık.
Matteo

2
Ben 10.8.3 üzerinde bu sorun var
Alex Szatmary

3

Zsh dilinde:

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

Bu, sudo'nun şikayet ettiği ortam değişkenlerinin ayarlanmadığı ve sudo yürüttüğü bir alt kabuğu oluşturur.

Diğer cevapların bazılarına göre avantajları:

  • Etkileşimli kabuk ortamınızdan LD_LIBRARY_PATH ve DYLD_LIBRARY_PATH öğelerini kaldırmaz (buna ihtiyaç duyan sudo olmayan komutlar için).
  • Alt kabuk kullanımı, sudo'yu çalışırken keserseniz (örneğin, Ctrl-C ile), LD_LIBRARY_PATH ve DYLD_LIBRARY_PATH'ınızın ana kabuğunuzda değişmeden kalmasını sağlar (etkileşimli kabukta onları ayarlayan ve silen başka bir cevaptaki komut dosyasının aksine) ).
  • Exec kullanımı, sudo çağrılırken, aksi takdirde gereksiz üst kabuğun hemen çıkmasını sağlar, bu nedenle komut çalışırken ek işlemler kalmaz.

Ben bash, ve ark.


"Bunu okh'a, ve diğ. Çünkü çoğu Apple kullanıcısı önceden yüklenmiş Bash (alaycılık) üzerinde ZSH kullanıyor.
Jonathan Dumaine

2

yokyoh1987 tarafından elma destek forumlarında bulunan etrafında çalışmak,

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

.profile / .bashrc / .bash_profile (terminal ayarınıza bağlıdır):

# normal programlarım için DYLD_ * ayarlandı
DYLD_LIBRARY_PATH = '..'

# alternatif bir sudo ayarla
thesudo ()
{
# DYLD_ * değişkenlerini yedekle
yerel BACK = $ DYLD_LIBRARY_PATH

# unset DYLD_ *
ayarlanmamış DYLD_LIBRARY_PATH

# çağrı sudo
/ usr / bin / sudo "$ @"

sudo bittikten sonra # restore DYLD_ *
dışa aktar DYLD_LIBRARY_PATH = GERİ $
}

# yönlendirme sudo
takma ad sudo = thesudo

Bu akıllıca bir env yönetimi parçası.
bmike

Bu çözümle ilgili bir sorun, sudo'yu (örneğin, ctrl-c ile) keserseniz, DYLD_LIBRARY_PATH değişkeniniz, etkileşimli kabuğunuzda sessizce ayarlanmadan bırakılacaktır, çünkü sondaki geri yükleme işlemi yürütülmeyecektir. Bir alt kabuk kullanmak (bu soruya verilen diğer cevaba bakın) bunu çözer.
Pinko

-3

Muhtemelen LD_LIBRARY_PATH ayarını yaptınız.


2
Poster yazdıkça, zaten var unset LD_LIBRARY_PATHve sorun devam ediyor.
myhd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.