-1

后缀别名如下所示:

%omitted%: "|/var/www/rails/redmine/extra/mail_handler/rdm-mailhandler.rb --url %omitted% --key %omitted%" 

返回的退回消息说

“命令以 127 状态死亡”

“命令输出:/usr/bin/env: ruby​​: 没有这样的文件或目录”

我跑了

sudo -u postfix /usr/bin/env ruby -v

它回来了

ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2009.10

所以我假设后缀用户的路径中有红宝石。

我将 shebang 更改为 /usr/local/bin/ruby 并且它可以工作,但我希望代码与我签出的项目的 svn 匹配。

4

3 回答 3

3

Postfix manual local(8)说管道别名:

PATH 环境变量始终重置为系统相关的默认路径

运行交互式 shell 时,似乎 /usr/local/bin/ 仅在 PATH 中。您可以调整操作系统中的 PATH 环境变量,但我认为最好将别名更改为:

%omitted%: "|/usr/local/bin/ruby /var/www/rails/redmine/...
于 2011-01-24T19:36:46.857 回答
1

当您通过执行命令时,sudo您仍然拥有自己的环境,因此拥有自己的路径。Postfix 的local程序在调用外部程序时会将 PATH 重置为最小值(可能是 /bin 和 /usr/bin)。您可以使用export_environmentconfig 参数设置不同的路径。更多信息

于 2011-01-24T19:45:49.987 回答
1

所以我假设后缀用户的路径中有红宝石。

不,这意味着您发出 sudo 的用户在其路径中有 ruby​​。一个简单的 sudo 不会更改 $PATH。

对于您的问题,最简单的解决方案可能是将实际的红宝石添加到您的脚本调用中,如下所示(假设您的红宝石位于/usr/bin/ruby.

%omitted%: "|/usr/bin/ruby /var/www/rails/redmine/extra/mail_handler/rdm-mailhandler.rb --url %omitted% --key %omitted%"
于 2011-01-24T19:48:32.853 回答