ข้อผิดพลาด :: คุณต้องใส่ URIs บางรายการในซอร์สของคุณ


107

ฉันกำลังพยายามติดตั้ง PIL โมดูลหลามบน Ubuntu

ก่อนอื่นฉันต้องติดตั้งแพ็คเกจที่เรียกว่า python-imaging โดยใช้คำสั่งต่อไปนี้

sudo apt-get build-dep python-imaging

เมื่อฉันลองทำสิ่งนี้ฉันจะได้รับข้อผิดพลาด

E: You must put some 'source' URIs in your sources.list

ฉันเห็นคำถามนี้ซึ่งแสดงวิธีการแก้ไขผ่าน GUI แต่ฉันใช้บรรทัดคำสั่ง ไม่มีใครรู้ว่าฉันสามารถแก้ไขข้อผิดพลาดนี้ได้หรือไม่?

อัปเดต: ตามคำตอบด้านล่างฉันได้อัปเดตรายการแพ็กเกจแล้ว แต่ตอนนี้ฉันได้รับข้อผิดพลาดนี้ ไม่แน่ใจว่าเกี่ยวข้องหรือไม่ถ้าไม่ใช่ฉันจะเริ่มคำถามใหม่เพราะฉันไม่สามารถหาข้อผิดพลาดได้ทุกที่

E: Build-Depends dependency for python-imaging cannot be satisfied because candidate version of package python-all-dev can't satisfy version requirements  

ข้อความแสดงข้อผิดพลาดแรกค่อนข้างสับสน มันจะปรากฏขึ้นแม้ว่าจะมีแหล่งที่มาบางอย่างในไฟล์ในขณะที่ข้อความแสดงถึงว่าไม่มีแหล่งที่มาเลย สิ่งที่ข้อความพยายามจะพูดคือคุณต้องเพิ่มแหล่งที่มีข้อมูล
Sören

คำตอบ:


100

software-properties-gtk ตัวเลือก "รหัสที่มา"

ฉันแนะนำสิ่งนี้สำหรับเดสก์ท็อป:

software-properties-gtk

จากนั้นภายใต้แท็บ "ซอฟต์แวร์ Ubuntu" คลิก "ซอร์สโค้ด":

ป้อนคำอธิบายรูปภาพที่นี่

นี้ได้มีการเพิ่มบางdeb-srcเส้นใต้และตอนนี้ฉันสามารถทำได้/etc/apt/sources.listsudo apt-get build-dep <package>

ฉันไม่สามารถหาวิธี CLI ที่สะอาดได้ดังนั้นฉันจึงสร้างรายงานข้อผิดพลาดนี้: https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1802718

ทดสอบกับ Ubuntu 16.04 ถึง 18.04

วิธีการ CLI

ฉันแนะนำสิ่งนี้สำหรับภาพ Docker:

sudo cp /etc/apt/sources.list /etc/apt/sources.list~
sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
sudo apt-get update

ทดสอบบนอิมเมจ Ubuntu 18.04 Docker หลังจากการเปลี่ยนแปลงนี้ฉันสามารถทำเช่น:

sudo apt-get build-dep hello

และก่อนการเปลี่ยนแปลงจะล้มเหลวโดยมีข้อผิดพลาด:

E: You must put some 'source' URIs in your sources.list

ก่อนหน้านี้พูดถึงที่: https://askubuntu.com/a/1011675/52975ไปและโหวตคำตอบนั้น

อย่างไรก็ตามโปรดทราบว่า/etc/apt/sources.listไฟล์มีบรรทัดเช่น:

# deb http://archive.canonical.com/ubuntu bionic partner
# deb-src http://archive.canonical.com/ubuntu bionic partner

ซึ่งหมายความว่าข้างต้นsedจะเปิดใช้งานแหล่งที่มา แต่ไม่ใช่แหล่งที่มาสำหรับ repos บางประเภท ฉันไม่คิดว่ามันจะสำคัญมาก


5
สิ่งนี้ใช้ได้กับฉันด้วยUbuntu 16.04
หรือ Duan

2
ยังแก้ไขให้ฉันในUbuntu 18.04
kramer65

2
@kilgoretrout "เป็นคำตอบที่ยอมรับได้อย่างไร" เนื่องจากการค้นหาของ Google พบกับความหมายของคำถามที่แน่นอน
Ciro Santilli 新疆改造中心法轮功六四事件

1
เจ๋งมาก! ต้องรัก sed!
Esben Eickhardt

1
ทำงานใน 19.04
Haris

50

คุณสามารถแก้ไขรายการแหล่งที่มา ( /etc/apt/sources.list) โดยตรง ฉันคิดว่าคุณต้องเพิ่ม / ไม่ใส่เครื่องหมายในบรรทัดเหล่านี้:

deb-src http://archive.ubuntu.com/ubuntu trusty main restricted #Added by software-properties
deb-src http://gb.archive.ubuntu.com/ubuntu/ trusty restricted main universe multiverse #Added by software-properties
deb-src http://gb.archive.ubuntu.com/ubuntu/ trusty-updates restricted main universe multiverse #Added by software-properties
deb-src http://gb.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse #Added by software-properties
deb-src http://security.ubuntu.com/ubuntu trusty-security restricted main universe multiverse #Added by software-properties
deb-src http://gb.archive.ubuntu.com/ubuntu/ trusty-proposed restricted main universe multiverse #Added by software-properties

