Как я могу исправить ошибку apt «W: Target Packages… настраивается несколько раз»?

128

Я только что установил 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: The repository 'http://extras.ubuntu.com/ubuntu xenial Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: http://dl.google.com/linux/chrome/deb/dists/stable/Release.gpg: Signature by key 4CCA1EAF950CEE4AB83976DCA040830F7FAC5991 uses weak digest algorithm (SHA1)
W: http://repo.sinew.in/dists/stable/InRelease: Signature by key B6DA722E2E65721AF54B93966F7565879798C2FC uses weak digest algorithm (SHA1)
E: Failed to fetch http://extras.ubuntu.com/ubuntu/dists/xenial/main/source/Sources  404  Not Found [IP: 91.189.92.152 80]
E: Failed to fetch http://extras.ubuntu.com/ubuntu/dists/xenial/main/binary-amd64/Packages  404  Not Found [IP: 91.189.92.152 80]
E: Failed to fetch http://extras.ubuntu.com/ubuntu/dists/xenial/main/binary-i386/Packages  404  Not Found [IP: 91.189.92.152 80]
E: Some index files failed to download. They have been ignored, or old ones used instead.
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

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

Тим
источник

Ответы:

161

Недавнее, современное решение

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

Монтаж:

  1. Установите предпосылки:

    sudo apt install python3-apt
    
  2. Загрузите пакет ZIP ( aptsources-cleanup.zip) из последней версии .

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

  1. Из местоположения загрузки ZIP-пакета (см. Шаг 2 выше) запустите:

    sudo python3 -OEs aptsources-cleanup.zip
    
  2. Следуйте инструкциям, появляющимся на экране.

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


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

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

#!/usr/bin/env python3
"""
Detects and interactively deactivates duplicate Apt source entries.

Usage: sudo python3 apt-remove-duplicate-source-entries.py
"""

from __future__ import print_function
import aptsources.sourceslist

EMPTY_COMPONENT_LIST = (None,)

def get_duplicates(sourceslist):
    """
    Detects and returns duplicate Apt source entries.
    """

    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(
                'Overlapping source entries:\n'
                '  1. {0}: {1}\n'
                '  2. {2}: {3}\n'
                'I disabled the latter entry.'.format(
                    orig.file, orig, dupe.file, dupe),
                end='\n\n')
            dupe.disabled = True

        print('\n{0} source entries were disabled:'.format(len(duplicates)),
            *[dupe for dupe, orig in duplicates], sep='\n  ', end='\n\n')
        if input('Do you want to save these changes? (y/N) ').upper() == 'Y':
            sourceslist.save()

    else:
        print('No duplicated entries were found.')

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

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

Дэвид Фёрстер
источник
Из терминала вы можете скачать его командой wget " github.com/davidfoerster/aptsources-cleanup/releases/download/… "
Сами,
@Sami: На данный момент да, но это не будет указывать на последний релиз, когда я сделаю другой релиз.
Дэвид Фёрстер
Пользователь Ubuntu 18.04: работает как шарм. Спасибо чувак.
Али
osboxes @ osboxes: /etc/apt/sources.list.d$ sudo python3 -OEs aptsources-cleanup.zip python3: невозможно открыть файл 'aptsources-cleanup.zip': [Errno 2] Нет такого файла или каталога
Инструментарий
@Toolkit: я пересмотрел инструкцию по использованию. Пожалуйста, прочитайте их и попробуйте снова. Извините за отсутствие ясности.
Дэвид Фёрстер
80

Для меня (16.04 LTS) собираюсь

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

ученик
источник
6
Я запрашивал автоматизированный метод.
Тим
17
это лучшее решение, чем читать иностранный скрипт на python3 перед его выполнением ... отлично работало
Макс
2
Вы можете удалить «дубликаты», которые имеют другой тип? Например у меня есть http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial mainи http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main (source code). Это сохранить, чтобы удалить (исходный код) один (этот также не проверен, в отличие от другого)?
Deruijter
1
@ Правда, но, вероятно, это не то, почему большинство людей приходят к этому вопросу
Джоэл Беркли
2
@Deruijter Тот, который говорит «исходный код», не считается дубликатом другого. Однако вам не нужен тот, который говорит «исходный код», если вы не хотите загружать исходный код для некоторых пакетов, чтобы скомпилировать их самостоятельно.
mchid
31

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

  1. sudo rm /etc/apt/sources.list
  2. sudo software-properties-gtk
  3. Выберите ваши варианты
  4. Сохранить

(PS У меня была такая же проблема сегодня после обновления Ubuntu 15.10 до Ubuntu 16.04.)

Андрей
источник
Помните, что вам следует делать это только после того, как вы проверите и убедитесь, что вы действительно software-properties-gtkустановили систему. Не спрашивайте меня, что заставило меня написать это.
Милош Чаконович
5

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

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

Если тебе нравится vim ...

$ sudo vim /etc/apt/sources.list
33 [Shift]+g    # to goto line 33
87 [Shift]+g    # to goto line 87, don't need a duplicate of line 33
dd              # to delete the line you're on
:wq             # to write the file and quit

Или выйти, если ошибешься ...

:q!             # to quit without saving any changes
mightypile
источник
4

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

Марио Оливио Флорес
источник
при этом я не получаю дубликатов, но все равно вижу ту же ошибку
cipricus