自从更新到 10.8 后,在尝试执行 sudo 命令时出现以下错误,这很烦人。
dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/sudo) is setuid or setgid
那是什么意思?我希望任何人都可以提供帮助。
自从更新到 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 $* ) }
这会生成一个子 shell,其中 sudo 抱怨的环境变量未设置,然后执行 sudo(通过 exec 以便现在不需要的父 shell 立即退出)。
我将把它作为练习留给读者移植到 bash 等。
不知道官方的解决方案在哪里,但我用这个 bashrc hack 解决了它,因为我无法再看到那个该死的警告。
# 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(python for web),通过 MySQLdb(Mysql-Python 模块)使用 mysql 的人需要该变量集。所以我现在只保留警告。
这个问题最终在 OS X Mavericks (10.9) 上得到修复,该消息不再出现在 sudo 上。
似乎已经提到的“修复”只是可能不适用于所有用户的变通方法。这是Apple(至少)知道的一个已知错误:http: //openradar.appspot.com/11894054
不确定这是否是一个真正的修复,但是当我运行 Clean Build Folder 时这个错误消失了