Как исправить ошибку apt “W: Target Packages … is configured multiple times”?

Вопрос или проблема

Я только что установил Ubuntu Gnome 16.04. Я указал системе сохранить мои документы – это сработало. Некоторое программное обеспечение пришлось переустановить. Теперь, когда я запускаю sudo apt-get update, я вижу следующее:

W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (main/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (main/i18n/Translation-en_GB) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (main/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11 (main/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11-icons (main/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (restricted/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (restricted/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (restricted/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (restricted/i18n/Translation-en_GB) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (restricted/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11 (restricted/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11-icons (restricted/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (multiverse/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (multiverse/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (multiverse/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (multiverse/i18n/Translation-en_GB) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (multiverse/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11 (multiverse/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11-icons (multiverse/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Репозиторий 'http://extras.ubuntu.com/ubuntu xenial Release' не имеет файла Release.
N: Данные из такого репозитория не могут быть проверены и, следовательно, их использование может быть потенциально опасным.
N: См. руководство apt-secure(8) для получения информации о создании репозитория и настройке пользователя.
W: http://dl.google.com/linux/chrome/deb/dists/stable/Release.gpg: Подпись ключом 4CCA1EAF950CEE4AB83976DCA040830F7FAC5991 использует слабый алгоритм дайджеста (SHA1)
W: http://repo.sinew.in/dists/stable/InRelease: Подпись ключом B6DA722E2E65721AF54B93966F7565879798C2FC использует слабый алгоритм дайджеста (SHA1)
E: Не удалось получить http://extras.ubuntu.com/ubuntu/dists/xenial/main/source/Sources 404 Not Found [IP: 91.189.92.152 80]
E: Не удалось получить http://extras.ubuntu.com/ubuntu/dists/xenial/main/binary-amd64/Packages 404 Not Found [IP: 91.189.92.152 80]
E: Не удалось получить http://extras.ubuntu.com/ubuntu/dists/xenial/main/binary-i386/Packages 404 Not Found [IP: 91.189.92.152 80]
E: Некоторые файлы индекса не удалось загрузить. Их игнорировали, или вместо них использовали старые версии.
W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (main/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (main/i18n/Translation-en_GB) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (main/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11 (main/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11-icons (main/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (restricted/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (restricted/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (restricted/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (restricted/i18n/Translation-en_GB) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (restricted/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11 (restricted/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11-icons (restricted/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (multiverse/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (multiverse/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Packages (multiverse/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (multiverse/i18n/Translation-en_GB) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target Translations (multiverse/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11 (multiverse/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87
W: Target DEP-11-icons (multiverse/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:33 and /etc/apt/sources.list:87

Есть ли автоматический способ исправить это?

Недавнее, актуальное решение

Я написал скрипт на Python для автоматизации этой задачи. Вы можете найти самую последнюю версию здесь.

Установка:

  1. Установите необходимые пакеты:

    sudo apt install python3-apt
    
  2. Скачайте PYZ сборку (aptsources-cleanup.pyz) с последнего релиза.

  3. Отметьте PYZ сборку как исполняемую:

    chmod a+x aptsources-cleanup.pyz
    

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

  1. Из папки загрузки PYZ сборки (см. шаг 2 выше) выполните:

    sudo ./aptsources-cleanup.pyz
    
  2. Следуйте инструкциям на экране.

Если вы хотите сообщить о проблеме, оставить комментарий или форкнуть исходный код, пожалуйста, сделайте это на GitHub.


Историческое, устаревшее решение

Это старая, более короткая и простая версия, более подходящая для цитирования:

#!/usr/bin/python3
"""
Обнаруживает и интерактивно отключает дубликаты записей источников Apt.

Использование: sudo python3 apt-remove-duplicate-source-entries.py
"""

from __future__ import print_function
import aptsources.sourceslist

EMPTY_COMPONENT_LIST = (None,)

def get_duplicates(sourceslist):
    """
    Обнаруживает и возвращает дубликаты записей источников Apt.
    """

    sentry_map = dict()
    duplicates = list()
    for se in sourceslist.list:
        if not se.invalid and not se.disabled:
            for c in (se.comps or EMPTY_COMPONENT_LIST):
                key = (se.type, se.uri, se.dist, c)
                previous_se = sentry_map.setdefault(key, se)
                if previous_se is not se:
                    duplicates.append((se, previous_se))
                    break

    return duplicates


if __name__ == '__main__':
    try:
        input = raw_input
    except NameError:
        pass

    sourceslist = aptsources.sourceslist.SourcesList(False)
    duplicates = get_duplicates(sourceslist)

    if duplicates:
        for dupe, orig in duplicates:
            print(
                'Пересекающиеся исходные записи:\n'
                '  1. {0}: {1}\n'
                '  2. {2}: {3}\n'
                'Я отключил последнюю запись.'.format(
                    orig.file, orig, dupe.file, dupe),
                end='\n\n')
            dupe.disabled = True

        print('\n{0} исходных записей были отключены:'.format(len(duplicates)),
            *[dupe for dupe, orig in duplicates], sep='\n  ', end='\n\n')
        if input('Вы хотите сохранить эти изменения? (y/N) ').upper() == 'Y':
            sourceslist.save()

    else:
        print('Дубликаты записей не найдены.')

Он не принимает параметров и работает со всеми /etc/apt/sources.list* с помощью пакета python3-apt. Строки не обязательно должны быть точными дубликатами (даже после нормализации), достаточно, если тип, URI, набор и хотя бы один компонент пересекаются.

Я не уверен, что тесты на равенство правильны во всех крайних случаях (например, различные строки «option»).

Для меня (16.04 LTS) переход в

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

Сбросьте свои репозитории, как это:

  1. ВАЖНО: Сначала убедитесь, что у вас установлено software-properties-gtk (вы можете запустить software-properties-gtk -h, чтобы убедиться, что получаете справочную информацию)
  2. sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
  3. sudo software-properties-gtk
  4. Выберите свои параметры
  5. Сохраните

Когда все заработает, вы можете удалить вашу резервную копию с помощью sudo rm -rf /etc/apt/sources.list.bak.

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

В вашем случае с правами sudo или root откройте /etc/apt/sources.list в текстовом редакторе. Удалите строку 33 или строку 87. Вы можете визуально проверить, что они дубликаты.

Если вам нравится vim…

$ sudo vim /etc/apt/sources.list
33 [Shift]+g    # перейти к строке 33
87 [Shift]+g    # перейти к строке 87, не нужен дубликат строки 33
dd              # удалить строку, на которой вы находитесь
:wq             # сохранить файл и выйти

Или, чтобы выйти, если вы ошиблись…

:q!             # выйти без сохранения изменений

Для систем на основе Ubuntu с Linux mint, перейдите в Источники программного обеспечения > Обслуживание > Удалить дубликаты пакетов

Похоже на другие ответы, НО …

Мне пришлось заглянуть в /etc/apt/sources.list.d. Два списка файлов в этом каталоге пытались ссылаться на одни и те же вещи.

Я оставил файл списка, который ссылался на большее количество вещей. Проблема решена.

Ручное редактирование /etc/apt/sources.list и удаление дублирующихся строк.

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

В Dockerfile для проекта python2 ROS и большого количества установленных apt-get пакетов до ошибки я сначала получил другую ошибку: /bin/sh: 1: python-matplotlib: не найдено, хотя это известный пакет в apt-get. Затем я переключился на python -m pip install -y matplotlib sympy, что вызвало ошибку вопроса: #13 3.422 W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list.d/ros-latest.list:1 and /etc/apt/sources.list.d/ros1-latest.list:1. На этом этапе вы можете рассмотреть возможность тестирования python2.7 -m pip install -y matplotlib sympy в соответствии с этим. Затем я вернулся к

apt-get install -y python-matplotlib python-sympy

и я также оставил эту строку отдельно от других установок apt-get.

Возможно, не все шаги необходимы, я просто не хотел исключать их, потому что могу только догадываться о причинах. Небольшая часть окончательно работающего Dockerfile:

RUN apt-get install --upgrade python-pip -y && \
    python -m pip install --upgrade pip
# Я видел, что во время установки из-за дефолта некоторые пакеты устанавливались с Python3.7:
RUN apt-get install -y MANY_PYTHON2_PACKAGES_PERHAPS_INSTALLED_WITH_PYTHON3.7_DEFAULT
# Эти пакеты, возможно, нуждаются в другой версии Python, чем предыдущие?
RUN apt-get install -y python-matplotlib python-sympy
RUN python -m pip install MANY_PYTHON2_PACKAGES_NOT_IN_APT-GET

ОБНОВЛЕНИЕ: У меня снова возникла ошибка, когда update запустился. Я просто пропустил обновление. Это сработало, потому что оно запустилось за несколько строк до этого в любом случае:

От:

RUN apt-get -o Acquire::Check-Valid-Until=false update && \
    apt-get install -y ...

к

RUN apt-get install -y ...

.

Ответ или решение

Для решения ошибки "W: Target Packages … is configured multiple times" в Ubuntu Gnome 16.04 при выполнении команды sudo apt-get update, необходимо понять причину такой ситуации и предложить методы для её устранения. Ошибка свидетельствует о существовании дублирующих строк в конфигурации репозиториев APT, что может вызвать неполадки при обновлении пакетов.

Теория

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

Пример

В приведенном вами примере, сообщения об ошибке указывают, что определенные записи в /etc/apt/sources.list повторяются на строках 33 и 87. Это создаёт конфликт, затрудняющий корректное выполнение команд обновления пакетов.

Применение

Есть несколько подходов для устранения данной проблемы:

  1. Редактирование файла /etc/apt/sources.list вручную:

    • Откройте файл /etc/apt/sources.list с помощью текстового редактора, например, Vim или Nano:
      sudo nano /etc/apt/sources.list
    • Найдите и удалите одну из дублирующихся строк (либо 33, либо 87), убедившись, что они действительно идентичны.
    • Сохраните изменения и выйдите из редактора.
  2. Использование графического интерфейса:

    • Перейдите в "Системные настройки" > "Программы и обновления" > "Другое программное обеспечение" и удалите дублирующие записи из списка.
  3. Автоматизация с помощью скрипта:

    • Существуют скрипты, которые могут автоматизировать поиск и удаление дублирующихся записей, как, например, aptsources-cleanup.pyz, который можно загрузить с GitHub.
    • Установите необходимые зависимости:
      sudo apt install python3-apt
    • Скачайте скрипт и задайте ему права на выполнение:
      chmod a+x aptsources-cleanup.pyz
    • Запустите скрипт:
      sudo ./aptsources-cleanup.pyz
    • Следуйте инструкциям на экране.
  4. Использование утилиты software-properties-gtk для обновления репозиториев:

    • Переименуйте текущий файл конфигурации:
      sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
    • Запустите software-properties-gtk, выберите нужные источники и сохраните изменения:
      sudo software-properties-gtk
  5. Проверка директорий:

    • Проверьте файлы в /etc/apt/sources.list.d/ на наличие пересекающихся записей между разными файлами. Удалите или объедините дубликаты.

После выполнения одного из методов, выполните sudo apt-get update, чтобы убедиться в отсутствии ошибок. Эти шаги помогут вам восстановить корректную работу системы управления пакетами, минимизировать возможность возникновения аналогичных проблем в будущем и гарантировать безопасное обновление программного обеспечения на вашем устройстве.

Оцените материал
Добавить комментарий

Капча загружается...