LinuxСредняя

Package not found в Linux: как исправить ошибку менеджера пакетов

Статья объясняет, почему система не находит запрашиваемый пакет, и предоставляет практические решения для основных дистрибутивов Linux. Вы научитесь проверять репозитории, обновлять кэш и вручную добавлять источники пакетов.

Обновлено 15 февраля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 22.04+Debian 11+CentOS 7/8Fedora 35+Arch Linux

Что означает ошибка "Package not found"

Ошибка "Package not found" (или её варианты: E: Unable to locate package, No package <name> available., Error: Nothing provides <name>) — это сообщение от менеджера пакетов вашего дистрибутива Linux. Оно означает, что система не обнаружила запрошенный вами пакет ни в одном из активных и настроенных репозиториев.

Ошибка появляется при выполнении команд установки, таких как:

sudo apt install nginx
sudo yum install httpd
sudo pacman -S vim

Система проверяет локальный кэш метаданных (списки доступных пакетов) и, не найдя указанное имя, прерывает операцию.

Причины возникновения

Ошибка возникает не из-за проблем с сетью или диском, а из-за несоответствия между вашим запросом и конфигурацией источников пакетов. Основные причины:

  1. Опечатка в имени пакета. Самая частая причина. Имена пакетов чувствительны к регистру и точному написанию (например, postgresql vs postgresql-client).
  2. Устаревший локальный кэш. Система не обновляла список доступных пакетов со времени последней установки. Новые пакеты в репозиториях ей неизвестны.
  3. Неактивированный или отсутствующий репозиторий. Пакет существует, но находится в репозитории, который либо не добавлен в конфигурацию (sources.list), либо добавлен, но закомментирован (отключён).
  4. Пакет удалён из репозиториев. Пакет устарел, был заменён или перемещён в архив (например, oldlibs в Debian).
  5. Проблема с GPG-ключом репозитория. Некорректный или отсутствующий ключ безопасности может привести к тому, что менеджер пакетов игнорирует весь репозиторий.
  6. Несоответствие архитектуры. Пакет собран для другой архитектуры (например, i386), а у вас активирована только amd64.
  7. Использование устаревшего менеджера пакетов. Например, попытка установить пакет из репозитория EPEL в CentOS 8, который перешёл на dnf и требует отдельной настройки.

💡 Совет: Прежде чем искать сложные причины, всегда сначала выполните обновление кэша (sudo apt update и аналоги). Это решает до 50% таких проблем.

Способы решения

Способ 1: Обновите кэш пакетов и проверьте имя

Это базовая и самая эффективная диагностика.

  1. Обновите метаданные. Выполните команду обновления для вашего менеджера пакетов.
    • Debian/Ubuntu (apt):
      sudo apt update
      
    • RHEL/CentOS 7 (yum):
      sudo yum makecache
      
    • RHEL/CentOS 8+/Fedora (dnf):
      sudo dnf makecache
      
    • Arch Linux (pacman):
      sudo pacman -Sy
      

    Обратите внимание на вывод команды. Если есть ошибки "Failed to fetch" или "Cannot retrieve repository metadata", проблема с сетевым подключением или доступом к репозиторию.
  2. Поищите пакет по части имени. Убедитесь, что имя пакета введено верно.
    apt search nginx  # Для apt
    yum search nginx  # Для yum/dnf
    pacman -Ss nginx  # Для pacman
    

    В результатах поиска вы увидите точное имя пакета и его краткое описание.
  3. Попробуйте установить снова.
    sudo apt install nginx
    

Способ 2: Проверьте и настройте репозитории

Если обновление кэша прошло успешно, но пакет всё равно не находится, проблема в конфигурации репозиториев.

  1. Найдите конфигурационные файлы.
    • apt (Debian/Ubuntu): Основной файл — /etc/apt/sources.list. Также проверьте каталог /etc/apt/sources.list.d/ на наличие отдельных файлов .list.
    • yum/dnf (RHEL/CentOS/Fedora): Каталог /etc/yum.repos.d/. Файлы с расширением .repo.
    • pacman (Arch): Основной файл — /etc/pacman.conf. Также проверьте /etc/pacman.d/mirrorlist на наличие актуальных зеркал.
  2. Убедитесь, что нужный репозиторий активен. Откройте файл в текстовом редакторе (например, sudo nano /etc/apt/sources.list). Строки, начинающиеся с #, являются закомментированными (неактивными). Убедите, что строка с репозиторием, содержащим ваш пакет, не имеет # в начале.
    Пример для Ubuntu (должен быть раскомментирован universe):
    # deb http://archive.ubuntu.com/ubuntu/ jammy universe
    deb http://archive.ubuntu.com/ubuntu/ jammy universe restricted main multiverse
    
  3. Для RHEL/CentOS/Fedora: Убедитесь, что в файле .repo в разделе [repo_name] стоит enabled=1. Если enabled=0, репозиторий отключён.
  4. После изменений снова выполните sudo apt update (или аналог) и попробуйте установку.

