Чтобы избежать ввода всех команд 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