Предупреждение Target Packages (main/binary-amd64/Packages) is configured multiple times появляется при выполнении apt update, когда один и тот же репозиторий (та же ветка, та же архитектура) прописан в системе дважды — например, одновременно в /etc/apt/sources.list и в отдельном файле внутри каталога /etc/apt/sources.list.d/. Ошибка не критична: пакеты продолжат устанавливаться, но apt тратит время на повторную обработку одних и тех же списков, а само предупреждение захламляет вывод и мешает заметить действительно важные сообщения.
Чаще всего проблема возникает после ручного добавления PPA или стороннего репозитория: пользователь вписывает строку в основной файл sources.list, а затем установщик программы или команда add-apt-repository создаёт отдельный файл с той же записью. Ниже разберём, как найти дубликаты и безопасно убрать лишний источник.
Что означает это предупреждение
Менеджер пакетов apt собирает список источников из двух мест: основного файла /etc/apt/sources.list и всех файлов с расширением .list в каталоге /etc/apt/sources.list.d/. Если в двух местах встречается одинаковая комбинация «репозиторий + компонент + архитектура», apt выводит предупреждение вида:
W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:3 and /etc/apt/sources.list.d/docker.list:1
В сообщении прямо указаны оба файла и номера строк, где обнаружен дубль. Это ключ к решению: не нужно искать вслепую, достаточно открыть указанные файлы и сравнить записи.
Важно понимать: предупреждение относится к конкретной цели — main/binary-amd64. Это значит, что дублируется именно раздел main для 64-битной архитектуры. Тот же репозиторий, но с другим компонентом (например, contrib или universe) предупреждения не вызовет.
Предупреждение «configured multiple times» — это не ошибка, а сигнал о дублирующейся записи репозитория. В сообщении всегда указаны оба файла, где найден дубль.
Типичные причины дублирования репозиториев
Дубли появляются не сами по себе — у каждого есть конкретная история. Понимание причины помогает не только устранить предупреждение, но и не создать его снова.
- 📋 Репозиторий добавлен вручную в
sources.list, а затем повторно черезadd-apt-repository, который создал отдельный файл - 📦 Установщик программы (например, Docker, Google Chrome, VS Code) добавил свой .list-файл, а аналогичная строка уже была вписана вручную
- 🔁 Повторный запуск скрипта установки, который не проверяет существующие записи
- 🧩 Копия файла репозитория с другим именем (например,
docker.listиdocker_backup.list) в одном каталоге - 💾 Восстановление старого
sources.listиз резервной копии поверх уже настроенной системы
Отдельный частый случай — команда add-apt-repository в новых версиях Ubuntu может записывать источник в формате deb822 (файл .sources), в то время как старая запись осталась в классическом формате. Apt видит обе и ругается на дубль.
Как найти дублирующиеся записи
Прежде чем что-то удалять, нужно увидеть полную картину. Самый быстрый способ — поиск по всем файлам источников одной командой:
grep -r --include=".list" --include=".sources" -n "имя-репозитория" /etc/apt/sources.list /etc/apt/sources.list.d/
Вместо имя-репозитория подставьте домен или название из текста предупреждения — например, download.docker.com или archive.ubuntu.com. Флаг -n покажет номера строк, что удобно для последующего редактирования.
Если хочется посмотреть всё сразу, выведите содержимое всех источников:
cat /etc/apt/sources.list /etc/apt/sources.list.d/*.list
Обратите внимание на строки, которые совпадают по адресу репозитория, кодовому имени дистрибутива (jammy, bookworm и т.п.) и компоненту (main). Совпадение всех трёх элементов — это и есть дубль.
Пошаговое исправление
Задача — оставить одну запись из двух. Какую именно удалить, зависит от удобства сопровождения: файлы в sources.list.d/ проще удалять целиком при удалении программы, поэтому обычно логичнее оставить запись там и убрать её из основного sources.list.
Откройте файл, указанный в предупреждении, в редакторе с правами root:
sudo nano /etc/apt/sources.list
Найдите строку с дублирующимся репозиторием и либо удалите её, либо закомментируйте символом # в начале строки. Комментирование предпочтительнее, если вы не уверены — запись легко вернуть. Сохраните файл и обновите индексы:
sudo apt update
Если предупреждение исчезло — дубль устранён. Если осталось, значит есть ещё одна пара одинаковых записей: повторите поиск из предыдущего раздела.
☑️ Устранение дубля репозитория
⚠️ Внимание: не удаляйте файлы из
sources.list.d/вслепую. Некоторые из них принадлежат установленным программам (браузеры, Docker, репозитории драйверов), и после удаления файла эти приложения перестанут получать обновления. Сначала убедитесь, что запись действительно дублируется, а не является единственной.
Особый случай: формат deb822 и файлы .sources
В свежих выпусках Ubuntu (начиная с линейки, где apt поддерживает deb822 по умолчанию) источники могут храниться в файле /etc/apt/sources.list.d/ubuntu.sources в многострочном формате с полями URIs:, Suites:, Components:. Если при этом старая строка осталась в классическом sources.list, apt видит два одинаковых источника в разных форматах.
Проверить наличие таких файлов можно командой ls /etc/apt/sources.list.d/. Если обнаружили и .list, и .sources с одинаковым содержимым, оставьте что-то одно. Для системы, которая уже перешла на deb822, разумнее убрать устаревшую строку из классического файла.
Как выглядит запись в формате deb822
Файл .sources содержит блоки вида: Types: deb / URIs: http://archive.ubuntu.com/ubuntu / Suites: jammy / Components: main / Signed-By: /usr/share/keyrings/... Один блок полностью заменяет строку вида "deb http://... jammy main".
Сравнение способов устранения дубля
| Способ | Когда применять | Обратимость |
|---|---|---|
| Комментирование строки символом # | Не уверены, какая запись лишняя | Полностью обратимо |
| Удаление строки из sources.list | Дубль точно найден, запись есть в sources.list.d | Обратимо при наличии бэкапа |
| Удаление файла из sources.list.d | Файл — копия или остался от удалённой программы | Обратимо при наличии бэкапа |
| add-apt-repository --remove | Дубль создан через PPA | Запись можно добавить заново |
Для PPA-репозиториев удобнее всего использовать штатное удаление: sudo add-apt-repository --remove ppa:имя/репозиторий. Команда аккуратно уберёт файл и не тронет остальные источники.
Перед правкой сделайте резервную копию: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak и скопируйте каталог sources.list.d целиком. Откат займёт пару секунд, если что-то пойдёт не так.
Профилактика: как не создать дубль снова
Несколько простых привычек избавят от повторного появления предупреждения. Во-первых, перед добавлением репозитория проверяйте, нет ли его уже в системе — тем же grep из раздела про поиск. Во-вторых, выбирайте один способ добавления и придерживайтесь его: либо add-apt-repository, либо ручное создание файла в sources.list.d/, но не оба сразу.
Также полезно периодически просматривать содержимое sources.list.d/ и удалять файлы программ, которые давно деинсталлированы. Установщики не всегда убирают за собой свои источники.
⚠️ Внимание: сторонние скрипты установки, запускаемые через
curl | bash, часто добавляют репозиторий без проверки существующих записей. После такой установки выполнитеapt updateи проверьте вывод на предмет предупреждений о дублях.
Часто задаваемые вопросы
Опасно ли это предупреждение? Нужно ли срочно что-то делать?
Нет, это не ошибка, а предупреждение (строка начинается с W:). Установка и обновление пакетов продолжают работать. Но дубль стоит убрать, чтобы apt не обрабатывал одни и те же списки дважды и вывод оставался чистым.
Я удалил строку, но предупреждение осталось. Почему?
Скорее всего, дубль существует более чем в двух местах, либо вы удалили не ту запись. Повторите поиск через grep -r по каталогу /etc/apt/ и проверьте также файлы с расширением .sources.
Можно ли просто игнорировать это сообщение?
Технически да — система будет работать. Но при большом количестве дублей apt update выполняется дольше, а важные предупреждения тонут в повторяющихся строках. Устранение занимает пару минут.
Чем закомментировать строку лучше, чем удалить?
Комментарий (# в начале строки) сохраняет запись в файле. Если окажется, что удалили не ту строку, достаточно убрать символ решётки. Удалённую строку при отсутствии бэкапа придётся восстанавливать по памяти или из документации репозитория.
Появится ли дубль снова после обновления программы?
Если программа обновляется через тот же репозиторий, файл которого вы оставили, — нет. Повторное появление возможно только при повторном запуске установщика, который создаёт свой .list-файл заново.