Вопрос или проблема
Я знаю, что есть три команды для обновления и затем обновления всей системы, это:
sudo apt update
: Получает список доступных обновленийsudo apt upgrade
: Строго обновляет текущие пакетыsudo apt full-upgrade
: Устанавливает обновления (добавляет или удаляет пакеты), эквивалент dist-upgrade
Существует ли супер-обновление, которое объединяет все эти команды в одну?
Есть 3 достойных варианта:
-
Вы можете создать скрипт что-то вроде следующего:
#!/bin/bash set -e sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
Назовите его как-нибудь, например
update.sh
и разместите в/usr/local/bin
, а затем сделайте скрипт исполняемым, выполнив:sudo chmod +x /usr/local/bin/update.sh
-
Другой метод — создать алиас bash (в
~/.bashrc
) или в любом месте, где вы обычно храните свои алиасы:alias update="sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade"
-
Последний метод — просто склеить 3 команды вместе в командной строке:
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
Несколько вариантов…
Ссылка:
Мы можем использовать команду в одну строку (не нужно скриптов, просто скопируйте и вставьте)
sudo apt update -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo apt autoclean -y
update
– обновляет список пакетов, но не устанавливаетupgrade
– устанавливает новые версии пакетов, если доступны новые версииfull-upgrade
– выполняет функцию обновления, но удалит в настоящее время установленные пакеты, если это необходимо для обновления системы в целом (исправление плохих зависимостей затем)autoremove
,autoclean
иclean
– очищают старые пакеты, которые больше не нужны- опция
-y
не запрашивает разрешение на каждом шаге &&
указывает, что следующая команда будет выполнена только в том случае, если предыдущая была успешно выполнена
Алиас
Вы также можете создать алиас. Добавьте следующую строку в свой ~/.bashrc
или ~/.bash_aliases
(если у вас есть)
alias upev='sudo apt update -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo apt autoclean -y'
Запустите source ~/.bashrc
или source ~/.bash_aliases
соответственно, чтобы получить ваш новый алиас, и теперь просто выполните
upev
замечание: я выбрал upev
для UPgrade EVerything, но вы можете выбрать что угодно.
Если вас раздражает чрезмерное количество ввода, вы можете определить себе “алиас”. Это можно сделать, например, добавив строку в конец вашего $HOME/.profile
следующим образом:
alias sau='sudo aptitude update && sudo aptitude upgrade'
(конечно, вы можете заменить “sau” на что-то другое — для меня это акроним для Sudo Apt-get Update). После сохранения файла откройте новую оболочку (или “source” снова .profile, выполнив . $HOME/.profile
. Теперь вы всегда можете просто ввести “sau”, чтобы выполнить всю работу. Работает отлично для меня на нескольких машинах.
sudo apt install unattended-upgrades
Это лучшая команда. Все остальные решения требуют от вас вводить одну строку снова и снова каждый день. Это действительно одно-командное решение. Смотрите официальную документацию apt от Ubuntu!
Редактируя файлы .conf
этого пакета в /etc
, вы можете установить частоту update, install, clean, autoremove
…
Или просто получить электронное письмо с уведомлением о том, что обновление доступно с перечислением имен пакетов.
При каждом изменении создается небольшой файл журнала, и я представляю, что можно было бы написать маленький скрипт как GUI расширение для появления в уведомлениях рабочего стола тоже (не по теме).
К сожалению, две команды необходимо выполнять отдельно.
Существует ли супер-обновление, которое объединяет все эти команды в одну?
Что ж, плохое известие в том, что нет, такого нет. Но хорошая новость в том, что я собрал одно.
И продолжая идею упрощения, я превратил его создание в “одну” командную строку. Вот она:
echo "sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade && sudo apt -y autoremove && sudo apt autoclean" > update && sudo mv update /usr/local/bin/update && sudo chmod +x /usr/local/bin/update
Теперь, когда возникает необходимость в обновлении, вы просто вводите update
в терминале, вводите свой пароль и вуаля.
Это может выглядеть как одна из тех неразборчивых вещей, которые вы просто копируете и вставляете. Но на самом деле так быть не должно!
Смотрите, это на самом деле довольно просто, так что..
Что это такое :
- Каждая команда обновления (а затем дополнительные команды) были объединены с помощью
&&
(включаяapt autoremove
для удаления больше не используемых зависимостей). -y
была добавлена ко всем командамapt
, которые в противном случае запрашивали бы положительный ответ для выполнения своих действий.echo
была помещена перед командой, и строка была обрамлена""
, чтобы ее символы не экранировались.>
использовалось для перенаправления/записи выводаecho
(нашей строки) в файл “update”.- Файл перемещается в
/usr/local/bin/
, чтобы его можно было выполнить откуда угодно. Запись в этот путь требует прав суперпользователя, поэтому это невозможно сделать на предыдущем шаге. - Файл стал исполняемым с помощью
chmod
.
Просто скопируйте и вставьте следующую команду alias
и выполните ее:
alias fup='sudo apt-get -y update;sudo apt-get -y full-upgrade;sudo apt-get -y autoremove; sudo apt-get -y autoclean'
Теперь, выполняя fup
, автоматически будут выполнены все задачи, определенные в alias
.
Если вам нужно использовать это часто, выполните следующее.
-
Создайте файл с именем
.bash_aliases
в вашем$HOME
каталоге. Вы можете сделать это в терминале с помощью следующей команды:touch ./.bash_aliases
-
В файл
.bash_aliases
вставьте командуalias
, упомянутую выше. -
Теперь сохраните файл и выйдите.
-
Отредактируйте файл
.bashrc
, чтобы экспортировать ваш файл.bash_aliases
. Запустите:gedit .bashrc
и вставьте следующий код в конец файла:
if [ -f /home/abhyam/.bash_aliases ];then source /home/abhyam/.bash_aliases fi
-
Сохраните файл и выйдите.
-
Запустите:
source .bashrc
-
Теперь вы можете выполнять команду
fup
, чтобы полностью обновить и улучшить вашу систему в любое время.
Преимущество создания файла .bash_aliases
заключается в том, что вы также можете создавать пользовательские алиасы в этом файле для других действий, и он будет автоматически загружаться каждый раз, когда вы открываете терминал.
Нашел это где-то еще:
sudo -- sh -c "apt update && apt upgrade -y"
Также можно сделать алиас, чтобы использовать ‘upgrade’ в вашем ~/.bash_aliases с чем-то вроде:
alias upgrade="sudo -- sh -c 'apt update && apt upgrade -y'"
и выполнить ‘source ~/.bash_aliases’, чтобы это работало
Я нашел эту тему, искал тот же клад. Если кто-то все еще заинтересован, я работал над проектом git, который проходит через те же команды.
#!/usr/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
PURPLE='\033[0;35m'
NC='\033[0m' # Без цвета
#Регион --- Обновления
echo -e "${PURPLE}Выполняется: sudo apt update --fix-missing${NC}"
for i in {1..100}
do
sudo apt clean
sudo apt update --fix-missing
status=$?
if test $status -eq 0
then
echo -e "${GREEN}Успех: sudo apt update --fix-missing${NC}\n"
break
else
echo -e "${RED}Неудача: sudo apt update --fix-missing${NC}\n"
sleep 1m
fi
done
#Регион --- Обновления
for i in {1..100}
do
echo -e "${PURPLE}Выполняется: sudo apt upgrade -y${NC}"
sudo apt full-upgrade -y
status=$?
if test $status -eq 0
then
echo -e "${GREEN}Успех: sudo apt upgrade -y${NC}\n"
break
else
echo -e "${RED}Неудача: sudo apt upgrade -y${NC}\n"
sleep 1m
fi
done
#Регион
for i in {1..100}
do
echo -e "${PURPLE}Выполняется: sudo apt autoremove -y${NC}"
sudo apt autoremove -y
status=$?
if test $status -eq 0
then
echo -e "${GREEN}Успех: sudo apt autoremove -y${NC}\n"
break
else
echo -e "${RED}Неудача: sudo apt autoremove -y${NC}\n"
sleep 1m
fi
done
#Регион --- Выход из BasherUpdate
echo -e "${PURPLE}Выход из BasherUpdate...${NC}\n"
exit 0
Обратите внимание, что я использовал цикл по команде apt update
, потому что я получал ошибки mirror sync in progress
и хотел, чтобы он продолжал пытаться. Надеюсь, это поможет, и дайте мне знать, если у вас есть предложения!
Мне обычно нравится иметь файл, например clean.sh
, и запускать его, когда я хочу обновить, улучшить и очистить все.
#!/bin/bash
run_command() {
echo " > $1"
eval "$1"
}
# apt clean
run_command "sudo apt-get update"
run_command "sudo apt-get upgrade -y"
run_command "sudo apt-get dist-upgrade -y"
run_command "sudo apt-get clean"
run_command "sudo apt-get autoclean"
run_command "sudo apt-get autoremove -y"
run_command "sudo apt-get purge -y"
run_command "sudo apt-get autoremove --purge -y"
# bun (удалить, если у вас не установлен bun)
run_command "bun upgrade"
# сиротские пакеты
run_command "sudo apt-get autoremove --purge -y"
# журналы
run_command "sudo journalctl --vacuum-time=3d"
# snap
run_command "sudo snap refresh"
run_command "sudo snap remove --purge $(snap list --all | awk '/^disabled/{print $1}')"
# кэш apt
run_command "sudo rm -rf /var/lib/apt/lists/*"
# flatpak
run_command "flatpak update -y"
run_command "flatpak uninstall --unused"
# кэш npm
run_command "npm cache clean --force"
# старые ядра
run_command "sudo apt-get autoremove --purge -y"
echo "Очистка завершена"
sudo ./clean.sh
Ответ или решение
Вопрос обновления системы Ubuntu — это ключевая тема для пользователей, стремящихся поддерживать актуальность своих программ и безопасности системы. Чтобы успешно обновить все компоненты системы Ubuntu одним командным вызовом, существует несколько методов, которые можно использовать. В этом ответе представим наиболее подходящие способы в контексте командной строки и создания алиасов.
Однокомандное обновление системы Ubuntu
На данный момент не существует единой команды, которая бы полностью заменила последовательное выполнение команд update
, upgrade
и full-upgrade
. Тем не менее, вы можете комбинировать несколько команд в одну строку для достижения желаемого результата. Вот как можно это сделать:
sudo apt update -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo apt autoclean -y
Разбор команд:
-
sudo apt update -y
: обновляет список доступных пакетов и их версий, загружая данные из репозиториев. -
sudo apt full-upgrade -y
: производит обновления для установленных пакетов, разрешая конфликтные зависимости. Используйтеfull-upgrade
вместоupgrade
, так как он может удалять неподходящие пакеты, обеспечивая систему максимально актуальной. -
sudo apt autoremove -y
: удаляет ненужные пакеты, которые были установлены автоматически и больше не требуются. -
sudo apt clean -y
: очищает локальный репозиторий скачанных пакетов. -
sudo apt autoclean -y
: удаляет пакеты, которые больше не могут быть загружены.
Плюсы:
- Эффективность: Все команды выполняются последовательно, и при удачном завершении предыдущей команды запускается следующая.
- Автоматизация: Параметр
-y
позволяет избежать повторных запросов на подтверждение выполнения операций.
Создание алиаса для упрощения процесса
Если вы часто проводите обновления и хотите еще больше упростить процесс, вы можете создать алиас. Это позволит вам выполнять все действия одним словом.
-
Откройте файл
~/.bashrc
или~/.bash_aliases
в текстовом редакторе. -
Добавьте следующую строчку:
alias upev='sudo apt update -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo apt autoclean -y'
-
Сохраните изменения и выйдите из редактора.
-
Активируйте алиас, запустив команду:
source ~/.bashrc
Теперь вам просто нужно ввести upev
в терминале для выполнения всех вышеперечисленных команд.
Альтернативный подход: автоматическое обновление
Если вы хотите полностью автоматизировать процесс обновления, рассмотрите возможность установки пакета unattended-upgrades
. Это позволит системе автоматически устанавливать обновления, не требуя вашего вмешательства.
sudo apt install unattended-upgrades
Изучите конфигурационные файлы, расположенные в /etc/apt/apt.conf.d/
, чтобы настроить частоту и тип обновлений согласно вашим предпочтениям.
Заключение
Хотя прямой команды для одновременного выполнения всех действий по обновлению в Ubuntu не существует, вы можете создать собственное решение, комбинируя команды и используя алиасы. Это значительно упростит процесс обновления системы, сохраняя её актуальной и безопасной. Регулярные обновления — важный аспект управления системой, и следуя вышеуказанным шагам, вы сможете сделать этот процесс эффективным и минимизировать время, затрачиваемое на него.