Обход запроса "да"/"нет" в "apt-get upgrade"

Чтобы избежать ввода всех команд apt-get при обновлении моего компьютера, я сделал для этого простую команду псевдонима. Но я действительно хочу иметь возможность просто ввести свой псевдоним и позволить ему делать свое дело, а не ждать приглашения "да / нет", чтобы ввести "y". Есть ли простой способ обойти это приглашение или, может быть, добавить "да" где-нибудь в псевдониме?

Конечно, хотя я никогда не пробовал использовать его в качестве псевдонима, но это должно сработать:

sudo apt-get update && sudo apt-get -y upgrade
apt-get -o Dpkg::Options::='--force-confold' --force-yes -fuy dist-upgrade"

Чтобы прояснить Dpkg::Options::='--force-confold' с справочной страницы:

--force-confold: не изменяйте текущий конфигурационный файл, новая версия устанавливается с .dpkg-dist суффикс. При использовании только этой опции даже файлы конфигурации, которые вы не изменяли, остаются нетронутыми. Вам нужно сочетать его с --force-confdef чтобы разрешить dpkg перезаписывать файлы конфигурации, которые вы не изменяли.

apt-get update && apt-get upgrade -y && apt-get autoremove && apt-get autoclean

Это обновляет пакеты, обновляет пакеты, удаляет неиспользуемые пакеты, а затем удаляет старые версии пакетов.

Вы можете скопировать и вставить это в:

nano -w yourscript.sh

затем

chmod 777 yourscript.sh

затем

./yourscript.sh

До тех пор, пока вы используете su перед всеми этими шагами, которые я всегда делаю.

Вы также можете сделать это тихо, а затем получить уведомление, когда все будет сделано. Недостатком этого является то, что вы увидите только сообщения об ошибках и не увидите, что обновлено.

sudo apt-get update -qq && sudo apt-get dist-upgrade -qq && echo "All up to date now!" && notify-send "All up to date now!"

Определение функции было самым простым и универсальным методом, который я нашел.

Лично я никогда не получал update && -y upgrade чтобы работать правильно. В некоторых дистрибутивах возникают проблемы с одной командой (или псевдонимом), использующей && оператор и -y спорим вместе.

function update (){    sudo apt update    sudo apt -y upgrade}

ответ @wojox правильный, но вы можете использовать псевдоним еще дальше для большей функциональности. Я использую это уже довольно давно без проблем. Это позволит выполнить обновления (подтверждение с помощью -y), а затем тестирование, чтобы узнать, требуется ли перезагрузка. Если требуется перезагрузка, вы можете сделать это, нажав [ENTER], или отменить и перезагрузиться позже , нажав [CTRL+C]. Если перезагрузка не требуется, псевдоним завершает работу, сообщая вам об этом.

Мой псевдоним - sur для "перезагрузки обновления sudo", но не стесняйтесь называть его так, как вы выберете. Добавьте следующее в свой .bashrc файл:

alias sur='sudo apt update && sudo apt upgrade -y && if sudo test -f /var/run/reboot-required; then read -p "A reboot is required to finish installing updates. Press [ENTER] to reboot now, or [CTRL+C] to cancel and reboot later." && sudo reboot; else echo "A reboot is not required. Exiting..."; fi'

Вы можете продолжить цепочку дополнительных команд, если хотите сделать больше с тем же псевдонимом. Вот полный псевдоним из моего .bashrc это также приведет к удалению неиспользуемых пакетов:

alias sur='sudo apt update && sudo apt dist-upgrade -y && sudo apt autoremove -y && if sudo test -f /var/run/reboot-required; then read -p "A reboot is required to finish installing updates. Press [ENTER] to reboot now, or [CTRL+C] to cancel and reboot later." && sudo reboot; else echo "A reboot is not required. Exiting..."; fi'

На самом деле я наткнулся на эту тему, проверяя, есть ли возможность пропустить приглашение для перезаписи файла конфигурации. Спасибо @Vadim за ваш ответ выше! Мой новый псевдоним таков:

alias sur='sudo apt update && sudo apt -o Dpkg::Options::="--force-confdef" dist-upgrade -y && sudo apt autoremove -y && if sudo test -f /var/run/reboot-required; then read -p "A reboot is required to finish installing updates. Press [ENTER] to reboot now, or [CTRL+C] to cancel and reboot later." && sudo reboot; else echo "A reboot is not required. Exiting..."; fi'

Затем я нажимаю на этот новый .bashrc файл на каждый из моих управляемых серверов просто с помощью:

while read HOST; do scp .bashrc username@$HOST:/home/username; done < managedhosts.txt

Отвечает ли это на ваш вопрос? Автоматизация установки apt-get с помощью --assume-yes