Как автоматизировать 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
источник
- ответ Энтони Таунса & бит-гниение ссылка
- человек debconf-set-selections (1)
- дублировать ответ on ServerFault
Я не уверен точно, какая конфигурация mysql-server нужна, но вы можете попробовать что-то вроде ожидал
Я бы посмотрел в cron-apt. Я сам не пробовал, но описание пакета звучит многообещающе.