Команда apt используется для управления пакетами в Debian и Ubuntu. Хотя вы, вероятно, уже знакомы с опциями установки и удаления, apt предоставляет несколько дополнительных возможностей.
Одна из них — возможность увидеть все обновляемые пакеты в вашей системе. Чтобы увидеть их, достаточно выполнить эту команду в терминале:
apt list --upgradable
Как вы можете заметить, вам даже не нужен sudo, чтобы вывести список обновляемых пакетов. Он просто перечисляет пакеты, которые могут быть обновлены. Он не обновляет их.
На самом деле, команда apt добавляет эту подсказку, когда вы выполняете команду sudo apt update для обновления кэша локального репозитория пакетов.
Получено 1 243 кБ за 17 с (71,4 кБ/с)
Чтение списков пакетов... Выполнено
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
30 пакетов могут быть обновлены. Выполните 'apt list --upgradable', чтобы увидеть их.
Я не припоминаю подобной прямой опции в старой команде apt-get для списка всех обновляемых пакетов. Это одна из нескольких новых возможностей apt, добавленных поверх старой команды apt-get.
Давайте поговорим об этом немного подробнее.
Список всех обновляемых пакетов
Здесь следует знать, что вы получаете список обновлений, доступных только через менеджер пакетов APT. Поэтому, если вы добавили PPA или внешние репозитории в sources.list вашей системы, вы увидите обновления из них.
Но вы не получите здесь обновления для AppImage, Flatpak, Snap или других форматов упаковки.
Другими словами, эта программа работает только с пакетами apt.
Поэтому, чтобы получить список всех обновляемых пакетов в системе Ubuntu или Debian, сначала нужно обновить локальный кэш пакетов:
sudo apt update
И тогда ваша система будет знать о доступных обновлениях пакетов. Команда apt сообщает вам, сколько пакетов можно обновить, в конце команды update:
Чтобы узнать, какой пакет может быть обновлен, выполните команду:
apt list --upgradable
Вы должны увидеть вывод, подобный этому:
linuxcool@fox-pc:~$ apt list --upgradable
Вывод списка… Готово
brave-browser/stable 1.41.96 amd64 [может быть обновлён с: 1.40.113]
firefox-trunk-locale-ru/jammy 104.0~a1~hg20220712r623561-0ubuntu0.22.04.1~umd1 amd64 [может быть обновлён с: 104.0~a1~hg20220708r623298-0ubuntu0.22.04.1~umd1]
Например, показано, что в системе установлен браузер Brave версии 1.40.113, а доступна версия 1.41.96.
Что вы можете сделать с этой информацией? Позвольте мне поделиться несколькими вариантами, которые мне приходят в голову.
Обновить все пакеты
Это, вероятно, то, что делает большинство случайных пользователей Ubuntu. Вы можете обновить все обновляемые пакеты с помощью следующей команды:
sudo apt upgrade
Команда перечислит, какие пакеты будут обновлены, а затем попросит подтвердить обновление нажатием клавиши Enter или Y.
Если вы уверены в обновлении всех пакетов, вы можете пропустить часть «Хотите ли вы продолжить», добавив -y к команде.
sudo apt upgrade -y
Имитация обновления (но не обновление пакетов)
Так люди поступали до появления команды apt list. С опцией simulate вы фактически не вносите никаких изменений. Она просто показывает, какие пакеты будут установлены или обновлены, если вы запустите обновление.
apt -s upgrade
Вам не нужно использовать sudo (хотя я использовал его на скриншоте ниже).
Обновление только выбранных пакетов
Если вы управляете сервером Ubuntu и хотите обновить не все пакеты, а только один из нескольких выбранных (например, MySQL/Ngnix), вы можете легко сделать это с помощью команды apt.
sudo apt --only-upgrade install имя_пакета
На самом деле, если вы запустите команду apt install на уже установленном пакете, для которого доступно обновление, она обновит пакет.
Используя флаг —only-upgrade, вы гарантируете, что пакет будет только обновлен (если он уже установлен). Команда apt install не будет устанавливать данный пакет, если он еще не установлен.
Вы также можете обновить несколько выбранных пакетов, указав их имя:
sudo apt --only-upgrade install package1 package2
Вы также можете сделать наоборот и удержать выбранные пакеты от обновления.
sudo apt-mark hold имя_пакета
При этом данный пакет не будет обновлен при обновлении всех пакетов системы.
Вы можете снять ограничение с помощью этой команды:
sudo apt-mark unhold package_name
Показывает ли он обновления ядра?
Это довольно сложно.
Когда вы выполняете команду ‘apt list -upgradable‘, она показывает все пакеты, которые могут быть обновлены.
Но если доступны новые версии ядра, они могут быть не показаны, поскольку имя пакета ядра начинается с linux-headers-x-y. Это происходит потому, что система рассматривает их как новые пакеты, а не как обновление уже установленного пакета linux-headers-a-b.
Однако в списке обновляемых пакетов вы все равно увидите пакет вида «linux-generic-hwe«. Потому что этот пакет будет обновлен (с более новым ядром).
Заключение
Возможность составлять список обновляемых пакетов — это одна из нескольких новых возможностей команды apt по сравнению со старой командой apt-get.
Как пользователь настольных компьютеров, я не всегда проверяю пакеты, которые можно обновить. Я сразу же приступаю к обновлению. Однако, когда я управляю сервером, я предпочитаю посмотреть, какие обновления доступны, а затем решить, буду ли я обновляться.
А как насчет вас? Видите ли вы хорошее применение этой функции для себя?