Управление сторонними APT-репозиториями в Debian с помощью extrepo

extrepo — это официальный инструмент Debian для управления сторонними APT-репозиториями. Он автоматически добавляет GPG-ключи и создаёт файлы репозиториев в современном формате DEB822, избавляя вас от ручного скачивания ключей и настройки источников.

В этом руководстве я покажу, как использовать extrepo для поиска, добавления, отключения и обновления сторонних репозиториев на Debian 13, 12 и 11.

⚠️ Важные особенности:

  • extrepo работает только с репозиториями, внесёнными в официальный каталог Debian (поддерживаются популярные: Brave, Google Chrome, Microsoft Edge, Opera, Slack и др.)
  • Если репозитория нет в каталоге, используйте ручную настройку (DEB822)
  • На Debian 13 может возникнуть ошибка SHA-1 для старых ключей (см. проблему 8.3)

Оглавление

Предварительные требования

Перед использованием extrepo убедитесь, что:

  • Вы имеете права sudo (администратора)

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo — выполняет команду от имени суперпользователя; whoami — показывает имя текущего пользователя.

Ожидаемый вывод в терминале:

root

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.


Установка extrepo

Для Debian 13 и Debian 12

sudo apt update
sudo apt install -y extrepo extrepo-offline-data

Что делает: Устанавливает extrepo и пакет с офлайн-каталогом репозиториев.

Для Debian 11 (Bullseye)

sudo apt update
sudo apt install -y extrepo

Что делает: Устанавливает extrepo (пакет extrepo-offline-data недоступен для Debian 11).

Проверка установки

dpkg -l extrepo | grep '^ii'

Ожидаемый вывод: ii extrepo 0.14 all External repository manager


Поиск репозиториев в каталоге extrepo

Список всех доступных репозиториев

extrepo search

Поиск конкретного репозитория

extrepo search '^brave_release$'

Что делает: Ищет репозиторий с точным именем brave_release.

Ожидаемый вывод: Информация о репозитории Brave Browser.

Поиск по ключевому слову

extrepo search "chrome|edge|brave"

Что делает: Ищет репозитории, содержащие любое из слов.

Офлайн-поиск (только Debian 13 и 12)

extrepo --offlinedata search '^brave_release$'

Что делает: Использует локальный каталог (не скачивает из сети).


Добавление репозитория через extrepo

Шаг 1: Включите репозиторий

sudo extrepo enable brave_release

Что делает: Создаёт файл /etc/apt/sources.list.d/extrepo_brave_release.sources и скачивает GPG-ключ.

Шаг 2: Проверьте созданный файл

cat /etc/apt/sources.list.d/extrepo_brave_release.sources

Ожидаемый вывод:

Architectures: amd64
Types: deb
Suites: stable
Components: main
Uris: https://brave-browser-apt-release.s3.brave.com
Signed-By: /var/lib/extrepo/keys/brave_release.asc

Шаг 3: Обновите список пакетов

sudo apt update

Шаг 4: Проверьте, что пакет из репозитория доступен

apt-cache policy brave-browser

Ожидаемый вывод: Должна быть строка с URL репозитория.


Включение политик contrib и non-free

Некоторые репозитории (Google Chrome, Microsoft Edge, Slack) помечены как non-free. По умолчанию extrepo разрешает только main.

Шаг 1: Отредактируйте конфигурационный файл

sudo nano /etc/extrepo/config.yaml

Шаг 2: Раскомментируйте строки

Найдите блок:

enabled_policies:
- main
# - contrib
# - non-free

Измените на:

enabled_policies:
- main
- contrib
- non-free

Быстрый способ через sed:

sudo sed -i 's/^# - contrib/- contrib/' /etc/extrepo/config.yaml
sudo sed -i 's/^# - non-free/- non-free/' /etc/extrepo/config.yaml

Шаг 3: Проверьте изменения

cat /etc/extrepo/config.yaml

Управление репозиториями

Отключение репозитория

sudo extrepo disable brave_release

Что делает: Добавляет строку Enabled: no в файл репозитория (APT игнорирует его).

Повторное включение

sudo extrepo enable brave_release

Обновление репозитория (перезапись ключа и источника)

sudo extrepo update brave_release

Что делает: Перезаписывает файл .sources и ключ из актуальных данных каталога.

Обновление всех репозиториев extrepo (Debian 13)

sudo extrepo update

⚠️ Для Debian 12 и 11 нужно указывать имя репозитория.


Решение типичных проблем

8.1 Ошибка: Policy error при включении репозитория

Симптом: None of the license inclusion policies in google_chrome were enabled

Причина: Репозиторий помечен как non-free, а политика не включена.

Пошаговое решение:

Включите contrib и non-free в /etc/extrepo/config.yaml (см. раздел «Включение политик»).


8.2 Ошибка: Repository name not found

Симптом: Repository 'some-name' does not exist

Причина: Репозиторий отсутствует в каталоге extrepo.

Пошаговое решение:

Шаг 1: Уточните точное имя через поиск:

extrepo search '^keyword'

Шаг 2: Если репозиторий не найден — используйте ручную настройку DEB822.


8.3 Ошибка: SHA-1 key error на Debian 13

Симптом: При sudo apt update ошибка:

Policy rejected non-revocation signature (PositiveCertification) requiring second pre-image resistance
SHA1 is not considered secure since 2026-02-01T00:00:00Z

Причина: В каталоге extrepo для некоторых репозиториев (например, Microsoft Edge) всё ещё используется ключ с SHA-1.

Пошаговое решение:

Шаг 1: Скачайте актуальный ключ вручную:

sudo wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /var/lib/extrepo/keys/edge.asc > /dev/null

Шаг 2: Обновите список пакетов:

sudo apt update

⚠️ Важно: Команда sudo extrepo update edge восстановит старый ключ из каталога. Повторяйте ручную замену при необходимости или переходите на ручную настройку репозитория.


8.4 Ошибка: Duplicate source / Signed-By conflict

Симптом: Conflicting values set for option Signed-By

Причина: Установщик программы создал свой .list-файл, который конфликтует с файлом от extrepo.

Пошаговое решение:

Шаг 1: Найдите конфликтующие файлы:

grep -R "dl.google.com/linux/chrome/deb" /etc/apt/sources.list.d/

Шаг 2: Удалите дублирующийся файл (созданный установщиком), оставив только файл от extrepo:

sudo rm -f /etc/apt/sources.list.d/google-chrome*.list
sudo apt update

8.5 Пакет не появляется после добавления репозитория

Симптом: Репозиторий включён, но apt search не находит пакет.

Причина: Имя пакета не совпадает с именем репозитория.

Пошаговое решение:

Шаг 1: Поищите возможные имена пакетов:

apt search keyword

Шаг 2: Проверьте, что репозиторий вообще виден:

apt-cache policy | grep -A 5 "URIs:"

Шаг 3: Убедитесь, что sudo apt update прошёл без ошибок.


Использование Tor и зеркал (Debian 13)

Использование Tor

sudo apt install -y apt-transport-tor
sudo extrepo --tor auto enable brave_release

Режимы --tor:

  • onion — использовать .onion URL (если есть)
  • tunnel — добавить tor+ перед URL
  • auto.onion если есть, иначе tunnel
  • if-onion.onion если есть, иначе обычный URL

Использование зеркала

sudo extrepo --mirror https://mirror.example.com/brave enable brave_release

Удаление extrepo и репозиториев

Удаление одного репозитория

sudo extrepo disable brave_release
sudo rm -f /etc/apt/sources.list.d/extrepo_brave_release.sources
sudo rm -f /var/lib/extrepo/keys/brave_release.asc
sudo apt update

Полное удаление extrepo

sudo rm -f /etc/apt/sources.list.d/extrepo_*.sources
sudo apt update
sudo apt remove --purge extrepo extrepo-offline-data
sudo rm -rf /var/lib/extrepo/

Чек-лист: что проверить после настройки

  • [ ] extrepo установлен: dpkg -l extrepoii
  • [ ] Политики contrib и non-free включены (если нужны)
  • [ ] Репозиторий добавлен: ls /etc/apt/sources.list.d/extrepo_*.sources
  • [ ] apt update проходит без ошибок
  • [ ] Пакет из репозитория виден: apt-cache policy имя-пакета → URL репозитория
  • [ ] Для Debian 13: нет SHA-1 ошибок при apt update

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

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

Вопрос: Как узнать, какие репозитории поддерживает extrepo?
Ответ: extrepo search выводит полный список. На Debian 13 их сотни.

Вопрос: Безопасно ли использовать extrepo?
Ответ: Да, extrepo — официальный инструмент Debian. Ключи репозиторий берутся из проверенного каталога.

Вопрос: Почему на Debian 13 ошибка SHA-1?
Ответ: Debian 13 ужесточил требования к GPG-ключам. Некоторые старые ключи в каталоге extrepo не прошли проверку. Исправляется ручной заменой ключа (см. проблему 8.3).

Вопрос: Можно ли использовать extrepo для своих собственных репозиториев?
Ответ: Нет, только для репозиториев, внесённых в официальный каталог Debian.


Заключение

Вы научились управлять сторонними APT-репозиториями в Debian с помощью extrepo. Этот инструмент упрощает добавление и обслуживание репозиториев, но требует внимания к политикам (contrib, non-free) и иногда к ручной замене ключей (Debian 13).

Что дальше?