apt-get และ aptitude ต่างกันอย่างไร


56

ฉันไม่เข้าใจว่าทำไมมีสองโปรแกรมที่แตกต่างกันในการติดตั้งขั้นต่ำเพื่อติดตั้งซอฟต์แวร์ พวกเขาไม่ทำสิ่งเดียวกันหรือ มีความแตกต่างใหญ่หรือไม่? ฉันได้อ่านทุกที่เพื่อใช้ความถนัดมากกว่า apt-get แต่ฉันก็ยังไม่รู้ความแตกต่าง

คำตอบ:


48

aptitude เป็น wrapper สำหรับ dpkg เช่นเดียวกับ apt-get / apt-cache แต่เป็นเครื่องมือครบวงจรสำหรับการค้นหา / ติดตั้ง / ลบ / ค้นหา ตัวอย่างเล็ก ๆ น้อย ๆ ที่ apt อาจไม่ได้ให้:

$ aptitude why libc6
i   w64codecs Depends libc6 (>= 2.3.2)
$ aptitude why-not libc6
Unable to find a reason to remove libc6.

$ aptitude show libc6
Package: libc6
State: installed
Automatically installed: no
Version: 2.9-4ubuntu6
Priority: required
Section: libs
Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uncompressed Size: 12.1M
Depends: libgcc1, findutils (>= 4.4.0-2ubuntu2)
Suggests: locales, glibc-doc
Conflicts: libterm-readline-gnu-perl (< 1.15-2), 
tzdata (< 2007k-1), tzdata-etch, nscd (< 2.9)
Replaces: belocs-locales-bin
Provides: glibc-2.9-1
Description: GNU C Library: Shared libraries
 Contains the standard libraries that are used by nearly all programs 
 on the system. This package includes shared versions of the standard 
 C library and the standard math library, as well as many others.

10
ไม่ต้องพูดถึง: $ ทุบตีความถนัดการเปลี่ยนแปลง
pgs

เทคนิคอื่น ๆ ที่aptitudeรู้ว่าแม้ล่าสุดaptไม่สามารถทำได้: aptitude search '~i linux'ค้นหาแพ็คเกจด้วยlinuxในชื่อหรือคำอธิบายที่ติดตั้ง aptitude search '~o'แสดงรายการแพ็กเกจที่ล้าสมัย (แพ็กเกจที่ติดตั้งซึ่งไม่ได้ให้บริการโดยที่เก็บใด ๆ อีกต่อไป); aptitude search '!~M ~i'แสดงแพ็คเกจที่ไม่ได้ทำเครื่องหมายว่าติดตั้งโดยอัตโนมัติ aptitude search '~i lib.*-dev'แสดงไลบรารีการพัฒนาที่ติดตั้งและคุณสามารถแทนที่searchด้วยmarkautoหรือunmarkautoเพื่อทำเครื่องหมายแพ็คเกจเหล่านี้ว่าติดตั้งโดยอัตโนมัติหรือด้วยตนเอง
Mikko Rantalainen

44
mikeage@linode ~$ aptitude -h | tail -n 1
              This aptitude does not have Super Cow Powers.
mikeage@linode ~$ apt-get -h | tail -n 1
                   This APT has Super Cow Powers.
mikeage@linode ~$ aptitude moo
    There are no Easter Eggs in this program.
mikeage@linode ~$ apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...
mikeage@linode ~$ aptitude -v moo
There really are no Easter Eggs in this program.
mikeage@linode ~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
mikeage@linode ~$ aptitude -vvv moo
Stop it!
mikeage@linode ~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
mikeage@linode ~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
mikeage@linode ~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course. 

19

เครื่องมืออย่างเป็นทางการที่ใช้ในปัจจุบันภายในติดตั้ง Debian และแนะนำในบันทึกประจำรุ่นaptitudeคือ

