Как автоматизировать dpkg / apt-get?

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

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

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

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

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

однако expect выглядит как то, что мне понадобится для sun-java6-jdk; еще не оценили его

5 ответов


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


ответ от ossramblings.com:

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

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

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

sudo debconf-set-selections ./something.seed

любой пакет 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, as обычный.

одноразовая

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

$ 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

источник


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


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