Способ 3: Добавьте недостающий репозиторий вручную

Если вы выяснили, что пакет находится в репозитории, которого нет в вашей системе (например, universe в Ubuntu, epel в CentOS), его нужно добавить.

  • Ubuntu/Debian (добавление universe/multiverse):
    sudo add-apt-repository universe
    sudo add-apt-repository multiverse
    sudo apt update
    

    ⚠️ Важно: Команда add-apt-repository может быть отсутствовать. Установите её: sudo apt install software-properties-common.

  • CentOS 7 (добавление EPEL):
    sudo yum install epel-release
    sudo yum update
    
  • CentOS 8+/Rocky/AlmaLinux (добавление EPEL):
    sudo dnf install epel-release
    sudo dnf update
    
  • Fedora: Большинство репозиториев активны по умолчанию. Для RPM Fusion (мультимедиа/не-свободное ПО):
    sudo dnf install rpmfusion-free-release rpmfusion-nonfree-release
    sudo dnf update
    
  • Arch Linux: Убедитесь, что в /etc/pacman.conf раскомментированы репозитории [core], [extra] и [community]. Для AUR (неофициальные пакеты) потребуется использовать yay или paru.

Способ 4: Проверьте и установите GPG-ключи

Если при apt update вы видите ошибки The following signatures couldn't be verified because the public key is not available: NO_PUBKEY <KEYID>, менеджер пакетов не доверяет репозиторию.

  1. Импортируйте недостающий ключ. Замените <KEYID> на длинный hex-идентификатор из ошибки.
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <KEYID>
    

    Для yum/dnf ключи обычно лежат в /etc/pki/rpm-gpg/. Их можно импортировать так:
    sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-*
    
  2. Обновите кэш снова. sudo apt update. Ошибки с ключами должны исчезнуть.

Способ 5: Установите пакет вручную (временное решение)

Если пакет срочно нужен, а репозиторий настроить нет времени, можно скачать .deb или .rpm файл вручную и установить его. Это не рекомендуется для системных пакетов из-за отсутствия автоматических обновлений и разрешения зависимостей.

  • Debian/Ubuntu (.deb):
    # Скачайте файл с официального сайта или репозитория
    wget http://ftp.us.debian.org/debian/pool/main/c/curl/curl_7.88.1-10_amd64.deb
    # Установите
    sudo dpkg -i curl_7.88.1-10_amd64.deb
    # Если есть неразрешённые зависимости, выполните
    sudo apt --fix-broken install
    
  • RHEL/CentOS/Fedora (.rpm):
    wget https://download-ib01.fedoraproject.org/pub/fedora/linux/releases/38/Everything/x86_64/os/Packages/c/curl-7.88.1-10.fc38.x86_64.rpm
    sudo rpm -i curl-7.88.1-10.fc38.x86_64.rpm
    # Для автоматического разрешения зависимостей лучше использовать yum/dnf
    sudo yum localinstall curl-*.rpm
    # или
    sudo dnf install ./curl-*.rpm
    

Профилактика

Чтобы избежать ошибки "Package not found" в будущем:

  1. Регулярно обновляйте кэш пакетов. Добавьте sudo apt update (или аналог) в свой регулярный скрипт обновления системы.
  2. Перед установкой ищите пакет. Используйте apt search, yum search или pacman -Ss для проверки точного имени и доступности.
  3. Не отключайте стандартные репозитории. Основа системы (main, core, extra) должна быть всегда активна. Отключайте только ненужные партнёрские или сторонние репозитории.
  4. При добавлении сторонних репозиториев (PPA, RPM Fusion) всегда импортируйте их GPG-ключи. Это гарантирует, что система будет им доверять.
  5. Используйте стабильные дистрибутивы. Rolling-release дистрибутивы (Arch) могут временно не иметь пакета из-за сборки. В стабильных (Ubuntu LTS, Debian Stable) набор пакетов предсказуем.
  6. Проверяйте архитектуру. Если вы используете 64-битную систему (amd64/x86_64), убедитесь, что ищете пакеты для этой архитектуры. Некоторые старые пакеты могут быть доступны только для i386.

Часто задаваемые вопросы

Почему пакет есть в интернете, а apt его не находит?
Можно ли установить пакет без репозитория, только из .deb или .rpm файла?
Ошибка возникает только для одного конкретного пакета. Что делать?
После добавления репозитория ошибка осталась. Что ещё проверить?

Полезное

Определите менеджер пакетов и точное имя пакета
Обновите кэш метаданных репозиториев
Проверьте наличие и состояние репозиториев
Установите недостающие ключи GPG (если требуется)
Попробуйте установить пакет с указанием репозитория (опционально)

Эта статья помогла вам решить проблему?