Hudson-ci拒绝在OSX上启动屏幕

时间:2011-02-25 03:07:39

标签: hudson osx-snow-leopard gnu-screen

我有一个非常间歇性的问题(现在不断失败)从Hudson在OSX上启动gnu-screen。我有一个shell脚本可以做到这一点:

#!/bin/bash
screen -dm -S foobar

从命令行作为hudson用户,这工作正常,此屏幕会话显示屏幕-ls。从哈德森任务来看,这不起作用。它曾经工作了几个小时,我不知道为什么它不再起作用了。

到目前为止我尝试过:

  • 将屏幕命令放入单独的bash脚本中。例如。 /tmp/foo.sh
  • 如果找不到屏幕命令,请输入路径前缀。但是屏幕-ls工作得很好,所以不是吗
  • 以非分离模式运行屏幕,就像测试一样。这与“必须连接到终端”预期失败。所以这意味着屏幕至少在考虑做正确的事情。
  • 将屏幕作为LaunchDaemon运行,我以launchctl开头(将plist文件创建为OnDemand)。同样的问题。

有什么方法可以调试正在发生的事情吗?我想不出如何弄清楚为什么事情不起作用而且我完全没有想法。而且我没有看到任何可能有帮助的日志。

我的系统是:OSX 10.6.5;屏幕版本4.00.03

更新的 我只想查看/var/log/system.log,我看到了:

Feb 24 23:19:00 macmini2 com.apple.launchd[1] (0x1037c0.anonymous.screen[57291]): Switching sessions is not allowed in the system Mach bootstrap.
Feb 24 23:19:00 macmini2 com.apple.launchd[1] (0x1037c0.anonymous.screen[57291]): _vprocmgr_switch_to_session(): kr = 0x44c

我将不得不进一步研究这个问题,但是我不想在我的第一次搜索中建议这个错误,即安装fink版本的屏幕,或者构建屏幕来源。如果可能的话,我宁愿保持机器的原样(虽然我不反对从源代码编译屏幕,如果这是唯一的解决方案)。

1 个答案:

答案 0 :(得分:1)

我已经找到了解决问题的方法,我怀疑回答我自己的问题是不好的协议,但是为了可能有这个问题的其他人,这就是我如何解决这个问题。

最简单/唯一的解决方案似乎是从源代码构建屏幕。步骤非常简单直接:

git clone git://git.savannah.gnu.org/screen.git
cd screen/ && ./mktar.pl && tar xfz screen-4.1.0.tar.gz
cd screen-4.1.0
./autogen.sh && ./configure && make
sudo cp screen /usr/local/bin/
/usr/local/bin/screen --version

对所有守护进程或后台进程使用这个新屏幕(例如,Hudson的shell启动程序,尝试使用屏幕的cron'ed任务等)非常顺利。这也使系统屏幕(/ usr / bin / screen)保持不变。

参考文献:

  • 这个苹果forum thread让我有了从源头构建的想法。
  • 我刚发现这个stackoverflow solution。它基本上是相同的解决方案,所以我已经投票了。