Hudson-ci отказывается запускать экран на OSX - PullRequest
0 голосов
/ 25 февраля 2011

У меня очень неустойчивая проблема (и теперь постоянный сбой) при запуске gnu-screen на OSX из hudson.У меня есть сценарий оболочки, который делает только это:

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

Из командной строки как пользователь hudson это работает просто отлично, и этот сеанс экрана отображается с screen -ls.Из задачи Гудзона это не работает.Раньше он работал несколько часов, и я понятия не имею, почему он больше не работает.

Что я пробовал до сих пор:

  • Поместите команду экрана вотдельный скрипт bash.Например./tmp/foo.sh
  • Поставить префиксы пути, если экранная команда не найдена.Но screen -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 Ответ

1 голос
/ 25 февраля 2011

Я нашел решение своей проблемы, и я подозреваю, что это плохой протокол, чтобы ответить на мой собственный вопрос, но ради других, у кого может быть эта проблема, вот как я обошел эту проблему ..

Кажется, самое простое / единственное решение - создать экран из исходного кода.Шаги очень простые и понятные:

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, задачи cron, которые пытаются использовать экран и т. Д.) Работает оченьплавно.Это также сохраняет системный экран (/ usr / bin / screen) без изменений.

Ссылки:

  • Это яблоко ветка форума - вот что дало мне идеюсборка из исходного кода.
  • Я только что нашел это решение stackoverflow .Это в основном то же решение, поэтому я проголосовал за него.
...