Làm cách nào để tôi có thể sửa lỗi apt W: Gói mục tiêu được cấu hình nhiều lần


128

Tôi vừa cài đặt Ubuntu Gnome 16.04. Tôi nói với nó để lưu tài liệu của tôi - mà làm việc. Một số phần mềm đã được cài đặt lại. Bây giờ khi tôi chạy sudo apt-get updatetôi thấy điều này:

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

Có một cách tự động để khắc phục điều này?

Câu trả lời:


161

Giải pháp cập nhật gần đây

Tôi đã viết một kịch bản Python để tự động hóa nhiệm vụ này. Bạn có thể tìm thấy phiên bản mới nhất ở đây .

Cài đặt:

  1. Cài đặt các điều kiện tiên quyết:

    sudo apt install python3-apt
    
  2. Tải xuống gói ZIP ( aptsources-cleanup.zip) từ bản phát hành mới nhất .

Sử dụng:

  1. Từ vị trí tải xuống của gói ZIP (xem bước 2 ở trên) chạy:

    sudo python3 -OEs aptsources-cleanup.zip
    
  2. Thực hiện theo các hướng dẫn xuất hiện trên màn hình.

Nếu bạn muốn báo cáo vấn đề , để lại nhận xét hoặc phân tách mã nguồn, vui lòng làm như vậy trên GitHub .


Giải pháp lịch sử, lỗi thời

Đây là phiên bản cũ hơn, ngắn hơn và đơn giản hơn phù hợp với trích dẫn nội tuyến:

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

Nó không có tham số và hoạt động trên tất cả /etc/apt/sources.list*với sự trợ giúp của python3-aptgói. Các dòng không phải là trùng lặp chính xác (ngay cả sau khi chuẩn hóa) nhưng nó đủ nếu kiểu, URI, bộ và ít nhất một thành phần trùng nhau.

Tôi không chắc chắn kiểm tra đẳng thức là chính xác trong tất cả các trường hợp góc (ví dụ: các chuỗi tùy chọn khác nhau của các chuỗi).


Từ thiết bị đầu cuối, bạn có thể tải xuống bằng lệnh wget " github.com/davidfoerster/aptsource-cleanup/release/doad/ trộm "
Sami

@Sami: Hiện tại có, nhưng nó sẽ không chỉ đến bản phát hành mới nhất nữa khi tôi thực hiện một bản phát hành khác.
David foerster

Người dùng Ubuntu 18.04: hoạt động như một lá bùa. cảm ơn người đàn ông
Ali

osboxes @ osboxes: /etc/apt/source.list.d$ sudo python3 -OEs aptsource-cleanup.zip python3: không thể mở tệp 'aptsource-cleanup.zip': [Errno 2] Không có tệp hoặc thư mục như vậy
Toolkit

@Toolkit: Tôi đã sửa đổi hướng dẫn sử dụng. Vui lòng đọc chúng và thử lại. Xin lỗi vì sự thiếu rõ ràng.
David foerster

80

Đối với tôi (16.04 LTS) sẽ

Cài đặt hệ thống >> Phần mềm và Cập nhật >> Phần mềm khác và xóa từng mục trùng lặp khỏi danh sách hoạt động tốt.


6
Tôi đã yêu cầu một phương pháp tự động.
Tim

17
đây là một giải pháp tốt hơn so với đọc tập lệnh python3 nước ngoài trước khi thực hiện nó ... hoạt động hoàn hảo
Tối đa

2
Bạn có thể xóa "bản sao" có loại khác không? Ví dụ tôi có http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial mainhttp://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main (source code). Có phải là lưu để loại bỏ (mã nguồn) một (cái này không được kiểm tra, trái ngược với cái kia)?
Deruijter

1
@Tim đúng nhưng có lẽ đó không phải là lý do tại sao hầu hết mọi người đến với câu hỏi này
Joel Berkeley

2
@Deruijter Cái nói "mã nguồn" không được coi là bản sao của cái kia. Tuy nhiên, bạn không cần một mã có "mã nguồn" trừ khi bạn muốn tải xuống mã nguồn cho một số gói để tự biên dịch chúng.
mchid

31

Đặt lại kho lưu trữ của bạn như thế này

  1. sudo rm /etc/apt/sources.list
  2. sudo software-properties-gtk
  3. Chọn tùy chọn của bạn
  4. Lưu lại

(PS tôi đã gặp vấn đề tương tự ngày hôm nay sau khi cập nhật Ubuntu 15.10 lên Ubuntu 16.04.)


Lưu ý rằng bạn chỉ nên làm điều này sau khi bạn kiểm tra và đảm bảo rằng bạn thực sự đã software-properties-gtkcài đặt trên hệ thống của bạn. Đừng hỏi tôi điều gì đã khiến tôi viết bài này.
Miloš Đakonović

5

Vì các lỗi cho bạn biết vấn đề ở đâu và tất cả các vấn đề là do một dòng trùng lặp duy nhất, bạn có thể dễ dàng sửa lỗi này bằng trình soạn thảo văn bản như vim, nano, v.v. Một lợi ích của việc này là bạn có thể thấy chính xác vấn đề là gì và bạn đang làm gì để khắc phục nó.

Trong trường hợp của bạn, với sudo hoặc là root, hãy mở /etc/apt/source.list trong trình soạn thảo văn bản. Xóa một trong hai dòng 33 hoặc dòng 87. Trước tiên, bạn có thể kiểm tra xem chúng có trùng lặp không.

Nếu bạn thích 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

Hoặc, để thoát ra nếu bạn phạm sai lầm ...

:q!             # to quit without saving any changes

4

Đối với các hệ thống dựa trên Ubuntu với Linux mint, hãy đi tới Nguồn phần mềm> Bảo trì> Xóa các gói trùng lặp


làm điều đó tôi không tìm thấy bản sao nào, nhưng vẫn thấy lỗi tương tự
cipricus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.