У меня есть сценарий оболочки для автоматической настройки новых виртуальных машин Ubuntu для моих целей. Я хотел бы, чтобы этот скрипт установил и включил unattended-upgrades
, но я не могу понять, как это сделать без взаимодействия с пользователем.
Обычный способ активировать обновления - dpkg-reconfigure unattended-upgrades
, но, конечно, он интерактивный. Неинтерактивный внешний интерфейс вообще не задает никаких вопросов, а внешний текстовый интерфейс кажется связанным и настроенным на выполнение своих операций ввода-вывода с tty, а не с stdin / stdout.
Просто сделайте копию/etc/apt/apt.conf.d/20auto-upgrades после конфигурирования его способ, которым Вы любите и бросаете это в место на Вашей целевой машине. Вы могли встроить его в свой сценарий, или Вы могли rsync или wget это в с сервера, или что бы то ни было.
Таким образом, в основном Ваш сценарий мог бы сделать что-то вроде этого:
apt-get install unattended-upgrades
wget -O /etc/apt/apt.conf.d/20auto-upgrades http://myserver.mytld/confs/20auto-upgrades
/etc/init.d/unattended-upgrades restart
Нет действительно никакой причины для обезьяны с dpkg-реконфигурировать сценарием вообще.
Если Вы не хотите выбирать conf файл от удаленного сервера, это ОЧЕНЬ очень коротко и просто - версия по умолчанию, которая выбирает и устанавливает обновления системы защиты только, похожа на это:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Таким образом, можно просто повторить те строки в файл конфигурации непосредственно со следующим:
echo -e "APT::Periodic::Update-Package-Lists \"1\";\nAPT::Periodic::Unattended-Upgrade \"1\";\n" > /etc/apt/apt.conf.d/20auto-upgrades
Если вы хотите использовать dpkg-reconfigure, вы можете установить значение с помощью «debconf-set-selections», а затем перенастроить его неинтерактивным способом.
echo "unattended-upgrades unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections; dpkg-reconfigure -f noninteractive unattended-upgrades
По моему мнению, Вы должны написать свой собственный скрипт cron, который вызывает aptitude для этой цели, ознакомьтесь с третьей темой Напишите свой собственный скрипт cron , который вызывает aptitude в этой документации .
Вы должны использовать sudo, чтобы эхо в /etc/apt/apt.conf.d/20auto-upgrades
if [[ ! -f /etc/apt/apt.conf.d/20auto-upgrades.bak ]]; then
sudo cp /etc/apt/apt.conf.d/20auto-upgrades /etc/apt/apt.conf.d/20auto-upgrades.bak
sudo rm /etc/apt/apt.conf.d/20auto-upgrades
echo "APT::Periodic::Update-Package-Lists \"1\";
APT::Periodic::Download-Upgradeable-Packages \"1\";
APT::Periodic::AutocleanInterval \"30\";
APT::Periodic::Unattended-Upgrade \"1\";" | sudo tee --append /etc/apt/apt.conf.d/20auto-upgrades
fi
dpkg-reconfigure -f noninteractive unattended-upgrades