Большинство новичков сейчас выбирает себе Ubuntu/GNU своей первой ОС при знакомстве с Linux.
Эта статья актуальна и для друхих дистрибутивов Linux.
Когда в Ubuntu нужно выполнять apt update перед установкой программ?
Команда apt update обновляет локальный кеш списка пакетов из репозиториев Ubuntu. Она не устанавливает и не обновляет сами программы, а только синхронизирует информацию о доступных версиях.
📌 Когда нужно запускать apt update?
1. 🔄 Перед первым использованием apt после установки системы
После чистой установки Ubuntu локальный кеш пакетов пуст. Без apt update система не будет знать, какие пакеты доступны.
sudo apt update && sudo apt install программа
2. ⏳ Если прошло много времени с последнего обновления
Репозитории Ubuntu обновляются постоянно (особенно security и updates). Если не обновлять кеш неделю и больше, можно получить устаревшие версии пакетов или даже ошибки зависимостей.
3. 🚨 При ошибке «Unable to locate package»
Если apt install не находит пакет, возможно, кеш устарел:
sudo apt update
sudo apt install программа # Повторяем установку
4. 🔄 Перед массовым обновлением (apt upgrade)
Если вы планируете глобальное обновление (sudo apt upgrade), сначала всегда делайте apt update, иначе система может пропустить важные обновления.
5. 📡 После изменения /etc/apt/sources.list
Если вы вручную редактировали файлы репозиториев (например, добавили PPA или изменили sources.list), нужно обновить кеш:
sudo apt update
📌 Когда можно НЕ делать apt update?
1. 🔄 Если вы только что обновляли кеш
Если apt update выполнялся менее часа назад, повторный запуск не нужен (если вы не меняли репозитории).
2. 🛠️ При установке локального .deb-файла
Если вы устанавливаете пакет вручную (например, sudo dpkg -i файл.deb), apt update не требуется.
3. 🔄 При использовании apt install несколько раз подряд
Если вы устанавливаете несколько программ в одной сессии терминала, достаточно одного apt update в начале.
📜 Примеры правильного использования
✅ Правильно:
# Обновили кеш и установили программу
sudo apt update
sudo apt install firefox
# Через час устанавливаем ещё одну программу — update не нужен
sudo apt install vlc
❌ Ошибка:
# Установка без обновления кеша (может не найти пакет)
sudo apt install chromium # Ошибка, если кеш старый
🔄 Лучшая практика для скриптов:
sudo apt update && sudo apt install -y программа
(Флаг -y автоматически подтверждает установку.)
🔎 Как проверить, когда последний раз обновлялся кеш?
ls -l /var/lib/apt/lists/ | head -n 5
Если файлы старше суток — лучше сделать apt update.
📌 Вывод
Ситуация Нужен apt update?
Первая установка пакета за день ✅ Да
Установка нескольких программ ❌ Нет (если уже делали)
После редактирования sources.list ✅ Да
Установка .deb вручную ❌ Нет
Ошибка «Unable to locate package» ✅ Да
💡 Совет: Если сомневаетесь — просто выполните apt update. Лишним не будет!
Запомните:
apt update = обновляет список пакетов (не сами программы!).
apt upgrade = обновляет уже установленные пакеты (требует apt update перед собой).
Почему apt install не находит пакет, если кеш устарел?
Когда вы запускаете apt install программа, система не ищет пакет в интернете в реальном времени. Вместо этого она проверяет локальный кеш списка пакетов, который хранится на вашем компьютере в /var/lib/apt/lists/.
1. Как работает apt install?
- apt update → скачивает актуальные списки пакетов из репозиториев (например, archive.ubuntu.com) и сохраняет их локально.
- apt install → ищет пакет в этом локальном кеше, а не в интернете.
Если кеш устарел, система не знает о новых пакетах или их версиях.
2. Пример: почему пакет не находится?
Допустим:
- Вы установили Ubuntu месяц назад и никогда не делали apt update.
- Пакет neofetch добавили в репозиторий 2 недели назад.
Если вы попробуете установить его:
sudo apt install neofetch
Вы получите ошибку:
E: Unable to locate package neofetch
Почему?
- Ваш локальный кеш не знает о новом пакете, потому что он не обновлялся с момента установки системы.
3. Как это исправить?
Просто обновите кеш:
sudo apt update
Теперь система:
- Скачает свежие списки пакетов.
- Узнает о neofetch (и других новых пакетах).
После этого установка заработает:
sudo apt install neofetch
4. Другие причины, почему пакет не находится
Если apt update не помог, проблема может быть в другом:
🔹 Пакет есть, но в другом репозитории
- Ubuntu использует разные репозитории (main, universe, restricted, multiverse).
- Например, universe не всегда включён по умолчанию.
Решение:
sudo add-apt-repository universe
sudo apt update
sudo apt install программа
🔹 Пакета нет в официальных репозиториях
- Например, spotify, vscode или docker нужно добавлять вручную.
Решение:
# Пример для VS Code
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/
sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt update
sudo apt install code
🔹 Опечатка в названии пакета
- Например, python3-pip вместо python-pip.
Решение:
Проверить точное название:
apt search ключевое_слово
5. Как проверить, что кеш устарел?
Посмотрите дату изменения файлов в /var/lib/apt/lists/:
ls -l /var/lib/apt/lists/ | head -n 5
Если файлы старше нескольких дней — стоит сделать apt update.
📌 Вывод
Проблема Решение
Кеш устарел
→ пакет не находитсяsudo apt update
Пакет в universe sudo add-apt-repository universe
Пакет в стороннем репозитории Добавить репозиторий вручную
Опечатка в названии apt search имя
💡 Главное правило:
Если apt install выдаёт «Unable to locate package», первое, что нужно сделать — sudo apt update.
Теперь вы знаете, почему это происходит и как это исправить! 🚀
Касается ли это только новых пакетов или также новых версий?
Ответ: И того, и другого!
Когда вы не делаете apt update, система:
- Не узнаёт о новых пакетах → не может их установить (E: Unable to locate package).
- Не видит новых версий уже установленных пакетов → не предложит обновлений.
1. Как apt update влияет на версии пакетов?
🔹 Без apt update
- Ваш локальный кеш содержит устаревшую информацию о версиях пакетов.
- Даже если в репозиториях вышла новая версия программы (например, nginx 1.25), ваш apt будет считать, что последняя доступная версия — это та, что была на момент последнего обновления кеша (например, nginx 1.23).
🔹 С apt update
- apt получает актуальные данные о всех пакетах, включая их новые версии.
- После этого:
apt upgrade установит новые версии.
apt install пакет поставит последнюю доступную версию.
2. Пример: обновление версии пакета
Допустим:
- 10 дней назад вы делали apt update, и тогда в репозиториях был python3 3.10.
- Сегодня вышло обновление python3 3.12.
Что будет, если не делать apt update?
sudo apt install python3
Установится 3.10, потому что система не знает о версии 3.12!
Как получить последнюю версию?
sudo apt update # Обновляем информацию о версиях
sudo apt install python3 # Теперь установится 3.12
3. Как проверить, какие версии пакетов доступны?
До обновления кеша:
apt list --upgradable
Покажет пустой список, если кеш устарел.
После apt update:
sudo apt update
apt list --upgradable
Теперь отобразятся пакеты, для которых есть обновления.
4. Особые случаи
🔸 LTS-релизы Ubuntu
- Даже после apt update вы не получите мажорные обновления (например, с Python 3.10 до 3.12), если не включите репозиторий backports или не используете PPA.
🔸 Закреплённые версии (pinned packages)
Если пакет вручную зафиксирован на определённой версии (через /etc/apt/preferences), apt update не изменит его, даже если есть новее.
📌 Вывод
Ситуация Нужен apt update? Почему?
Установка нового пакета ✅ Да Чтобы система узнала о его существовании Установка новой версии ✅ Да Чтобы apt увидел, что вышло обновление Ручная установка .deb ❌ Нет Версия уже задана в файле
Обновление закреплённого ❌ Нет Версия жёстко зафиксирована
пакета
💡 Главное правило:
Хотите последние версии пакетов? Всегда делайте apt update перед apt install или apt upgrade.
Что хранится в локальном списке пакетов APT
(в /var/lib/apt/lists/)?
Локальный кеш APT не содержит самих программ, но включает всю необходимую метаинформацию о пакетах. Вот что там есть:
1. Что содержится в локальном кеше?
Файлы в /var/lib/apt/lists/ (после apt update) содержат:
🔹 Метаданные пакетов
- Имена пакетов (например, firefox, nginx).
- Версии (например, 1:122.0.1+build1-0ubuntu0.22.04.1).
- Архитектура (amd64, arm64, i386).
- Описание (что делает пакет).
🔹 Зависимости (dependencies)
- Какие пакеты требуются для установки (например, libgtk-3-0 для firefox).
- Какие пакеты конфликтуют с данным.
🔹 Контрольные суммы (хеши)
- SHA256/MD5 файлов пакетов (чтобы проверить целостность при скачивании).
🔹 Ссылки на скачивание
- URL репозиториев (например, http://archive.ubuntu.com/ubuntu/pool/main/f/firefox/).
- Имена .deb-файлов (например, firefox_122.0.1+build1-0ubuntu0.22.04.1_amd64.deb).
2. Чего НЕТ в локальном кеше?
❌ Сама программа (бинарные файлы) — они скачиваются только при apt install из репозиториев.
❌ Исходный код (если не включён репозиторий deb-src).
3. Пример файла из /var/lib/apt/lists/
Для репозитория main (Ubuntu Jammy):
Copy
Package: firefox
Version: 1:122.0.1+build1-0ubuntu0.22.04.1
Architecture: amd64
Depends: libgtk-3-0 (>= 3.14), libc6 (>= 2.35), ...
Filename: pool/main/f/firefox/firefox_122.0.1+build1-0ubuntu0.22.04.1_amd64.deb
Size: 72356784
SHA256: a1b2c3d4e5f6...
Description: Mozilla Firefox web browser
4. Как это работает при установке?
- Вы вводите apt install firefox.
- APT ищет пакет в локальном кеше (/var/lib/apt/lists/).
- Находит запись с:
Именем пакета.
Версией.
Ссылкой на .deb-файл в репозитории. - Скачивает только этот .deb-файл из интернета (например, с archive.ubuntu.com).
- Устанавливает его в систему.
5. Где физически хранятся скачанные пакеты?
- Кеш .deb-файлов: /var/cache/apt/archives/ (удаляется после установки, если не задано apt-config set APT::Keep-Downloaded-Packages true).
- Установленные программы: /usr/bin/, /usr/lib/, etc.
6. Как посмотреть содержимое кеша?
🔹 Список всех доступных пакетов:
apt list --all-versions
🔹 Поиск информации о конкретном пакете:
apt show firefox
🔹 Просмотр исходных URL репозиториев:
cat /etc/apt/sources.list
📌 Вывод
Что хранится Где Пример
Названия и версии пакетов /var/lib/apt/lists/firefox 122.0.1
Ссылки на .deb-файлы Там же (в виде Filename)
pool/main/f/firefox/firefox_122.0.1.deb
Сами программы (бинарники) Нет (скачиваются при установке)
💡 Главное:
Локальный кеш APT — это «оглавление» репозиториев, а не сами программы. Без apt update это оглавление устаревает, и система не узнаёт о новых пакетах или версиях.
Почему LTS-релизы Ubuntu не получают новые версии программ?
LTS (Long-Term Support) — это стабильные версии Ubuntu, рассчитанные на 5 лет поддержки. Их ключевая особенность — минимальные изменения после выхода, включая версии программ. Вот почему так сделано:
1. Причины «консервативности» LTS
🔹 Стабильность > Новизна
- Целевая аудитория LTS: корпоративные пользователи, серверы, критичная инфраструктура.
- Гарантия: программы тестируются месяцами, чтобы избежать багов, несовместимостей и регрессий.
🔹 Безопасность без риска
- Все обновления в LTS — только исправления безопасности (security patches) и критические багфиксы.
- Например, Firefox в LTS получает патчи уязвимостей, но остаётся на мажорной версии (например, 122.x вместо 125.x).
🔹 Предсказуемость для бизнеса
- Компании не хотят, чтобы их ПО ломалось из-за обновления библиотек (например, Python 3.10 → 3.12).
- Пример: если веб-приложение протестировано на nginx 1.18, его не обновят до 1.25 автоматически.
2. Как устроены репозитории LTS?
Ubuntu LTS использует три уровня пакетов:
РепоСодержимоеПримерmainОсновные пакеты (стабильные)python3.10, nginx 1.18securityИсправления безопасностиopenssl 1.1.1 → 1.1.1uupdatesКритические багфиксыfirefox 122.0 → 122.0.1backportsНовые версии (опционально!)nginx 1.25, php 8.2
- По умолчанию backports отключён — его нужно включать вручную.
3. Как получить новые версии в LTS?
Если вам нужна свежая программа, есть варианты:
🔹 Ручная установка .deb
wget https://example.com/package.deb
sudo dpkg -i package.deb
Минус: нет автоматических обновлений.
🔹 Snap / Flatpak
sudo snap install chromium
flatpak install flathub org.gimp.GIMP
Плюс: автообновления, но изолированная среда.
🔹 PPA (сторонние репозитории)
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.3
Риск: возможны конфликты зависимостей.
🔹 Включить backports
sudo apt install -t jammy-backports nginx
Плюс: полуофициальные новые версии.
4. Почему не сделать LTS с новыми версиями?
- Тестирование: каждая новая версия требует проверки на сотнях конфигураций.
- Совместимость: Enterprise-ПО (например, SAP, Oracle) сертифицируется под конкретные версии библиотек.
- Поддержка: Canonical не может гарантировать работу всех обновлений 5 лет.
5. Пример: Python в Ubuntu 22.04 LTS
- Базовый LTS: Python 3.10 (фиксированная версия).
- Backports: Python 3.12 (если включить вручную).
- PPA: Python 3.13 (через ppa:deadsnakes).
💡 Главное:
LTS — это «замороженная» версия Ubuntu для тех, кому важна стабильность. Если нужны новые программы — используйте backports, PPA или не-LTS релизы.
Теперь вы понимаете философию LTS и знаете, как её обойти! 🛠️
Почему нельзя просто использовать apt upgrade без apt update?
Короткий ответ:
apt upgrade обновляет только те пакеты, о которых знает локальный кеш. Если кеш устарел (не обновлялся через apt update), система пропустит новые версии программ и обновления безопасности!
Разберём подробно, как это работает и почему опасно.
1. Чем отличаются apt update и apt upgrade?
Команда Что делает? Аналог из жизни
apt update Обновляет локальный список пакетов (скачивает свежие
данные из репозиториев).
"Позвонить в магазин и уточнить, какие товары есть в наличии".
apt upgrade Устанавливает новые версии пакетов, но только из уже
известного списка."Купить товары из последнего полученного
прайс-листа".
🔹 Что будет, если пропустить apt update?
- apt upgrade не увидит новых версий пакетов, даже если они вышли.
- Исправления безопасности могут не установиться, потому что система о них не знает.
2. Пример: Почему это проблема?
Сценарий:
- Вы последний раз делали apt update 2 месяца назад.
- За это время вышло:
Новая версия openssl с критическим багфиксом.
Обновление firefox с исправлением уязвимости.
Что произойдёт?
- Вы выполняете:bashCopysudo apt upgrade
- Система не знает о новых версиях, потому что локальный кеш устарел.
- Результат:
Ваш openssl останется уязвимым.
firefox не обновится до безопасной версии.
3. Как проверить, что кеш устарел?
🔹 Способ 1: Посмотреть дату обновления кеша
ls -lt /var/lib/apt/lists/ | head -n 5
Если файлы старше нескольких дней — кеш устарел.
🔹 Способ 2: Попробовать установить пакет
sudo apt install новый-пакет
Если выдаёт E: Unable to locate package, значит, кеш не обновлялся.
4. Правильный порядок обновления Ubuntu
✅ Всегда сначала update, потом upgrade
sudo apt update # Скачать свежий список пакетов
sudo apt upgrade # Установить новые версии
⚠️ Опасный вариант (не делайте так!)
sudo apt upgrade # Может пропустить критические обновления!
5. Можно ли автоматизировать apt update?
Да! Например, настроить ежедневный автоапдейт:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades # Выбрать автоматические
обновления
Теперь система сама будет делать apt update и устанавливать security-патчи.
📌 Вывод
Почему apt upgrade без apt update — плохая идея?
- Пропускает обновления безопасности (например, openssl, linux-image).
- Не видит новых версий программ (firefox, nginx и др.).
- Может оставить систему уязвимой к эксплойтам.
Как правильно?
sudo apt update && sudo apt upgrade -y
Запомните:
apt update = "узнать, какие есть обновления".
apt upgrade = "установить их".
Без первого шага второй бесполезен!
Теперь вы понимаете, почему apt update критически важен. Всегда делайте его перед upgrade! 🔐