Aptitude นำเสนออินเตอร์เฟส curses (เมื่อรันโดยไม่มีพารามิเตอร์ใด ๆ ) และอินเตอร์เฟสบรรทัดคำสั่งที่สามารถทำเกือบทุกอย่างที่apt-cache/ apt-getทำได้ นอกจากนี้ยังมีตัวแก้ไขการพึ่งพาที่ดีกว่าซึ่งช่วยให้คุณสามารถเรียกดูระหว่างโซลูชันต่างๆ แม้เมื่อใช้เวอร์ชันบรรทัดคำสั่งคุณสามารถโต้ตอบกับโซลูชันที่เสนอและให้คำสั่งซื้อเพิ่มเติมหรือคำแนะนำ (เช่นการติดตั้งหรือลบแพ็กเกจที่แนะนำโดยอีกอันหนึ่ง)

แต่ความถนัดจะขึ้นอยู่กับไลบรารี libapt (ไม่ใช่ wrapper โดยตรงของ dpkg) และขึ้นอยู่กับaptแพ็กเกจดังนั้นคุณจะไม่สามารถติดตั้ง aptitude ได้โดยไม่ต้อง apt-get (ซึ่งอยู่ในแพ็คเกจ apt ด้วย)

$ dpkg --status aptitude| grep Depends
Depends: libapt-pkg-libc6.9-6-4.7, [...]
$ dpkg --status apt|grep Provides
Provides: libapt-pkg-libc6.9-6-4.7
$ dpkg --search /usr/lib/libapt-pkg-libc6.9-6.so.4.7 /usr/bin/apt-get
apt: /usr/lib/libapt-pkg-libc6.9-6.so.4.7
apt: /usr/bin/apt-get

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการโต้ตอบ apt / dpkg / aptitude คุณสามารถตรวจสอบไดอะแกรมของ Daniel Burrows (ผู้เขียนหลักของ aptitude) แผนภาพอีกนำเสนอข้อมูลที่เก็บไว้โดยเครื่องมือในการจัดการแพคเกจต่างๆ: แผนที่ของไฟล์รัฐฉลาดและ dpkg

คุณยังสามารถอ่านบทความของฉันapt-get, aptitude, …เลือกผู้จัดการแพ็คเกจที่เหมาะสมสำหรับคุณ


7

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

aptitudeจะกลายเป็นเครื่องมือที่ขาดไม่ได้อย่างรวดเร็วเมื่อคุณใช้แหล่งเก็บข้อมูลที่แตกต่างกับแพ็คเกจรุ่นต่าง ๆ ลองนึกภาพคุณกำลังทำงานกับbackports.orgหรือไม่เป็นทางการที่เก็บเช่นdebian-multimedia.org จากนั้นaptitudeจะแสดง (ที่ด้านล่างของหน้ารายละเอียดของแพคเกจที่แน่นอน) หมายเลขรุ่นที่มีอยู่และช่วยให้คุณสามารถเลือกหนึ่ง

หากคุณเข้าสู่สถานการณ์ที่โปรแกรมขัดแย้งเนื่องจากการใช้ที่เก็บอย่างไม่เป็นทางการดังกล่าวคุณจะเห็นจอแสดงผล"แตก: ... "ที่ด้านบน คุณสามารถพิมพ์l ~ b (จำกัด / ตั้งค่าสถานะ / แตก) และรับรายการแพคเกจที่ขัดแย้งกัน ทำให้ง่ายขึ้นในการแก้ไขข้อขัดแย้งด้วยตนเอง

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

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

aptitude install ... (install or upgrade a package)
aptitude remove ... (remove the binary portions of a package but preserve your /etc configuration)
aptitude purge ... (remove the package completely including your configuration)

2
ที่จริงแล้วในฐานะของ Lenny apt-get จะติดตามแพ็กเกจที่ติดตั้งเป็นการอ้างอิงถึงสิ่งที่คุณขออย่างชัดเจนเท่านั้น ฉันใช้ความถนัดตัวเอง แต่apt-get autoremoveตอนนี้ลบแพ็กเกจที่ติดตั้งเป็นการอ้างอิงของแพ็กเกจที่ถูกลบออกไป
Telemachus

