apt-get build-dep ไม่สามารถค้นหาแพ็กเกจซอร์ส


16

ฉันได้ทำตามคำแนะนำนี้เพื่อปิดการใช้งานปุ่มกลางของเมาส์วางบน Ubuntu 12.04 ของฉัน

ทำงานเหมือนจับใจ

ตอนนี้ฉันพยายามที่จะประสบความสำเร็จเหมือนกันใน Linux Mint 17 ของฉันเมื่อฉันพยายาม

sudo apt-get build-dep libgtk2.0-0

มันให้ผลลัพธ์ต่อไปนี้กับฉัน:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'
E: Unable to find a source package for gtk+2.0

สำหรับฉันดูเหมือนว่า apt-get เป็นอย่างใดที่ "การแก้ไข" 'libgtk2.0-0'เพื่อ'gtk+2.0'แต่แล้วไม่พบแพคเกจใด ๆ ที่มีชื่อเช่นนั้น

แก้ไข: ถึงตอนนี้ฉันสามารถรวบรวมโปรแกรม (ดูคำตอบของฉัน) แต่ฉันก็ยังไม่รู้ว่า Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'ควรจะหมายถึงอะไร ข้อมูลเชิงลึกเกี่ยวกับเรื่องนี้จะได้รับการชื่นชมขอบคุณ!


คุณเปิดใช้งานdeb-srcพื้นที่เก็บข้อมูลที่เกี่ยวข้องใน /etc/apt/sources.list ของคุณหรือไม่
ขับขี่เหล็ก

คำตอบ:


18

ดังที่คนอื่น ๆ ได้จดบันทึกไว้แล้วตรวจสอบให้แน่ใจว่าทุกdeb …รายการใน/etc/apt/sources.listและ/etc/apt/sources.list.d/*คุณมีdeb-src …รายการที่ตรงกัน บรรทัดที่เหลือต้องเหมือนกัน debรายการสำหรับแพคเกจไบนารี (คือพร้อมที่จะติดตั้ง) ที่deb-srcเป็นแหล่งที่มาสำหรับแพคเกจ (คือพร้อมที่จะรวบรวม) เหตุผลที่แยกแหล่งที่มาสองชนิดคือมีการจัดการแตกต่างกันมาก: แพคเกจไบนารีมีกลไกการติดตามการพึ่งพาและรายการที่ติดตั้งในปัจจุบันในขณะที่แหล่งที่มาแพคเกจจะถูกติดตามเท่านั้นเพื่อให้สามารถดาวน์โหลดได้สะดวก โปรดทราบว่าเมื่อพูดถึงที่เก็บแพ็กเกจคำว่าแหล่งข้อมูลหมายถึงสิ่งที่ไม่เกี่ยวข้องสองอย่าง: แหล่งที่มาในที่ตั้งเพื่อดาวน์โหลดแพ็คเกจและแพ็กเกจแหล่งข้อมูลซึ่งตรงข้ามกับแพคเกจไบนารี

libgtk2.0-0เป็นชื่อของแพ็คเกจไบนารี gtk+2.0มันถูกสร้างขึ้นจากแพคเกจที่มาที่เรียกว่า เหตุผลที่มาและชื่อแพคเกจไบนารีไม่ตรงเสมอคือการสร้างแพคเกจที่มาสามารถผลิตหลายแพคเกจไบนารี; ตัวอย่างเช่นgtk+2.0เป็นแหล่งสำหรับแพคเกจ 14 ในขณะที่มันถูกแบ่งออกเป็นสองห้องสมุด ( libgtk2.0, libgail ), corresponding packages to build programs using these libraries (... -DEV ), documentation for developers (... -doc ), companion programs (libgtk2.0-bin`) ฯลฯ

คุณสามารถเห็นชื่อของแพคเกจที่มาที่สอดคล้องกับแพคเกจไบนารีโดยการตรวจสอบที่Source: …สายในการส่งออกของdpkg -s BINARY_PACKAGE_NAME(ถ้าแพคเกจติดตั้ง) apt-cache show BINARY_PACKAGE_NAMEหรือ aptitude search '?source-package(^SOURCE_PACKAGE_NAME$)คุณสามารถแสดงรายการแพคเกจไบนารีที่ผลิตโดยแพคเกจที่มาพร้อมกับ

คำสั่งapt-get sourceดาวน์โหลดแพ็กเกจซอร์ส หากคุณให้อาร์กิวเมนต์ที่ไม่ได้เป็นแพคเกจแหล่งที่มามันจะค้นหาในฐานข้อมูลของแพคเกจไบนารีที่ติดตั้งได้และพยายามดาวน์โหลดแพคเกจแหล่งที่มาที่สอดคล้องกัน คำสั่งapt-get build-depปฏิบัติตามวิธีการเดียวกันในการอนุมานชื่อของแพ็กเกจซอร์สจากนั้นเคียวรีฐานข้อมูลแพ็กเกจซอร์สเพื่อรับรายการของแพ็กเกจไบนารี (รายการในBuild-Dep:ฟิลด์) และติดตั้งแพ็กเกจไบนารีเหล่านั้น

GUI แหล่งที่มาของซอฟต์แวร์มีช่องทำเครื่องหมาย“ เปิดใช้ที่เก็บด้วยซอร์สโค้ด” สำหรับที่เก็บอย่างเป็นทางการตรวจสอบให้แน่ใจว่ามีการทำเครื่องหมายไว้ หากคุณเพิ่มที่เก็บของบุคคลที่สามด้วยตนเองตรวจสอบให้แน่ใจว่าคุณเพิ่มทั้งสองdeb-srcและdebบรรทัด


6

ขอบคุณ @steeldriver ฉันคิดออกว่าจะทำอย่างไร

เพียงแค่ต้องเพิ่มลิงต่อไปนี้ของฉัน/etc/apt/sources.list:

deb-src ftp://ftp.de.debian.org/debian/ stable main contrib

ที่เก็บ deb-src มีแพ็กเกจซอร์ส (ตรงข้ามกับแพ็คเกจไบนารีพร้อมติดตั้ง) ที่จำเป็นสำหรับการรวบรวม

แก้ไข: หลังจากเพิ่มสิ่งนี้คุณต้องดำเนินการ sudo apt-get update


5

วิธีการ CLI

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

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

จาก GUI คุณสามารถเรียกใช้:

software-properties-gtk

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

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

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

ทดสอบบน Ubuntu 16.04 ถึง 18.04

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