ฉันทำสิ่งนี้โดยการปิดการใช้งานตัวเลือกซอร์สโค้ดและบันทึกหนึ่งไฟล์ของ source.list จากนั้นเปิดใช้งานตัวเลือกซอร์สโค้ดบันทึกสำเนาอีกชุดจากนั้นเรียกใช้diffทั้งสองอย่าง

คุณอาจต้องการที่จะเปลี่ยนคำนำหน้าhttp://gb.คำนำหน้าของแหล่งข้อมูลอื่น ๆ ในรายการของคุณ (ดังนั้นจึงใช้กระจก repo ที่ใกล้ที่สุดของคุณ) #Added by software-propertiesและคุณยังสามารถละเลย

หลังจากแก้ไขsources.listแล้วให้เรียกใช้sudo apt-get updateก่อนลองติดตั้งอีกครั้ง

เต็มdiffสามารถพบได้ที่นี่


อีกวิธีหนึ่งคือการสร้างใหม่ วิธีหนึ่งในการรับแหล่งที่มาอย่างสมบูรณ์รายการคือการใช้เว็บไซต์นี้: https://repogen.simplylinux.ch/


7
"หลังจากแก้ไขซอร์สรายการให้เรียกใช้ sudo apt-get update ก่อนลองติดตั้งอีกครั้ง" - นั่นคือกุญแจสำคัญขอบคุณ!
Kaushal Modi

9
sudo sed -i -e / # deb-src / deb-src / '/etc/apt/sources.list
Vincent

1
ขอบคุณเพื่อนที่จำฉันได้$ sudo apt update
christianbueno.1

@ ความคิดเห็นของ Vincent นั้นเพียงพอสำหรับฉันและสะอาดมาก ๆ
kilgoretrout

27

แก้ไข /etc/apt/sources.list

sudo nano /etc/apt/sources.list

จากนั้นลบ#หรือเพิ่มบรรทัดด้วยdeb-src $urlเช่น:

deb http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted
deb-src http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted

หรือคัดลอกจากบรรทัดที่มีอยู่เช่น

deb blah blah
deb-src exact same blah blah

จากนั้นเรียกใช้:

sudo apt-get update

ดูhttps://help.ubuntu.com/community/Repositories/CommandLineสำหรับข้อมูลเพิ่มเติม


17
ผู้บริหารsudo apt-get updateหลังจากแก้ไขsources.listไฟล์
abidibo

4

นี่คือโซลูชันบรรทัดคำสั่ง

cat /etc/apt/sources.list | grep deb-src  #  see what will get changed

เอาต์พุตทั่วไปของ cmd ด้านบน

# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic main restricted
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic universe
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-updates universe
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic multiverse
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
# deb-src http://us.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src http://archive.canonical.com/ubuntu bionic partner
# deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted
# deb-src http://security.ubuntu.com/ubuntu bionic-security universe
# deb-src http://archive.ubuntu.com/ubuntu bionic main universe restricted multiverse
# deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse

หากคุณเปลี่ยนแปลงบรรทัดด้านบนได้ดีซึ่งเป็นจริงเสมอในการติดตั้ง Ubuntu สดใหม่ปัญหา:

sudo sed -i~orig -e 's/# deb-src/deb-src/' /etc/apt/sources.list   

ซึ่งทำการสำรองข้อมูลของไฟล์อินพุตจากนั้นค้นหาความคิดเห็น deb-src ที่จะลบความคิดเห็นเพื่อให้บรรทัดเหล่านั้นใช้งาน ... หลังจากรีเฟรชเมตาดาต้าในท้องถิ่นจะทำให้เครื่องของคุณรับรู้หมวดหมู่ใหม่ของแพคเกจ Ubuntu

sudo apt-get update

ตอนนี้ออกคำสั่งดั้งเดิมของคุณอีกครั้งซึ่งล้มเหลวด้วย:

E: You must put some 'source' URIs in your sources.list

1
คุณสามารถข้าม cp และใช้-i~origกับ sed เพื่อให้ sed ทำการสำรองข้อมูล
muru

3

สำหรับ Ubuntu 16.04 ฉันทำการอัปเดตเหล่านี้เป็นแหล่งรายการ:

$ sudo diff /etc/apt/sources.list /etc/apt/sources.list.bkp 

6c6
< deb-src http://au.archive.ubuntu.com/ubuntu/ xenial main restricted
---
> # deb-src http://au.archive.ubuntu.com/ubuntu/ xenial main restricted

19c19
< deb-src http://au.archive.ubuntu.com/ubuntu/ xenial universe
---
> # deb-src http://au.archive.ubuntu.com/ubuntu/ xenial universe

39c9
< deb-src http://au.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
---
> # deb-src http://au.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse

53c53
< deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse
---
> # deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse

2

ใน Linux Mint (ฉันใช้เวอร์ชัน 18) คุณสามารถไปที่Software Sources (ค้นหาได้จากเมนู Start หรือเปิดจาก Terminal ด้วยsoftware-sources) มีบนแท็บแรกคุณจะพบช่องทำเครื่องหมายเปิดใช้งานการเก็บซอร์สโค้ด หากคุณเปิดใช้งานโปรแกรมจะใส่บรรทัดที่ถูกต้องลงใน/etc/apt/sources.list.d/official-source-repositories.listไฟล์ของคุณ อย่าลืมที่จะsudo apt-get update(หรือกดอัปเดตแคชใน Software Sources) หลังจากนั้น

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