อะไรคือความแตกต่างระหว่าง apt-get install และ apt-get build-dep


33

ในหน้าของapt-get manสามารถพบสิ่งนี้:

ติดตั้ง pkg
ตัวเลือกนี้ตามมาด้วยแพ็คเกจที่ต้องการสำหรับการติดตั้ง แต่ละแพ็คเกจเป็นชื่อแพ็กเกจไม่ใช่ชื่อไฟล์ที่ผ่านการรับรองอย่างสมบูรณ์ (ตัวอย่างเช่นในระบบ Fedora Core glibc จะเป็นอาร์กิวเมนต์ที่ระบุไม่ใช่ glibc-2.4.8.i686.rpm)
แพ็คเกจทั้งหมดที่แพ็คเกจที่ระบุไว้สำหรับการติดตั้งจะถูกเรียกคืนและติดตั้งด้วย
[ ... ]

build-dep source_pkg
ทำให้ apt-get เพื่อติดตั้ง / ลบแพ็กเกจใน ความพยายามที่จะสร้างการอ้างอิง buildสำหรับแพ็กเกจซอร์ส

ดูเหมือนว่าทั้งคู่พยายามที่จะสร้างความพึงพอใจให้กับการพึ่งพากัน แต่ฉันได้ผลลัพธ์ที่แตกต่างกันในขณะที่ติดตั้งmatplotlibกับสิ่งเหล่านั้น: apt-get intallไม่ได้ทำงานร่วมกับpip install matplotlibvirtualenv ของฉันในขณะที่apt-get build-depทำ *

*ใช่ฉันต้องการติดตั้งmatplotlibใน venv แต่ pip ไม่สามารถแก้ไขการพึ่งพาบางอย่างดังนั้นฉันจึงใช้ apt อย่างเกียจคร้านเพื่อแก้ปัญหา

คำตอบ:


39

รุ่นสั้น ๆ

apt-get install

ติดตั้งแพคเกจใหม่การแก้ไขและดาวน์โหลดแพ็คเกจที่ขึ้นต่อกันโดยอัตโนมัติ หากติดตั้งแพคเกจแล้วลองอัปเกรดเป็นเวอร์ชั่นล่าสุด

apt-get build-dep

ทำให้ apt-get เพื่อติดตั้ง / ลบแพ็กเกจในความพยายามที่จะสร้างการอ้างอิง build สำหรับแพ็กเกจซอร์ส

คำสั่งsudo apt-get build-dep packagenameหมายถึงการติดตั้งการอ้างอิงทั้งหมดสำหรับ 'packagename' เพื่อให้ฉันสามารถสร้างได้ "ดังนั้น build-dep จึงเป็นคำสั่ง apt-get เช่นเดียวกับการติดตั้งลบอัปเดตและอื่น ๆ

build-depคำสั่งค้นหาที่เก็บท้องถิ่นในระบบและติดตั้งการสร้างการอ้างอิงสำหรับแพคเกจ หากแพ็กเกจไม่มีอยู่ในที่เก็บโลคัลมันจะส่งคืนรหัสข้อผิดพลาด

สำหรับการติดตั้ง matplotlib ดูที่การติดตั้ง matplotlib บน Ubuntu

ที่มา: ManPage & Ravi Saive


19

ความแตกต่างคือว่าการอ้างอิงที่มีความจำเป็นที่รันไทม์เมื่อเทียบกับที่ buildtime

ตัวอย่างเช่นบางทีฉันกำลังสร้างไบนารีซึ่งใช้ openssl ณเวลาที่สร้างฉันต้องการไฟล์ส่วนหัว openssl ซึ่งอยู่ในlibssl-devนั้น Build-Dependsจากนั้นผมก็จะรายการนี้เป็น

อย่างไรก็ตามไบนารีที่เกิดและแพคเกจไม่จำเป็นต้องมีส่วนหัวและไฟล์การพัฒนาอื่น ๆ เพื่อให้การติดตั้งlibssl-devครั้งที่ผมไม่จำเป็นต้อง มันคงไม่เป็นDependsเช่นนั้น แต่libsslไลบรารีรันไทม์ที่ไบนารีของฉันเชื่อมโยงกับจะต้องมีสิ่งต่อไปDependsนี้

ส่วนของผู้ชายที่คุณยกมาบ่งบอกสิ่งนี้ (มันพูดถึง "สนองต่อการพึ่งพาการสร้าง " ของแพ็คเกจ) แต่หากไม่มีความรู้มาก่อนว่าจะใช้ Build-Depend หรือไม่นั้นอาจทำให้สับสนได้

ดูที่คู่มือนโยบาย Debian สำหรับคำจำกัดความของฟิลด์ไฟล์ควบคุม:

http://www.debian.org/doc/debian-policy/ch-controlfields.html

นี่คือส่วนของการสร้างขึ้นอยู่กับ โปรดทราบว่าอยู่ภายใต้หัวข้อ "การอ้างอิงสำหรับแพ็คเกจต้นทาง ":

http://www.debian.org/doc/debian-policy/ch-relationships.html#s-sourcebinarydeps

และอันนี้พูดถึง Depends โปรดสังเกตว่า 'อยู่ใต้ส่วนหัวของแพคเกจไบนารี :

http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps


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