ความแตกต่างระหว่าง dpkg และ aptitude / apt-get คืออะไร?


125

เมื่อติดตั้งซอฟต์แวร์ผ่านdpkg -i packageA.debการอ้างอิงที่ต้องการโดยpackageAจะดาวน์โหลดและติดตั้งโดยอัตโนมัติหรือไม่ วิธีนี้จะแตกต่างจากการใช้apt-getหรือaptitude?


ที่เกี่ยวข้อง (โดยเฉพาะอย่างยิ่งเกี่ยวกับการพึ่งพา): askubuntu.com/q/40779/250300
Melebius

คำตอบ:


168

ไม่dpkgเพียงติดตั้งแพคเกจเท่านั้นดังนั้นการทำเช่นdpkg -i packageName.debนี้จะติดตั้งเฉพาะแพคเกจ Deb นี้และจะแจ้งให้คุณทราบถึงการอ้างอิงใด ๆ ที่จำเป็นต้องติดตั้ง แต่จะไม่ติดตั้งแพ็กเกจและจะไม่กำหนดค่าpackageName.debเพราะ ... ไม่มี.

apt-getเป็นระบบแพคเกจการบริหารจัดการที่จัดการการติดตั้งแพคเกจ Deb บนลินุกซ์ Debian-based ระบบการจัดการแพคเกจเป็นชุดเครื่องมือที่จะช่วยให้คุณติดตั้งลบและเปลี่ยนแพคเกจได้อย่างง่ายดาย ดังนั้นเป็นเหมือนฉลาดapt-getdpkg

ฉันชอบคิดเกี่ยวกับไทม์ไลน์ด้วยวิธีนี้ (ต่อไปนี้เป็นเพียงฉันพูดจากประสบการณ์มันมีไว้เพื่อให้ความคิดแก่คุณในเรื่องทั้งหมดนี้เท่านั้น):

  • พวกเขามาพร้อมกับวิธี "จัดเก็บ" ไฟล์ของแอปพลิเคชันใน "แพ็คเกจ" เพื่อให้สามารถติดตั้งได้ง่าย ดังนั้นแพ็คเกจ Deb ( .debไฟล์นามสกุล ) จึงเกิดขึ้น

    .debไฟล์มีไฟล์ที่จำเป็นโดยประยุกต์ใช้ในการทำงานเช่นเดียวกับ(ผมชอบที่จะเรียกว่า) "ข้อมูลเมตา" ที่เก็บข้อมูลอื่น ๆ เช่นชื่อของการอ้างอิงความต้องการของแอพลิเคชัน หากคุณต้องการดูเนื้อหาของ.debไฟล์คุณสามารถใช้คำสั่งdpkg -c packageName.debและหากคุณต้องการดูข้อมูล "meta-data" นี้ให้ใช้คำสั่งdpkg -I pacakgeName.deb(และหากคุณต้องการเห็นเพียงการอ้างอิงเท่านั้นdpkg -I packageName.deb | grep Depends)

  • พวกเขาต้องการเครื่องมือในการติดตั้ง.debไฟล์เหล่านี้ดังนั้นพวกเขาจึงมาพร้อมกับdpkgเครื่องมือ อย่างไรก็ตามเครื่องมือนี้จะติดตั้ง.debไฟล์ แต่จะไม่ติดตั้งการอ้างอิงเนื่องจากไม่มีไฟล์เหล่านั้นและไม่สามารถเข้าถึง "คลังเก็บ" เพื่อดึงการอ้างอิงจาก

  • จากนั้นพวกเขาก็มาด้วยapt-getซึ่งทำให้ปัญหาในจุดก่อนหน้าโดยอัตโนมัติ ใต้ฝากระโปรงนั้นapt-getเป็นพื้นdpkg(ฉันชอบคิดว่ามันเป็นapt-getfront-end สำหรับdpkg) แต่เป็นคนฉลาดที่จะมองหาการอ้างอิงและติดตั้งพวกเขา มันยังดูที่การพึ่งพาที่ติดตั้งอยู่ในปัจจุบันและกำหนดสิ่งที่ไม่ได้ใช้โดยแพ็กเกจอื่น ๆ และจะแจ้งให้คุณทราบว่าคุณสามารถลบมันได้

