10.8へのアップデート以降、Sudoコマンドを実行しようとすると次のエラーが表示されますが、これはかなり面倒です。
dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/Sudo) is setuid or setgid
それはどういう意味ですか?誰でも助けてくれるといいのですが。
これは10.8で導入されたバグのようです。 このレポート を参照してください。私が知る限り、唯一の回避策は、デフォルトでDYLD_LIBRARY_PATHまたはLD_LIBRARY_PATHを設定するのではなく、必要な場合にのみ設定することです。
Zshの場合:
Sudo () { ( unset LD_LIBRARY_PATH DYLD_LIBRARY_PATH; exec command Sudo $* ) }
これにより、Sudoの環境変数が設定されていないサブシェルが生成され、Sudoが実行されます(execを使用して、不要になった親シェルがすぐに終了します)。
読者にbashなどに移植するための演習として残しておきます。
公式の解決策はどこにあるのかわかりませんが、このbashrcハックで解決しました。
# 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
Django(web用のpython)、mysqlからMySQLdb(Mysql-Pythonモジュール)を使用する場合、その変数セットが必要です。
この問題はOS X Mavericks(10.9)で最終的に修正され、メッセージはSudoで表示されなくなりました。
すでに述べた「修正」は、すべてのユーザーに有効なわけではない単なる回避策のようです。これは、Appleが(少なくとも)認識している既知のバグです。 http://openradar.appspot.com/11894054
これが本当の修正かどうかはわかりませんが、Clean Build Folderを実行するとこのエラーは消えました