क्या सुडोकू के कष्टप्रद संदेश को माउंटेन लायन से हटाया जा सकता है 10.8.0?


11

10.8.0 में अपग्रेड करने के बाद, जब भी मैं ए करता sudoहूं, मुझे हमेशा यह संदेश मिलता है:

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

मैंने अपनी जाँच कर ली है .bash_profile, .zshrcसभी मैं सोच सकता था, और मुझे DYLD_पर्यावरण से संबंधित कुछ भी दिखाई नहीं दे रहा है ।

घंटों तक गुगली करने के बाद, मैंने इन दो पंक्तियों को अपने अंदर डालने की कोशिश की .zshrc:

unset LD_LIBRARY_PATH  
unset DYLD_LIBRARY_PATH

लेकिन कष्टप्रद संदेश अभी भी प्रकट होता है।

मैं एक अतिथि खाते में जाता हूं और उसने एक sudoसंदेश नहीं किया है। इसलिए मुझे लगता है कि मेरे पास कुछ कस्टम लाइब्रेरी स्थापित है ... लेकिन मुझे नहीं पता कि यह कैसे डीबग करना है।

जवाबों:


6

क्या आपके पास कोई अन्य DYLD_ चर सेट है? भागो setसभी चर और सेट किए बिना कुछ भी है कि उपसर्ग वाला आता है देखने के लिए कोई पैरामीटर के साथ।

ध्यान दें कि ऐसा लगता है कि यह वास्तव में बग के लिए केवल एक समाधान है, उन संदेशों को मुद्रित नहीं किया जाना चाहिए जब तक कि आपके पास DYLD_PRINT_WARNINGS सक्षम न हों।

इसके अलावा, 10.8.1 के अपडेट से लगता है कि यह झुंझलाहट है।


1
एमएल बग, जहां तक ​​मैं बता सकता हूं। वे DYLD_ चर महत्वपूर्ण हो सकते हैं, उन्हें हटाने से जो कुछ भी वे सेट किए गए थे, वे टूट सकते हैं।
gabedwrds

2
ठीक है, बग यह है कि जब तक आप पर्यावरण चर DYLD_PRINT_WARNINGS सेट नहीं करते हैं, तब तक आप उन संदेशों को देखने वाले नहीं हैं, लेकिन किसी कारण से माउंटेन लायन उन्हें या तो प्रिंट करता है।
gabedwrds

2
10.8.1 समस्या को ठीक नहीं किया
Matteo

2
सभी DYLD_ पर्यावरण चर को समाप्त करना एक समाधान नहीं है क्योंकि वे एक कारण से हैं। यह एक बग है और हम तब तक इसके साथ अटके हैं जब तक कि Apple इसे ठीक नहीं करता।
मत्तियो

2
मुझे
१०..3.३

3

Zsh में:

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

यह एक उप-खोल को खोलता है जिसमें पर्यावरण चर जो सूडो के बारे में शिकायत करता है वह परेशान है, और फिर सूडो को निष्पादित करता है।

कुछ अन्य उत्तरों में लाभ शामिल हैं:

  • अपने इंटरेक्टिव शेल वातावरण (गैर-सूडो कमांड के लिए जो इसकी आवश्यकता है) से LD_LIBRARY_PATH और DYLD_LIBRARY_PATH को नहीं निकालता है।
  • एक उपखंड का उपयोग यह सुनिश्चित करता है कि यदि आप चलते समय सूडो को बाधित करते हैं (जैसे, Ctrl-C के साथ), तो आपका LD_LIBRARY_PATH और DYLD_LIBRARY_PATH आपके मास्टर शेल में अपरिवर्तित रहेगा (स्क्रिप्ट के विपरीत एक अन्य उत्तर में जो सेट करता है और उन्हें इंटरेक्टिव शेल में अनसेट करता है। )।
  • निष्पादन का उपयोग यह सुनिश्चित करता है कि अन्यथा-अनावश्यक माता-पिता शेल सूडो को आह्वान करते समय तुरंत बाहर निकल जाते हैं, इसलिए कमांड चलने के दौरान कोई अतिरिक्त प्रक्रिया नहीं होती है।

मैं इसे पढ़ने के लिए एक अभ्यास के रूप में छोड़ दूंगा, एट अल।


"मैं इसे पढ़ने के लिए एक अभ्यास के रूप में छोड़ दूंगा, एट अल।" क्योंकि ज्यादातर Apple उपयोगकर्ता ZSH का उपयोग प्रीइंस्टॉल्ड बैश (कटाक्ष) से ​​अधिक करते हैं।
जोनाथन ड्यूमाइन

2

yokyoh1987 द्वारा ऐप्पल सपोर्ट फ़ोरम पर पाए गए काम के आसपास,

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

में अपने .profile / .bashrc / /।

मेरे सामान्य कार्यक्रमों के लिए # सेट DYLD_ *
DYLD_LIBRARY_PATH = '..'

# एक वैकल्पिक sudo सेट करें
thesudo ()
{
# DYLD_ * चर का बैकअप लें
स्थानीय बैक = $ DYLD_LIBRARY_PATH

# परेशान DYLD_ *
परेशान DYLD_LIBRARY_PATH

# फोनिंग सूडो
/ usr / bin / sudo "$ @"

# सुडोल समाप्त होने के बाद DYLD_ * पुनर्स्थापित करें
DYLD_LIBRARY_PATH = $ BACK निर्यात करें
}

# रीडायरेक्ट सुडोल
उर्फ सुडो = थिसोडो

यह एनवी प्रबंधन का एक चतुर सा टुकड़ा है।
bmike

इस समाधान के साथ एक समस्या यह है कि यदि आप sudo को बाधित करते हैं (उदाहरण के लिए, ctrl-c के माध्यम से) तो आपका DYLD_LIBRARY_PATH संस्करण चुपचाप आपके इंटरेक्टिव शेल में परेशान नहीं रहेगा क्योंकि अंत में पुनर्स्थापना कार्रवाई निष्पादित नहीं की जाएगी। एक उपधारा का उपयोग करना (इस प्रश्न का मेरा अन्य उत्तर देखें) यह हल करता है।
पिंको

-3

संभवतः आपके पास अपना LD_LIBRARY_PATH सेट है।


2
जैसा कि पोस्टर लिखता है, वह / वह पहले से ही है unset LD_LIBRARY_PATH, और समस्या बनी रहती है।
myhd
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.