aptitudeจากนั้นก็เข้ามา มันใช้ไลบรารีที่apt-getใช้และมี UI แบบโต้ตอบ (ส่วนต่อประสานผู้ใช้) หากคุณต้องการเห็น UI นี้เพียงพิมพ์aptitudeเทอร์มินัล นั่นคือ aptitudeมันใช้ประโยชน์จากห้องสมุดเพื่อให้ตัวเลือกมากขึ้นและ perks apt-getกว่า ตัวอย่างเช่นaptitudeจะลบแพ็คเกจที่มีสิทธิ์ออกโดยอัตโนมัติขณะที่apt-getต้องการคำสั่งแยกต่างหาก แต่ในท้ายที่สุดแล้วทำsudo aptitude install packageName.debควรอย่างน้อยsudo apt-get install packageName.debเป็นเช่นเดียวกับ อาจมีความแตกต่างเล็กน้อยที่นี่และที่ฉันไม่รู้ แต่ทั้งคู่จะมองหาการพึ่งพาและทำทุกสิ่งนั้น คุณสามารถอ่านคำตอบได้ที่นี่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความแตกต่างระหว่างและaptitudeapt-get

ยังaptitudeไม่มี Super Cow Powers

แก้ไข: เห็นได้ชัดว่ามันทำ aptitude -v[v[v[v[v]]]] moo.

aptitudeอาจไม่ได้ติดตั้งตามค่าเริ่มต้น การติดตั้งมันทำsudo apt-get install aptitudeหรือคลิกที่นี่: ความถนัดติดตั้งความถนัด


พิเศษ

ข้อมูลต่อไปนี้ไม่ได้ตอบว่า " ความแตกต่างระหว่าง dpkg และ aptitude / apt-getโดยตรงคืออะไร " แต่มันมีส่วนทำให้เกิดภาพรวมขนาดใหญ่


จากความคิดเห็นของCarlos Campderrós ด้านล่าง :

gdebiเป็นเครื่องมือที่เป็นชนิดของส่วนผสมระหว่างและapt-get aptitudeเมื่อคุณใช้มันในการติดตั้ง.debแพคเกจ ( gdebi packageName.deb) ก็จะระบุอ้างอิงหายไปติดตั้งโดยใช้และแล้วในที่สุดการติดตั้งและกำหนดค่าแพคเกจการใช้apt-get dpkgมันยังมีGUI ที่เรียบง่ายและเรียบร้อยที่ให้ข้อมูลเกี่ยวกับ.debแพคเกจไฟล์ที่รวมอยู่ในแพ็คเกจและสิ่งที่จำเป็นต้องติดตั้ง หากต้องการดู GUI gdebi-gtk packageName.debนี้คุณจะทำอย่างไร คุณสามารถให้gdebiลองโดยการติดตั้งด้วยsudo apt-get install gdebiหรือคลิกที่นี่: gdebiติดตั้ง gdebi


ฉันไม่ต้องการให้ใครสับสน แต่เพียงเพื่อให้คุณเป็นส่วนหนึ่งของภาพมีรูปแบบแพคเกจ Linux ยอดนิยมอีกรูปแบบหนึ่งที่เรียกว่า RPM และไฟล์นั้นมี.rpmส่วนขยาย รูปแบบแพ็กเกจนี้ใช้กับการแจกจ่ายบน Linux ที่ใช้RPM (เช่น Red Hat, CentOS และ Fedora) พวกเขาใช้คำสั่งrpmเพื่อติดตั้งแพ็กเกจและyumเป็น front-end มันเป็นหนึ่งที่ฉลาด ดังนั้นพวกเขา.rpmไฟล์เป็นของเรา.debไฟล์ของพวกเขาrpmเป็นเครื่องมือของเราdpkgเครื่องมือของพวกเขาและเป็นของเราyumapt-get

จากความคิดเห็นของPaddy Landau ด้านล่าง :

alienเป็นเครื่องมือที่แปลงระหว่าง.rpmและ.debแพคเกจ ดังนั้นถ้าคุณเคยตกอยู่ในสถานการณ์ที่คุณมี.rpmแพคเกจและคุณต้องการที่จะติดตั้งในอูบุนตู (หรืออื่น ๆ distro Debian-based), คุณสามารถใช้คำสั่งalien rpm_packageName.rpmเพื่อแปลงเป็นแล้วติดตั้งโดยใช้.deb dpkgคุณสามารถทำย้อนกลับ (แปลง.debไป.rpm) alien -r packageName.debโดยใช้


5
นั่นมีประโยชน์มากและเป็นสิ่งที่ฉันกำลังมองหา Tx!
Aniket Thakur

4
นอกจากนี้คุณยังสามารถใช้gdebi( apt-get install gdebi-core) ที่ผสมapt-get/ กับaptitude dpkgคุณเรียกมันด้วยgdebi some_package.debและมันจะวิเคราะห์การพึ่งพา, การเรียกapt-getเพื่อติดตั้งสิ่งที่ขาดหายไปและเมื่อการอ้างอิงทั้งหมดเสร็จสมบูรณ์, จากนั้นโทรdpkgไปติดตั้งแพ็คเกจของคุณในที่สุด
Carlos Campderrós

