sudoの迷惑なメッセージをMountain Lion 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_環境を。

何時間もグーグルで探した後、次の2行を次の行に入れようとしました.zshrc

unset LD_LIBRARY_PATH  
unset DYLD_LIBRARY_PATH

しかし、迷惑なメッセージはまだ表示されます。

ゲストアカウントにアクセスしましたが、sudoこのメッセージは表示されませんでした。だから私はカスタムライブラリをインストールしていると思います...しかし、これをデバッグする方法がわかりません。

回答:


6

他にDYLD_変数が設定されていますか?setパラメータなしで実行すると、すべての変数が表示され、その接頭辞で発生するすべての設定が解除されます。

これは実際にはバグの単なる回避策であるように見えることに注意してください。DYLD_PRINT_WARNINGSを有効にしていない限り、これらのメッセージは出力されません。

また、10.8.1へのアップデートは、この煩わしさにパッチを当てているようです。


1
私が知る限り、MLバグ。これらのDYLD_変数は重要になる可能性があります。それらを削除すると、設定されているものがすべて破損する可能性があります。
gabedwrds

2
バグは、環境変数DYLD_PRINT_WARNINGSを設定しない限り、これらのメッセージが表示されないはずですが、何らかの理由でMountain Lionがそれらのメッセージを印刷することです。
gabedwrds

2
10.8.1は、問題を解決しませんでした
マッテオ

2
すべてのDYLD_環境変数を設定解除するのは、理由があるため、解決策ではありません。これはバグであり、Appleが修正するまで私たちはそれで行き詰っています。
マッテオ

2
私は10.8.3にこの問題があります
アレックスSzatmary

3

zshの場合:

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

これにより、sudoがエラーを表示する環境変数が設定されていないサブシェルが生成され、sudoが実行されます。

他の回答のいくつかに対する利点は次のとおりです。

  • 対話型シェル環境からLD_LIBRARY_PATHおよびDYLD_LIBRARY_PATHを削除しません(それを必要とする非sudoコマンドの場合)。
  • サブシェルを使用すると、実行中に(たとえばCtrl-Cを使用して)sudoを中断した場合、LD_LIBRARY_PATHおよびDYLD_LIBRARY_PATHはマスターシェルで変更されません(インタラクティブシェルで設定および設定解除する別の回答のスクリプトとは異なります) )。
  • execを使用すると、sudoを呼び出すと、本来なら不要な親シェルがすぐに終了するため、コマンドの実行中に余分なプロセスがハングアップすることはありません。

読者にbashなどに移植するための演習として残しておきます。


「読者にbashなどに移植するための演習として残しておきます。」ほとんどのAppleユーザーは、プリインストールされたBash(sarcasm)を介してZSHを使用しているためです。
ジョナサンデュマイン

2

yokyoh1987のアップルサポートフォーラムにある回避策

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

.profile / .bashrc / .bash_profileで(端末の設定によって異なります):

#通常のプログラムにDYLD_ *を設定
DYLD_LIBRARY_PATH = '..'

#代替sudoを設定
thesudo()
{
#DYLD_ *変数をバックアップします
ローカルBACK = $ DYLD_LIBRARY_PATH

#DYLD_ *の設定を解除
DYLD_LIBRARY_PATHの設定を解除します

#sudoを呼び出す
/ usr / bin / sudo "$ @"

#sudoの完了後にDYLD_ *を復元
DYLD_LIBRARY_PATH = $ BACKをエクスポート
}

#sudoをリダイレクト
エイリアスsudo = thesudo

これは、環境管理の賢い小さな部分です。
bmike

このソリューションの1つの問題は、sudoを中断すると(たとえば、ctrl-cを介して)、最後の復元操作が実行されないため、対話型シェルでDYLD_LIBRARY_PATH変数が設定されないままになることです。サブシェル(この質問に対する他の回答を参照)を使用すると、これを解決できます。
ピンコ

-3

おそらくLD_LIBRARY_PATHが設定されています。


2
ポスターが書いているように、彼/彼女はすでに持っておりunset LD_LIBRARY_PATH、問題は続いています。
myhd
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.