Жестокость законов препятствует их соблюдению (Ш. Монтескьё).

Как составить список поддерживаемых репозиториев APT в Debian 13 Trixie


Как составить список поддерживаемых репозиториев APT в Debian 13 Trixie

APT (Advanced Package Tool) устанавливает и обновляет программное обеспечение из репозиториев пакетов. В Debian 13 (Trixie) эти программные источники определены в двух форматах: традиционные однострочные файлы .list и более новые файлы deb822 .sources. При новой установке Trixie по умолчанию используется формат deb822.

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

Большинство шагов также применимы к Ubuntu, Linux Mint и другим дистрибутивам на базе Debian, хотя имена файлов по умолчанию отличаются. Это руководство охватывает только репозитории APT, а не удаленные устройства Flatpak, каналы Snap или реестры контейнеров.

Быстрый ответ

Чтобы просмотреть включенные репозитории APT в Debian 13, 12 и более ранних версиях, выполните команду:

apt-get indextargets --format '$(REPO_URI) $(RELEASE) $(COMPONENT)' 'Created-By: Packages' | sort -u

 

Для этого не нужны права суперпользователя. Команда выводит по одной строке для каждого включенного репозитория, пакета и компонента.

Пример вывода с рабочего стола Debian 13:

https://deb.debian.org/debian/ trixie contrib
https://deb.debian.org/debian/ trixie main
https://deb.debian.org/debian/ trixie non-free
https://deb.debian.org/debian/ trixie non-free-firmware
https://deb.debian.org/debian/ trixie-updates main
https://dl.google.com/linux/chrome-stable/deb/ stable main
https://download.docker.com/linux/debian/ trixie stable
https://packages.microsoft.com/repos/edge-beta/ stable main
https://repo.protonvpn.com/debian/ stable main
https://security.debian.org/debian-security/ trixie-security main
https://security.debian.org/debian-security/ trixie-security non-free-firmware

 

Команда считывает проанализированную конфигурацию APT, поэтому она работает как с файлами .list, так и с файлами .sources. В оставшейся части этого руководства мы расскажем о других методах, о том, как читать исходные файлы и что делать, если что-то выглядит неправильно.

Команды, для которых требуются права суперпользователя: sudo apt update и sudo apt modernize-sources. Все остальное выполняется от имени обычного пользователя.

 

1. Список включенных репозиториев с помощью APT

Чтение файлов показывает, что записано. APT также может сообщить вам, что он загрузил, и одинаково обрабатывает оба формата файлов.

Используйте apt-get indextargets

команду apt-get indextargets — это самый простой способ вывести список включенных репозиториев в Debian и его производных, таких как Ubuntu.

apt-get indextargets --format '$(REPO_URI) $(RELEASE) $(COMPONENT)' 'Created-By: Packages' | sort -u

 

Здесь:

  • Created-By: Packages ограничивает вывод индексами бинарных (deb) пакетов. Без фильтра в выводе также будут записи для Contents и Translations.
  • sort -u удаляет дубликаты, которые появляются, когда репозиторий поддерживает несколько архитектур.
  • Чтобы вместо этого вывести список репозиториев исходных пакетов (deb-src), измените фильтр на 'Created-By: Sources'.

 

Используйте apt policy

Другой способ вывести список репозиториев в системах на базе Debian:

apt policy

 

При запуске без указания имени пакета выводит список источников пакетов, которые в настоящее время использует APT, с указанием их приоритета. Это современная форма apt-cache policy, и обе они работают. Запись выглядит следующим образом:

Package files:
 100 /var/lib/dpkg/status
     release a=now
