Как я могу автоматизировать dpkg / apt-get? - PullRequest
8 голосов
/ 31 марта 2009

Я пытаюсь создать скрипт, который автоматически загружает пакеты для новых серверов. Однако некоторые вещи, такие как «MySQL-сервер» не могут быть установлены автоматически, потому что вам нужно сначала настроить их в интерфейсе ncurses. Я просмотрел справочные страницы и не могу найти ничего подходящего.

Мне все равно, нужно ли мне позже загружать / редактировать файл conf - мне просто нужно установить соответствующие пакеты.

Кто-нибудь знает, что делать, кроме как захватывать тарболы и создавать их самостоятельно?

UPDATE обнаружил, что для таких вещей, как MySQL-сервер вы можете просто сделать:

DEBIAN_FRONTEND='noninteractive' apt-get install -yq mysql-server

однако ожидаемо выглядит как то, что мне нужно для sun-java6-jdk; еще не оценил

Ответы [ 5 ]

7 голосов
/ 22 ноября 2011

Ответ от ossramblings.com :

Сначала установите ваш пакет нормально; затем извлеките ответы о конфигурации из файлов данных debconf:

sudo apt-get install debconf-utils
sudo debconf-get-selections | grep mypackage > something.seed

Затем для других установок вы можете применить его перед установкой пакета:

sudo debconf-set-selections ./something.seed
4 голосов
/ 01 апреля 2009

Для пакетов, которые задают вопросы через debconf (что и отображает экран ncurses), вы можете предварительно ответить на вопросы. Для sun-java на вопросы можно ответить заранее, следуя инструкциям на http://www.davidpashley.com/blog/debian/java-license

3 голосов
/ 12 августа 2016

Любой пакет Debian, который использует debconf для получения значений конфигурации, может быть запущен без присмотра. Хитрость в том, что debconf сначала будет искать предустановленные ответы на любой конфиг вопрос , который есть у данного пакета.

Предустановочная конфигурация ответов

Просто создайте файл в следующем формате,

# Use one line for each question
package-name question-name question-type answer
package-name question-name question-type really long \
answer here
package-name question-name question-type answer
...

и введите его в систему следующим образом:

$ debconf-set-selections my-selections-file

Теперь вы готовы к apt-get install, как обычно.

Разовый

Поскольку эта команда также читает из стандартного ввода, вы можете сделать:

$ echo "man-db man-db/auto-update boolean true" | debconf-set-selections

Поиск ответов по умолчанию

Откуда вы знаете, какие пакеты используют эти ответы о конфигурации? Что ж, если вы уже установили данный пакет в интерактивном режиме, вы можете запросить у вашей локальной системы информацию о том, какие значения настроены в данный момент. debconf-get-selections выводит список всех ответов конфигурации для текущей системы. Например

$ debconf-get-selections | grep '^man'

возвращает в моей системе следующее:

man-db  man-db/install-setuid   boolean false
man-db  man-db/auto-update      boolean true

Вам может потребоваться установить пакет debconf-utils, чтобы сделать эту команду доступной.

Пример

# Preset values to questions which would otherwise be asked while
# installing packages.
# Use debconf-set-selections to install
openssh-server  openssh-server/permit-root-login        boolean false
man-db  man-db/install-setuid   boolean false
man-db  man-db/auto-update      boolean true

Источники

0 голосов
/ 23 мая 2009

Я бы посмотрел в cron-apt . Я сам не пробовал, но описание пакета звучит многообещающе.

0 голосов
/ 31 марта 2009

Я не уверен, какая именно конфигурация необходима для mysql-сервера, но вы можете попробовать что-то вроде ожидайте

...