ฉันจะแก้ไขข้อผิดพลาด apt“ 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. ดาวน์โหลดกำไปรษณีย์ ( 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, suite และส่วนประกอบอย่างน้อยหนึ่งรายการซ้อนทับกัน

ฉันไม่แน่ใจว่าการทดสอบความเท่าเทียมกันนั้นถูกต้องในทุกกรณี (เช่นสตริง "ตัวเลือก" ต่างๆ) กรุณาแสดงความคิดเห็นและส้อมของคุณบน GitHub


จากเทอร์มินัลคุณสามารถดาวน์โหลดได้โดยคำสั่ง wget " github.com/davidfoerster/aptsources-cleanup/releases/download/… "
Sami

@Sami: ในขณะนี้ใช่ แต่มันจะไม่ชี้ไปที่รุ่นล่าสุดอีกเมื่อฉันทำการเปิดตัวอีกครั้ง
David Foerster

ผู้ใช้ Ubuntu 18.04: ทำงานเหมือนจับใจ ขอบคุณชาย
Ali

osboxes @ osboxes: /etc/apt/sources.list.d$ sudo python3 -OEs aptsources-cleanup.zip python3: ไม่สามารถเปิดไฟล์ 'aptsources-cleanup.zip': [Errno 2] ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
Toolkit

@ เครื่องมือ: ฉันแก้ไขคำแนะนำการใช้งาน โปรดอ่านพวกเขาและลองอีกครั้ง ขออภัยในความไม่ชัดเจน
David Foerster

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)มันจะบันทึกเพื่อลบหนึ่ง(ซอร์สโค้ด)หนึ่ง (อันนี้ไม่ได้ตรวจสอบอย่างใดอย่างหนึ่งเมื่อเทียบกับอีกหนึ่ง)?
Deruijter

1
@Tim จริง แต่อาจไม่ใช่เหตุผลที่คนส่วนใหญ่มาที่คำถามนี้
Joel Berkeley

2
@Deruijter ตัวที่กล่าวว่า "source code" นั้นไม่ถือว่าซ้ำกัน อย่างไรก็ตามคุณไม่จำเป็นต้องใช้รหัสที่ระบุว่า "ซอร์สโค้ด" นอกจากว่าคุณต้องการดาวน์โหลดซอร์สโค้ดสำหรับบางแพ็คเกจเพื่อคอมไพล์ด้วยตัวคุณเอง
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ติดตั้งบนระบบของคุณจริง อย่าถามฉันว่าอะไรทำให้ฉันเขียนสิ่งนี้
MilošĐakonović

5

เนื่องจากข้อผิดพลาดบอกคุณว่าปัญหาอยู่ที่ใดและปัญหาทั้งหมดนั้นเกิดจากการทำซ้ำบรรทัดเดียวคุณสามารถแก้ไขได้ด้วยตนเองอย่างง่ายดายด้วยโปรแกรมแก้ไขข้อความเช่น vim, nano เป็นต้นข้อดีอย่างหนึ่งของที่นี่คือคุณสามารถเห็นได้อย่างชัดเจน ปัญหาคืออะไรและคุณกำลังทำอะไรเพื่อแก้ไข

ในกรณีของคุณด้วย sudo หรือเป็น root ให้เปิด /etc/apt/sources.list ในเท็กซ์เอดิเตอร์ ลบทั้งบรรทัดที่ 33 หรือบรรทัดที่ 87 คุณสามารถตรวจสอบด้วยตาว่าพวกเขากำลังซ้ำกันก่อน

ถ้าคุณชอบเสียงเรียกเข้า ...

$ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.