Найти в Дзене
КАМЕНЬ

Разберем основные вопросы новичков, которые только установили LINUX!

Эта статья актуальна и для друхих дистрибутивов Linux. Когда в Ubuntu нужно выполнять apt update перед установкой программ? Команда apt update обновляет локальный кеш списка пакетов из репозиториев Ubuntu. Она не устанавливает и не обновляет сами программы, а только синхронизирует информацию о доступных версиях. После чистой установки Ubuntu локальный кеш пакетов пуст. Без apt update система не будет знать, какие пакеты доступны. sudo apt update && sudo apt install программа Репозитории Ubuntu обновляются постоянно (особенно security и updates). Если не обновлять кеш неделю и больше, можно получить устаревшие версии пакетов или даже ошибки зависимостей. Если apt install не находит пакет, возможно, кеш устарел: sudo apt update
sudo apt install программа # Повторяем установку Если вы планируете глобальное обновление (sudo apt upgrade), сначала всегда делайте apt update, иначе система может пропустить важные обновления. Если вы вручную редактировали файлы репозиториев (например, добави
Оглавление

Большинство новичков сейчас выбирает себе 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?

  1. apt update → скачивает актуальные списки пакетов из репозиториев (например, archive.ubuntu.com) и сохраняет их локально.
  2. apt install → ищет пакет в этом локальном кеше, а не в интернете.

Если кеш устарел, система не знает о новых пакетах или их версиях.

2. Пример: почему пакет не находится?

Допустим:

  • Вы установили Ubuntu месяц назад и никогда не делали apt update.
  • Пакет neofetch добавили в репозиторий 2 недели назад.

Если вы попробуете установить его:

sudo apt install neofetch

Вы получите ошибку:

E: Unable to locate package neofetch

Почему?

  • Ваш локальный кеш не знает о новом пакете, потому что он не обновлялся с момента установки системы.

3. Как это исправить?

Просто обновите кеш:

sudo apt update

Теперь система:

  1. Скачает свежие списки пакетов.
  2. Узнает о 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, система:

  1. Не узнаёт о новых пакетах → не может их установить (E: Unable to locate package).
  2. Не видит новых версий уже установленных пакетов → не предложит обновлений.

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) содержат:

🔹 Метаданные пакетов

  1. Имена пакетов (например, firefox, nginx).
  2. Версии (например, 1:122.0.1+build1-0ubuntu0.22.04.1).
  3. Архитектура (amd64, arm64, i386).
  4. Описание (что делает пакет).

🔹 Зависимости (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. Как это работает при установке?

  1. Вы вводите apt install firefox.
  2. APT ищет пакет в локальном кеше (/var/lib/apt/lists/).
  3. Находит запись с:
    Именем пакета.
    Версией.
    Ссылкой на .deb-файл в репозитории.
  4. Скачивает только этот .deb-файл из интернета (например, с archive.ubuntu.com).
  5. Устанавливает его в систему.

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 с исправлением уязвимости.

Что произойдёт?

  1. Вы выполняете:bashCopysudo apt upgrade
  2. Система не знает о новых версиях, потому что локальный кеш устарел.
  3. Результат:
    Ваш 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 — плохая идея?

  1. Пропускает обновления безопасности (например, openssl, linux-image).
  2. Не видит новых версий программ (firefox, nginx и др.).
  3. Может оставить систему уязвимой к эксплойтам.

Как правильно?

sudo apt update && sudo apt upgrade -y

Запомните:
apt update = "узнать, какие есть обновления".
apt upgrade = "установить их".
Без первого шага второй
бесполезен!

Теперь вы понимаете, почему apt update критически важен. Всегда делайте его перед upgrade! 🔐