2
ภายใต้ @Alaa เสริมคุณยังสามารถพูดถึงว่าalienแปลงแพคเกจระหว่างและ.rpm .debสิ่งนี้มีประโยชน์สำหรับแพ็คเกจที่มีสำหรับ RPM แต่ไม่ใช่สำหรับ DEB (หรือในทางกลับกัน) ตัวอย่างเช่นalien packagename.rpmเพื่อให้สามารถใช้งานได้กับ Ubuntu
Paddy Landau

1
@AlaaAli ไม่ได้เป็นส่วนหน้าสำหรับaptitude ทั้งสองโปรแกรมเป็นส่วนหน้าสำหรับห้องสมุด apt-getlibapt-pkg
Eliah Kagan

1
@edwardtorvalds AskUbuntu เป็นเว็บไซต์คำถามและคำตอบ ค้นหาคำตอบของคุณที่นี่ในเว็บไซต์จากคำถามเก่า ๆ นับพันและถ้าคุณไม่พบให้ถามคำถามของคุณเองคนที่มีประสบการณ์มากกว่าฉันหวังว่าจะตอบด้วย
Alaa Ali

5

apt-get

การจัดการแพ็กเกจผ่านการapt-getรันแบบ hand-in-hand พร้อมกับ/etc/apt/sources.listไฟล์

apt-get install <package_name> ติดตั้งแพ็คเกจใหม่บนคอมพิวเตอร์ของคุณ

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

apt-get install <package1_name> <package2_name> <package3_name> apt-get อนุญาตให้ติดตั้งหลายแพ็คเกจ แยกแพ็คเกจด้วยช่องว่าง

auto-apt run <command_string> เมื่อเรียกใช้งานคำสั่ง auto-apt จะติดตั้งแพ็กเกจโดยอัตโนมัติเมื่อไม่มีการเข้าถึงไฟล์ apt-getหากโปรแกรมพยายามที่จะเข้าถึงไฟล์ที่รู้จักกันอยู่ในแพคเกจยกเลิกการติดตั้งอัตโนมัติฉลาดจะติดตั้งแพคเกจที่ใช้ คุณสมบัตินี้ต้องการ apt และ sudo เพื่อใช้งาน

เยี่ยมชมหน้าคำแนะนำ apt-get

ความถนัด

aptitudeให้ฟังก์ชันการทำงานของdselectและapt-getเช่นเดียวกับคุณสมบัติเพิ่มเติมมากมายที่ไม่พบในโปรแกรมใดโปรแกรมหนึ่ง

aptitude มีเชลล์ของตัวเองซึ่งเปิดใช้งานแป้นพิมพ์หรือเมาส์และทำงานในหน้าต่างเทอร์มินัล

aptitude build-dep <package> - ติดตั้ง build-dependencies ของแพ็คเกจ - ซึ่งหมายถึงแพ็คเกจที่จำเป็นในการรวบรวม (หรือบิลด์ ) แพ็คเกจต้นทาง ตัวอย่างเช่นแพคเกจจำนวนมากจำเป็นต้องมีdebhelperหรือautotoolsจะสร้าง แต่ไม่จำเป็นต้องเรียกใช้

เยี่ยมชมหน้าคำแนะนำความถนัด

dpkg

เป็นเครื่องมือในการติดตั้งสร้างลบและจัดการแพ็คเกจ Debian ลิงค์

dpkg -i <package.deb>ติดตั้งแพ็คเกจ Debian บนคอมพิวเตอร์ของคุณ มันไม่ได้ติดตั้งการพึ่งพาใด ๆ เท่าที่ฉันสามารถหาได้จากไฟล์ช่วยเหลือ

สำหรับรายละเอียดพิมพ์dpkg --helpลงในหน้าต่างเทอร์มินัล

คู่มือ

คำแนะนำเกี่ยวกับการจัดการไฟล์สามารถดูได้ที่นี่


0

ฉันคิดว่าสิ่งที่สำคัญที่สุดและข้อแตกต่างคือการทราบว่าคุณควรใช้apt-getเครื่องมือในการติดตั้งแพ็คเกจ ( aptหรือaptitudeไม่ก็ดีเช่นกัน)

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

คุณควรใช้บรรทัดคำสั่งapt-getหรือเครื่องมือapt(ตั้งแต่ 14.04) เพื่อติดตั้งแพ็คเกจ เครื่องมือเหล่านี้ใช้dpkgสำหรับคุณและในเวลาเดียวกันก็มีกลไกการแก้ปัญหาการพึ่งพา

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