Update обновляет список, upgrade обновляет программы
Главная путаница вокруг apt связана с названием первой команды. apt update не обновляет программы. Она скачивает свежие списки пакетов из репозиториев, которые перечислены в настройках системы, чтобы менеджер знал, какие версии сейчас доступны. После неё на компьютере ничего нового не появляется, только обновляется каталог.
Реальную установку выполняет apt upgrade: она сравнивает установленные версии со списком и ставит более новые. Поэтому правильный порядок такой: сначала update, затем upgrade. Если запустить upgrade без свежего списка, менеджер будет опираться на устаревшие сведения и может не увидеть новые версии.
Обе команды требуют прав администратора, то есть запуска через sudo. Перед upgrade apt показывает, что именно будет обновлено и сколько данных нужно скачать, и спрашивает подтверждение. Читайте этот список: он помогает заметить неожиданные изменения, например удаление нужной программы. Ключ -y отвечает «да» автоматически и подходит для скриптов, а не для первого знакомства.
upgrade, full-upgrade и dist-upgrade
Разница между ними — в том, насколько смело менеджер меняет набор пакетов.
| Команда | Что делает |
|---|---|
| apt upgrade | ставит новые версии (при необходимости с новыми зависимостями), но не удаляет установленные пакеты |
| apt full-upgrade | может удалять пакеты и ставить новые, если это нужно для разрешения зависимостей |
| apt-get dist-upgrade | то же поведение, что у full-upgrade, в старой форме команды |
Бывает, что upgrade оставляет часть пакетов «удержанными»: в сообщении появляется строка о том, что эти пакеты не обновлены. Обычно причина в том, что для обновления пришлось бы удалить какой-то из установленных пакетов. Тогда помогает full-upgrade, но внимательно прочитайте, что будет удалено.
Для обычной настольной или серверной системы достаточно регулярного upgrade, а full-upgrade уместен при переходах между версиями дистрибутива, где набор пакетов меняется шире. Сами переходы между версиями делают по инструкции разработчика дистрибутива, а не набором команд из памяти.
Установка, удаление и поиск пакетов
Кроме обновления, apt решает повседневные задачи. Команды, которые нужны чаще всего:
- apt search слово — искать пакеты по описанию;
- apt show имя — посмотреть версию, размер, зависимости и описание перед установкой;
- apt install имя — установить пакет вместе с зависимостями;
- apt remove имя — удалить программу, оставив её настройки;
- apt purge имя — удалить вместе с системными файлами настроек;
- apt autoremove — убрать пакеты, которые ставились как зависимости и больше никому не нужны;
- apt list --upgradable — показать, что можно обновить, не обновляя.
Разница между remove и purge важна, когда вы хотите вернуть систему «как было»: remove сохраняет конфигурацию, чтобы при повторной установке не потерять настройки, purge стирает её. Личные данные в домашней папке ни та ни другая команда обычно не затрагивает, но это зависит от пакета.
Перед apt autoremove читайте список: иногда в него попадает то, что вы считаете нужным. Если пакет нужен, установите его явно, и он перестанет считаться лишним.
Ошибки блокировки и как их разбирать
Самое частое сообщение — что не удаётся получить блокировку: файл /var/lib/dpkg/lock или подобный занят другим процессом. Это защита от одновременной работы двух менеджеров пакетов.
Порядок действий при таком сообщении:
- Подождите несколько минут: в фоне могло начаться автоматическое обновление, которое само завершится.
- Проверьте, что действительно запущено: ps aux | grep -E 'apt|dpkg'. Если видите работающий процесс, дайте ему закончить.
- Не удаляйте файлы блокировки вручную, пока уверены, что другой процесс работает: так можно повредить базу пакетов.
- Если процесса нет, а установка была прервана, система обычно предлагает команду sudo dpkg --configure -a, которая достраивает прерванные операции.
- Для повреждённых зависимостей используют sudo apt --fix-broken install.
Ещё одна категория сбоев связана с репозиториями: сообщения о недоступности адресов, истёкших ключах подписи или переименованных ветках. Они означают проблему настройки источников или сети, а не самого apt. Проверьте подключение, актуальность списка источников и документацию вашего дистрибутива.
Привычки, которые экономят нервы
Несколько практичных правил, если система нужна вам для работы.
Обновляйтесь регулярно, но не за пять минут до важного дела: после обновления иногда нужна перезагрузка, особенно когда обновилось ядро. Если после upgrade система просит перезапустить службы, соглашайтесь в удобное время.
На сервере перед крупным обновлением сделайте резервную копию нужных данных и убедитесь, что есть второй способ входа, если служба SSH откажется стартовать. Часть обновлений автоматические; включена ли такая настройка, зависит от дистрибутива и выбранных параметров.
Периодически очищайте кэш скачанных пакетов командой apt clean: он занимает место на диске, а искать, что занимает место, помогают команды df и du.
И наконец, ставьте программы из репозиториев вашего дистрибутива, пока этого достаточно. Добавление сторонних источников увеличивает риск конфликтов и требует доверия к тому, кто их ведёт. Каждый добавленный источник стоит записывать, чтобы потом можно было понять, откуда на компьютере взялась конкретная версия.
Чем apt отличается от apt-get
В инструкциях встречаются оба названия, и это вызывает вопросы. apt-get — более старый инструмент, поведение которого меняется редко, поэтому им привыкли писать скрипты. apt — более новая оболочка для интерактивной работы: у неё аккуратный вывод, индикатор прогресса и объединённые в одной команде действия, которые раньше требовали разных программ вроде apt-cache.
Для повседневной работы в терминале подойдёт apt. В автоматических сценариях и в примерах, написанных несколько лет назад, чаще используют apt-get, и такие команды продолжают работать. Различие в выводе: apt сам предупреждает, что его интерфейс не рассчитан на разбор программами, поэтому скриптам лучше полагаться на apt-get.
Ещё один инструмент в той же семье — dpkg. Он работает с отдельными файлами пакетов и не решает зависимости за вас. Когда нужно установить загруженный файл пакета, apt install с путём к файлу сам подтянет недостающее, а dpkg -i ограничится одним пакетом и сообщит о недостающих зависимостях.