Як я можу виправити помилкову помилку "W: Цільові пакети ... налаштовано кілька разів"?


127

Щойно я встановив 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. Дотримуйтесь інструкцій, що з’являються на екрані.


Історичне, застаріле рішення

Це старіший, коротший і простіший варіант, більш підходящий для вбудованої пропозиції:

#!/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, набір і хоча б один компонент перекриваються.

Я не впевнений, що тест рівності є правильним у всіх кутових випадках (наприклад, різних рядках "опції"). Залиште свої коментарі та вилки на GitHub .


Від терміналу ви можете завантажити його з допомогою команди Wget « github.com/davidfoerster/aptsources-cleanup/releases/download / ... »
Sami

@Sami: На даний момент так, але це вже не вказуватиме на останню версію, коли я роблю ще один реліз.
Девід Фоерстер

користувач ubuntu 18.04: працює як шарм. дякую людині.
Алі

osboxes @ osboxes: /etc/apt/sources.list.d$ sudo python3 -OEs aptsources-cleanup.zip python3: не вдається відкрити файл 'aptsources-cleanup.zip': [Errno 2] Немає такого файлу чи каталогу
Інструментарій

@Toolkit: я переглянув інструкції щодо використання. Прочитайте їх і спробуйте ще раз. Вибачте за відсутність ясності.
Девід Фоерстер

79

Для мене (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). Чи зберегти це для видалення (вихідного коду) одного (цей також не перевіряється, на відміну від іншого)?
Деруйтер

1
@Tim правда, але це, мабуть, не тому, що більшість людей приходить до цього питання
Джоел Берклі

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

4

Для систем на базі Ubuntu з монетним двором Linux перейдіть до Джерела програмного забезпечення> Технічне обслуговування> Видалити повторювані пакети


при цьому я не знайшов жодного дубліката, але все одно бачу ту саму помилку
cipricus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.