2012-03-30 2 views
0

Я создал deb. пакет с моим приложением, и я должен запустить lighttpd в конце установки (postinst script). Вопрос в том, как запустить lighttpd и не блокировать терминал. Он должен начаться в фоновом режиме как-то ...start tomcat во время установки .deb

Спасибо.

+0

Наконец-то я нашел какую-то странную вещь ... Если я запустил 'invoke-rc.d xxxx start' в конце скрипта postinst, lighttpd будет запущен на переднем плане. Однако, если я запустил 'invoke-rc.d xxxx start', вручную lighttpd будет запущен в фоновом режиме. Почему так происходит? – Lazy

+0

Я нашел решение [http://www.fifi.org/doc/debconf-doc/tutorial.html#AEN198]. Я добавил 'db_stop' после запуска' invoke-rc.d xxxx start' и postinst скрипта. – Lazy

ответ

0

Чтобы уточнить для других, кто пришел к этому, вы используете Confmodule Debconf, чтобы задавать вопросы пользователю в своем postinst (http://stackoverflow.com/q/10139395/193468). Конфомодуль (интерфейс на основе оболочки для интерактивного механизма debconf) делает ужасную магию, чтобы повторно запустить скрипт, в котором он работает, и идет через отдельный процесс debconf. Это грязно, особенно когда вам нужно делать другие вещи в том же скрипте, которые предполагают, что дескрипторы файлов и владеющий TTY будут упорядочены определенным образом (например, при вызове initscripts). Вот почему не рекомендуется использовать db_input в postinst. Но у вас, похоже, есть работа, так что это здорово. Я просто хочу отметить, что добавление db_stop не всегда будет решать проблему для людей с аналогичными проблемами.

Смежные вопросы