Как попросить apt-get пропустить все этапы настройки после установки?


11

При установке некоторых пакетов (например, RabbitMQ) на компьютеры Debian / Ubuntu на post-installшаге по умолчанию запускается служба.

Хотя это прекрасно в большинстве случаев, в некоторых случаях (например, когда у вас уже есть служба, работающая на нужном порту), это приводит к apt-getсбою, который приводит к сбою полностью.

Есть ли способ сказать, apt-getчтобы пропустить все эти post-installшаги, чтобы он все еще мог правильно установить?

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




1
Этот вопрос похож, но отличается. Речь идет о пропуске всех шагов, а не только интерактивных. Некоторые задачи автоматически выполняют сценарии, которые не всегда нужны.
Вольф

Ответы:


8

Как попросить apt-get пропустить любые интерактивные шаги после установки?

export DEBIAN_FRONTEND=noninteractive
apt-get install -y [packagename]

Изменить : да, это было для пропуска (ну, автоматизации) вопросов после установки , правда - извините.

Нет способа пропустить постинсталляционные скрипты . Официальная политика Debian заключается в том, чтобы отредактировать скрипт, чтобы он возвращал нетерминальную ошибку, или исправил скрипт. См. Http://www.debian-administration.org/articles/251

Похоже, вы автоматизируете это для многих серверов, и в этом случае вы, вероятно, захотите создать свою собственную версию пакета и развернуть ее. Другой вариант - отправить по электронной почте сопровождающему пакета и обсудить, должен ли сбой при запуске быть терминальной ошибкой после установки (я не верю, что это происходит для других пакетов, таких как, например, apache или lighttpd, но я могу ошибаться .)


Это просто, чтобы пропустить интерактивные шаги. Это не проблема здесь, это неинтерактивные post-installшаги, которые терпят неудачу, если что-то подобное service rabbitmq-server startтерпит неудачу.
Вольф

Обновлено. Это помогает?
Бретт Дайкман

лучше узнать, что это невозможно, чем задаться вопросом, если это так :) Спасибо за помощь.
Wolph

Если вы используете sudo, экспорт переменной среды не будет работать, но вы можете сделать это следующим образом:sudo DEBIAN_FRONTEND=noninteractive apt-get -y [packagename]
aculich

4

Вы можете захотеть сделать что-то с policy-rc.d . Смотрите справочную страницу для invoke-rc.d. Вы можете установить политику, чтобы службы не запускались автоматически.


Это способ обойти это, но я полагаю, что это будет временная мера? По крайней мере ... Я думаю, что таким образом вы глобально отключите все сервисные запуски.
Вольф

2

это должно работать

echo exit 101 > /usr/sbin/policy-rc.d
chmod +x /usr/sbin/policy-rc.d
apt-get install <packagename>
rm -f /usr/sbin/policy-rc.d

Немного хакерский и очень специфичный для этого случая, но он очень помогает! Спасибо :)
Wolph
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.