Jak naprawić błąd apt „W: pakiety docelowe… są konfigurowane wiele razy”?

127

Właśnie zainstalowałem Ubuntu Gnome 16.04. Powiedziałem, żeby zapisać moje dokumenty - co zadziałało. Niektóre oprogramowanie musiało zostać ponownie zainstalowane. Teraz po uruchomieniu sudo apt-get updatewidzę to:

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

Czy istnieje zautomatyzowany sposób to naprawić?

Tim
źródło

Odpowiedzi:

161

Najnowsze, aktualne rozwiązanie

Napisałem skrypt Pythona do automatyzacji tego zadania. Najnowszą wersję można znaleźć tutaj .

Instalacja:

  1. Zainstaluj wymagania wstępne:

    sudo apt install python3-apt
    
  2. Pobierz pakiet ZIP ( aptsources-cleanup.zip) z najnowszej wersji .

Stosowanie:

  1. Z lokalizacji pobierania pakietu ZIP (patrz krok 2 powyżej) uruchom:

    sudo python3 -OEs aptsources-cleanup.zip
    
  2. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie.


Historyczne, nieaktualne rozwiązanie

To jest starsza, krótsza i prostsza wersja, bardziej odpowiednia do wstawiania oferty:

#!/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.')

Nie wymaga parametrów i działa na wszystkich /etc/apt/sources.list*za pomocą python3-aptpakietu. Linie nie muszą być dokładnymi duplikatami (nawet po normalizacji), ale wystarczy, jeśli typ, identyfikator URI, pakiet i co najmniej jeden komponent zachodzą na siebie.

Nie jestem pewien, czy test równości jest poprawny we wszystkich przypadkach narożnych (np. Różne ciągi „opcji”). Zostaw swoje komentarze i widelce na GitHub .

David Foerster
źródło
Z terminala możesz pobrać go za pomocą komendy wget „ github.com/davidfoerster/aptsources-cleanup/releases/download/…
Sami
@Sami: W tej chwili tak, ale nie będzie już wskazywać na najnowszą wersję, kiedy wydam kolejną wersję.
David Foerster
Użytkownik ubuntu 18.04: działa jak urok. dzięki.
Ali
osboxes @ osboxes: /etc/apt/sources.list.d$ sudo python3 -OEs aptsources-cleanup.zip python3: nie można otworzyć pliku „aptsources-cleanup.zip”: [Errno 2] Brak takiego pliku lub katalogu
Toolkit
@Toolkit: Poprawiłem instrukcje użytkowania. Przeczytaj je i spróbuj ponownie. Przepraszam za brak jasności.
David Foerster
79

Dla mnie (16.04 LTS) idziemy

Ustawienia systemowe >> Oprogramowanie i aktualizacje >> Inne oprogramowanie i usuwanie każdego duplikatu z listy działało poprawnie.

uczeń
źródło
6
Prosiłem o metodę automatyczną.
Tim
17
jest to lepsze rozwiązanie niż odczytanie obcego skryptu python3 przed jego wykonaniem ... działało idealnie
Max
2
Czy możesz usunąć „duplikaty” innego typu? Na przykład mam http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial maini http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main (source code). Czy można zapisać jeden ( kod źródłowy) (ten też nie jest zaznaczony, w przeciwieństwie do drugiego)?
Deruijter
1
@Tim prawda, ale prawdopodobnie nie dlatego większość ludzi przychodzi na to pytanie
Joel Berkeley
2
@Deruijter Ten, który mówi „kod źródłowy”, nie jest uważany za duplikat drugiego. Jednak nie potrzebujesz tego, który mówi „kod źródłowy”, chyba że chcesz pobrać kod źródłowy dla niektórych pakietów, aby skompilować je samodzielnie.
mchid
31

Zresetuj swoje repozytoria w ten sposób

  1. sudo rm /etc/apt/sources.list
  2. sudo software-properties-gtk
  3. Wybierz opcje
  4. Zapisać

(PS Miałem dzisiaj ten sam problem po aktualizacji Ubuntu 15.10 do Ubuntu 16.04.)

Andrzej
źródło
Uważaj, że powinieneś to zrobić dopiero po sprawdzeniu i upewnieniu się, że faktycznie software-properties-gtkzainstalowałeś się w systemie. Nie pytaj mnie, co skłoniło mnie do napisania tego.
Miloš Đakonović
5

Ponieważ błędy informują, gdzie jest problem, a wszystkie problemy wynikają z jednej zduplikowanej linii, możesz to łatwo naprawić ręcznie za pomocą edytora tekstu, takiego jak vim, nano itp. Jedną z zalet tego jest to, że możesz dokładnie zobaczyć na czym polega problem i co robisz, aby go naprawić.

W twoim przypadku, z sudo lub jako root, otwórz /etc/apt/sources.list w edytorze tekstu. Usuń wiersz 33 lub wiersz 87. Możesz najpierw wizualnie sprawdzić, czy są duplikatami.

Jeśli lubisz Vima ...

$ 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

Lub wydostać się, jeśli popełnisz błąd ...

:q!             # to quit without saving any changes
mightypile
źródło
4

W przypadku systemów opartych na Ubuntu z Linux mint przejdź do Źródła oprogramowania> Konserwacja> Usuń zduplikowane pakiety

Mario Olivio Flores
źródło
robiąc to, nie widzę duplikatu, ale wciąż widzę ten sam błąd
Cypr