nowdays คุณยังสามารถใช้เพียงaptและมันสามารถทำส่วนผสมของสิ่งที่apt-getและapt-cacheใช้ในการทำ ตัวอย่างเช่นapt search fooจะแสดงรายการแพคเกจที่มีfooชื่อหรือคำอธิบาย apt install fooจะติดตั้งแพคเกจที่เรียกว่าfooถ้ามีและapt policy fooจะแสดงรายการเวอร์ชันที่ติดตั้งอยู่ในปัจจุบันและแพ็คเกจที่มีfooอยู่ทั้งหมด
Mikko Rantalainen

aptitudeยังคงสามารถทำอะไรได้มากกว่าaptแต่ธรรมดาaptมักจะได้เร็วขึ้นมาก
Mikko Rantalainen

5

นอกเหนือจากการจัดเตรียม UI คอนโซลที่สวยเมื่อคุณเรียกใช้aptitudeโดยไม่มีอาร์กิวเมนต์มันรวมapt-*คำสั่งต่าง ๆ(และdselect) ไว้ในยูทิลิตี้เดียว ..

วิธีค้นหาแพ็คเกจและติดตั้งโดยใช้ apt-get:

apt-cache search somepkg
apt-get install somepkg

.. แต่ด้วยความถนัดมันเป็นคำสั่งเดียวกัน:

aptitude search somepkg
aptitude install somepkg

aptitudeมีคุณสมบัติเพิ่มเติมบางอย่างเช่นaptitude changelog somepkgและสิ่งต่าง ๆ เช่นแพคเกจการถือครอง (เพื่อหยุดการอัปเกรด) - ไม่มีสิ่งใดที่คุณไม่สามารถทำได้ด้วยคำสั่ง / วิธีการอื่น ๆ มันเป็นอันหนึ่งอันเดียวกันและดีกว่าที่จะใช้


3
น่าเสียดายที่ไม่มีนโยบาย "apt-cache" ที่เทียบเท่า
hayalci

4

อย่างที่คุณทราบเมื่อคุณติดตั้งแพคเกจหากต้องการแพ็คเกจอื่น ๆ (การอ้างอิง) พวกเขาจะถูกดาวน์โหลดและติดตั้งด้วย แทร็ก aptitude ในขณะที่ติดตั้งแพ็กเกจที่มาพร้อมกับแพ็กเกจที่ติดตั้งดังนั้นเมื่อคุณลบความถนัดหลังจะขอให้คุณลบการอ้างอิงอื่น (ตอนนี้ไม่ได้ใช้) "orphaned" apt-get จะเก็บมันไว้ในระบบของคุณอย่างเงียบ ๆ หากคุณลบแพ็คเกจ "main" ออก

ดูเหมือนว่า apt-get รุ่นล่าสุดมีฟังก์ชั่นที่คล้ายกัน: http://www.psychocats.net/ubuntu/aptitude


aptitudeหรือaptในความเป็นจริงไม่ได้เก็บรายการแพคเกจที่ติดตั้งเป็นการอ้างอิงสำหรับแพ็คเกจที่กำหนด มันจะติดตามว่ามีการติดตั้งแพคเกจด้วยตนเองหรือโดยอัตโนมัติ และถ้าแพคเกจที่ได้รับการทำเครื่องหมายว่าเป็นที่ติดตั้งโดยอัตโนมัติและไม่แพคเกจอื่น ๆ ขึ้นอยู่หรือแนะนำมันจะถูกลบออกด้วยหรือapt autoremove aptitude dist-upgrade
Mikko Rantalainen

3

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


1

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

มันจะทำการจัดการแพ็คเกจที่ยอดเยี่ยมจริงๆ


1

ข้อแตกต่างที่ใหญ่ที่สุดคือพิมพ์ "ความถนัด" โดยไม่มีพารามิเตอร์ใด ๆ

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

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

วิธีการจัดการแพ็คเกจด้วยภาพที่ยอดเยี่ยมผ่านการเชื่อมต่อ ssh หรือเทอร์มินัลเก่าธรรมดา

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