.
.
.
 500 https://security.debian.org/debian-security trixie-security/non-free-firmware amd64 Packages
     release v=13,o=Debian,a=stable-security,n=trixie-security,l=Debian-Security,c=non-free-firmware,b=amd64
     origin security.debian.org
 500 https://security.debian.org/debian-security trixie-security/main amd64 Packages
     release v=13,o=Debian,a=stable-security,n=trixie-security,l=Debian-Security,c=main,b=amd64
     origin security.debian.org
 500 https://deb.debian.org/debian trixie-updates/main amd64 Packages
     release v=13-updates,o=Debian,a=stable-updates,n=trixie-updates,l=Debian,c=main,b=amd64
     origin deb.debian.org
 500 https://deb.debian.org/debian trixie/non-free-firmware amd64 Packages
     release v=13.7,o=Debian,a=stable,n=trixie,l=Debian,c=non-free-firmware,b=amd64
     origin deb.debian.org
 500 https://deb.debian.org/debian trixie/non-free amd64 Packages
     release v=13.7,o=Debian,a=stable,n=trixie,l=Debian,c=non-free,b=amd64
     origin deb.debian.org
 500 https://deb.debian.org/debian trixie/contrib amd64 Packages
     release v=13.7,o=Debian,a=stable,n=trixie,l=Debian,c=contrib,b=amd64
     origin deb.debian.org
 500 https://deb.debian.org/debian trixie/main amd64 Packages
     release v=13.7,o=Debian,a=stable,n=trixie,l=Debian,c=main,b=amd64
     origin deb.debian.org
Pinned packages:

 

Одно предостережение: apt policy отражает индексы пакетов, загруженные APT. Если вы только что включили или отключили источник, сначала выполните sudo apt update команду, иначе результат может не соответствовать вашей конфигурации. apt-get indextargets считывает конфигурацию напрямую и не имеет этого ограничения.

Примечание: обе команды показывают, что источник включен. Они не показывают, доступен ли его сервер и действительны ли его подписи. Об этом рассказывается в разделе 4.

 

2. Найдите файлы конфигурации APT Source

