web-dev-qa-db-ja.com

dyld:メイン実行可能ファイル(/ usr / bin / Sudo)がsetuidまたはsetgidであるため、DYLD_環境変数は無視されます

10.8へのアップデート以降、Sudoコマンドを実行しようとすると次のエラーが表示されますが、これはかなり面倒です。

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

それはどういう意味ですか?誰でも助けてくれるといいのですが。

48
eneskaya

これは10.8で導入されたバグのようです。 このレポート を参照してください。私が知る限り、唯一の回避策は、デフォルトでDYLD_LIBRARY_PATHまたはLD_LIBRARY_PATHを設定するのではなく、必要な場合にのみ設定することです。

43
Erik Hesselink

Zshの場合:

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

これにより、Sudoの環境変数が設定されていないサブシェルが生成され、Sudoが実行されます(execを使用して、不要になった親シェルがすぐに終了します)。

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

20
Pinko

公式の解決策はどこにあるのかわかりませんが、このbashrcハックで解決しました。

これを/ etc/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
7
jahrichie

Django(web用のpython)、mysqlからMySQLdb(Mysql-Pythonモジュール)を使用する場合、その変数セットが必要です。

5
iannakin

この問題はOS X Mavericks(10.9)で最終的に修正され、メッセージはSudoで表示されなくなりました。

1
Giannis

すでに述べた「修正」は、すべてのユーザーに有効なわけではない単なる回避策のようです。これは、Appleが(少なくとも)認識している既知のバグです。 http://openradar.appspot.com/11894054

1
user2763068

これが本当の修正かどうかはわかりませんが、Clean Build Folderを実行するとこのエラーは消えました

0
Liliana Terry