APT считывает список репозиториев из следующих мест:

  • /etc/apt/sources.list
  • /etc/apt/sources.list.d/*.list
  • /etc/apt/sources.list.d/*.sources

 

Файлы в sources.list.d с любым другим расширением игнорируются. APT также игнорирует имена файлов, содержащие символы, отличные от букв, цифр, знаков подчеркивания, дефисов и точек.

 

Значения по умолчанию для Debian 13

При новой установке Trixie основные репозитории Debian находятся в /etc/apt/sources.list.d/debian.sources. Файл /etc/apt/sources.list обычно содержит только комментарии или отсутствует.

Если вы выполнили обновление с более ранней версии, у вас может быть традиционный /etc/apt/sources.list. Оба формата работают параллельно.

Чтобы преобразовать устаревшие .list файлы в deb822, выполните следующую команду:

sudo apt modernize-sources

 

Команда выводит список файлов, которые она преобразует, и запрашивает подтверждение, прежде чем что-либо изменить. Она записывает новый .sources файл и создает резервную копию исходного, например как /etc/apt/sources.list.bak.

 

Показать строки без комментариев

grep -HvE '^[[:space:]]*(#|$)' 
 /etc/apt/sources.list 
 /etc/apt/sources.list.d/*.list 
 /etc/apt/sources.list.d/*.sources 2>/dev/null

 

Эта команда выводит все строки, которые не являются пустыми или комментариями, с указанием имени файла. Он показывает, что настроено, но не может сказать, что включено в файлах deb822, потому что в отключенной секции все равно есть строки без комментариев. Используйте правила из раздела 3 или команды APT из раздела 1.

 

3. Интерпретация включенных и отключенных записей

Традиционные файлы .list

Активная запись начинается с deb или deb-src. Строка, начинающаяся с #, отключена. Например:

deb https://deb.debian.org/debian trixie main
# deb https://example.com/debian stable main

 

Первая запись включена, вторая — нет. Записи могут содержать параметры в квадратных скобках, например архитектуру и ключ подписи:

deb [arch=amd64 signed-by=/usr/share/keyrings/example.gpg] https://example.com/debian stable main

 

Чтобы вывести только активные строки в .list файлах, выполните команду:

grep -hE '^[[:space:]]*deb(-src)?[[:space:]]' 
 /etc/apt/sources.list /etc/apt/sources.list.d/*.list 2>/dev/null

 

Это не анализирует .sources файлы и не проверяет работоспособность репозиториев.

 

Файлы Deb822 .sources

В файлах Deb822 используются именованные поля, а пустые строки разделяют разделы. Типичный раздел выглядит так:

Types: deb deb-src
URIs: https://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

 

Помните об этих правилах:

  • Раздел включен по умолчанию. Он отключается только в том случае, если в нем есть поле Enabled, для которого задано ложное значение, например Enabled: no. Имена полей и значения не чувствительны к регистру, поэтому enabled: No также отключает раздел.
  • Types может содержать как deb , так и deb-src. Исходные репозитории включены, если в них есть deb-src.
  • URIs, Suites и Components могут содержать несколько значений, разделенных пробелами, поэтому в одном разделе можно указать множество репозиториев.
  • Signed-Byможет быть путем к файлу связки ключей или встроенным блоком ключей.
  • В файле может быть несколько разделов, и каждый из них включается или отключается независимо от других.

 

Чтобы распечатать только разрешенные строфы из ваших .sources файлов, запустите:

for f in /etc/apt/sources.list.d/*.sources; do
    [ -f "$f" ] || continue
    printf '### %sn' "$f"
    awk -v RS= '
        tolower($0) ~ /(^|n)types:/ &&
        tolower($0) !~ /(^|n)enabled:[ t]*(no|false|0)[ t]*(n|$)/ {
            print $0 "n"
        }' "$f"
done

 

Фильтр выводит каждую строку, в которой есть поле Types и нет ложного Enabled значения. Это удобно для чтения, но более надежным решением остаются команды APT из раздела 1.

Чтобы найти явно отключенные разделы, выполните команду:

grep -n -i 'Enabled:' /etc/apt/sources.list.d/*.sources

 

Проверьте окружающий раздел, чтобы узнать, к какому репозиторию относится каждый результат.

 

4. Проверьте работу репозиториев

Выполните команду:

sudo apt update

 

APT пытается обновить индексы пакетов из всех включенных источников. Проверьте вывод на наличие ошибок, таких как:

  • 404 Not Found: путь к репозиторию или пакет могут быть указаны неверно или репозиторий может быть недоступен.
  • NO_PUBKEY: APT не может найти открытый ключ, необходимый для проверки репозитория.
  • The repository is not signed: APT не может проверить метаданные репозитория, как того требует система.
  • Ошибки подключения или DNS: APT не может связаться с сервером репозитория.

 

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

  • Target Packages ... is configured multiple times: один и тот же репозиторий указан в нескольких файлах. Удалите дубликат.
  • Skipping acquire of configured file ... doesn't support architecture: репозиторий не предоставляет пакеты для одной из настроенных вами архитектур.
  • Ignoring file ... invalid filename extension: APT пропустил файл в sources.list.d из-за его названия.

 

«Чистое» обновление означает, что APT может обновить обработанные индексы. Это не гарантирует доступность конкретного пакета.

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

 

5. Устранение неполадок с пакетом, для которого нет репозитория

Используйте apt-cache policy для просмотра того, какие версии пакета может установить APT и откуда они берутся:

apt-cache policy firefox-esr

 

Если указан только один источник, значит, APT показывает локальную базу данных пакетов, а не репозиторий:

100 /var/lib/dpkg/status

 

Это не означает автоматически, что репозиторий отсутствует или поврежден. Это означает, что в текущих индексах APT нет версии этого пакета, поддерживаемой репозиторием.

Распространенные причины:

  • пакет был установлен из автономного .deb файла, и репозиторий не был добавлен.
  • Пакет добавил собственный исходный файл во время установки, но позже этот файл был удален, отключен или переименован.
  • Запись об исходном коде существует, но закомментирована, содержит Enabled: no или указывает на набор, которого больше не существует.
  • Последняя apt update попытка для этого репозитория завершилась неудачей, поэтому его индекс так и не был загружен.
  • Пакет был получен из репозитория, который был удален или отключен, например, при обновлении релиза.

 

Чтобы найти все установленные пакеты, которые в настоящее время не предоставляются ни одним репозиторием, выполните команду:

apt list --installed 2>/dev/null | grep '[installed,local]'

 

Пакеты с тегами local не имеют версии, поддерживаемой репозиторием, в текущих индексах APT.

 

Пример: бета-версия Microsoft Edge

Предположим, что бета-версия Microsoft Edge установлена, но apt-cache policy показывает только локальную версию:

microsoft-edge-beta:
  Installed: 145.0.3800.13-1
  Candidate: 145.0.3800.13-1
  Version table:
 *** 145.0.3800.13-1 100
        100 /var/lib/dpkg/status

 

Пакеты сторонних разработчиков, такие как Edge и Chrome, часто устанавливаются из загруженного .deb. Многие из них добавляют собственный источник APT во время установки, хотя поведение зависит от поставщика и версии. Если этот исходный файл отсутствует или отключен, вы увидите именно такой результат.

Шаг 1. Найдите существующую запись об источнике.

grep -RniE 'microsoft|edge' 
 /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null

 

Внимательно изучите результаты. Имя файла, содержащее edge, не означает, что в нем есть активный репозиторий Edge. Например, в файле может быть только эта закомментированная строка:

#deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main

 

Эта запись отключена и указывает на Google Chrome, а не на Microsoft Edge.

Шаг 2. Проверьте репозиторий и ключ подписи.

Если активной записи Edge Beta нет, перед ее добавлением ознакомьтесь с текущими официальными инструкциями Microsoft по установке на Linux. Проверьте точный URL репозитория, пакет, архитектуру и инструкции по использованию ключа подписи.

Если существующая запись ссылается на отсутствующий файл связки ключей, исправьте путь или установите ключ в соответствии с инструкциями. Не угадывайте имя файла ключа и не пропускайте проверку подписи.

Шаг 3. Обновите APT и проверьте еще раз.

sudo apt update
apt-cache policy microsoft-edge-beta

 

Просмотрите результаты обновления на предмет ошибок в репозитории и сигнатурах, затем проверьте, указана ли версия из репозитория. Если отображается только /var/lib/dpkg/status, значит, в APT по-прежнему нет репозитория для этого пакета.

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

 

6. Краткое руководство

ЗадачаКоманда
Список включенных репозиториев (в любом формате)apt-get indextargets --format '$(REPO_URI) $(RELEASE) $(COMPONENT)' 'Created-By: Packages' | sort -u
Список всех источников пакетов, загруженных APTapt policy
Показать строки без комментариев во всех исходных файлахgrep -HvE '^[[:space:]]*(#|$)' /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources 2>/dev/null
Показать активные строки только в .list файлахgrep -hE '^[[:space:]]*deb(-src)?[[:space:]]' /etc/apt/sources.list /etc/apt/sources.list.d/*.list 2>/dev/null
Найти отключенные строки deb822grep -n -i 'Enabled:' /etc/apt/sources.list.d/*.sources
Преобразовать устаревшие .list файлы в deb822sudo apt modernize-sources
Проверить доступ и обновить индексыsudo apt update
Проверьте, откуда взят пакетapt-cache policy PACKAGE_NAME
Найдите установленные пакеты, для которых нет репозиторияapt list --installed 2>/dev/null | grep '[installed,local]'

 

Заключение

Чтобы вывести список включенных репозиториев в Debian 13, начните с apt-get indextargets или apt policy. Оба варианта покажут, что на самом деле загрузил APT из ваших файлов .list и .sources, что надежнее, чем самостоятельное чтение файлов. Используйте /etc/apt/sources.list и файлы в /etc/apt/sources.list.d/, чтобы найти, где определен каждый источник пакета, и примените правильные правила включения для каждого формата.

Затем запустите sudo apt update и изучите ошибки и предупреждения. Если для определенного пакета нет версии из репозитория, проверьте его исходный файл, ключ подписи и то, был ли он установлен из автономного .deb. Если у вас все еще есть устаревшие .list файлы, попробуйте запустить sudo apt modernize-sources , чтобы список репозиториев APT был в едином формате.

Редактор: AndreyEx

Если статья понравилась, поделитесь ей в социальных сетях

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Это может быть вам интересно


Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала