ความถนัดเทียบกับ apt-get: เครื่องมือตัวไหนที่แนะนำให้ใช้?


94

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

ดังนั้นฉันสงสัยว่าฉันพลาดอะไรไปหรือเปล่า เครื่องมือใดเหมาะสมที่จะใช้


อูบุนตูที่น่าสนใจไม่ได้ติดตั้งaptitudeโดยค่าเริ่มต้น
หอยทากเครื่องกล

2
ข้อแตกต่างที่สำคัญที่สุดสำหรับฉันคือหลังจากอ่านเอกสารอย่างละเอียดแล้วฉันไม่สามารถหาแหล่งที่มาของแพ็คเกจผ่านความถนัดได้ apt-get source package-nameจะทำ แต่ฉันไม่เคยเห็นความถนัดเทียบเท่ากับมันเลย
EricR

2
สิ่งหนึ่งที่aptitude search package-nameใช้ได้ในความถนัดคือ เป็นอีกหนึ่งaptitude why package-nameยังเป็นประโยชน์ apt-getแต่ไม่ได้อยู่ใน ฉันยังสิ่งที่บรรทัดคำสั่งของเป็นบิตทำความสะอาดขึ้นเมื่อเทียบกับaptitude apt-getแต่เป็นคุณสังเกตเห็นมีแต่ไม่มีaptitude build-dep package-name aptitude source package-name
Anders

คำตอบ:


73

aptitudeและapt-getทำงานเหมือนกันสำหรับหลาย ๆ งาน แต่สำหรับกรณีที่ยุ่งยากที่สุดเช่นการอัพเกรดการกระจาย ( apt-get dist-upgradeเทียบกับaptitude full-upgrade) พวกเขามีกฎที่แตกต่างกัน

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

ฉันเพิ่งมาถึงจุดที่ฉันมักจะตามaptด้วยiและไม่ใช่-เมื่อฉันพิมพ์

Postscriptหมายเหตุว่ากฎที่ใช้ในการapt-getและaptitudeกำลังจะย้ายเป้าหมาย - เช่นฮิวเบิร์ตั้งข้อสังเกตในความคิดเห็นเส้นทางการปรับรุ่นที่แนะนำจาก Debian Lenny ตอนนี้ใช้ไม่ได้apt-get aptitudeสิ่งนี้สะท้อนให้เห็นถึงความจริงที่ว่าการapt-getติดตามสถานะน้อยเกี่ยวกับแพคเกจปัจจุบันกว่าaptitudeและไม่จำเป็นต้องกังวลเกี่ยวกับสถานะ APT ที่ไม่ใช่ "สะอาด" และเนื่องจากapt-getกฎมีความฉลาดกว่าที่เคยเป็น ฉันยังคงใช้และแนะนำaptitudeมากกว่าapt-getแต่เป็นคำแนะนำที่เหมาะสมยิ่งขึ้น


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

20
apt-getจะได้ประโยชน์จากการเป็นหน่วยความจำที่มีประสิทธิภาพมากขึ้น สิ่งนี้ไม่น่าจะสังเกตได้สำหรับผู้ใช้ส่วนใหญ่ ฉันไม่รู้จริง ๆ จนกระทั่งฉันพยายามอัพเกรดแพ็คเกจในการติดตั้ง Debian แบบเต็มด้วย RAM ขนาด 32MB aptitudeจบลงด้วยการ thrashing ในการแลกเปลี่ยนประมาณหนึ่งชั่วโมงต่อการทำงาน; apt-get เร็วขึ้นอย่างมีนัยสำคัญ
intuited

4
เอกสารบีบ Debian อย่างเป็นทางการระบุอย่างชัดเจนว่าจะไม่ใช้aptitudeสำหรับการอัพเกรดจาก Lenny แม้ว่าจะได้รับการสนับสนุนสำหรับการอัพเกรดก่อนหน้านี้ดังนั้นฉันจึงไม่คิดว่ามันจะเป็นเพียงแรงเฉื่อย ...
Hubert Kario

@HubertKario - ใช่แน่นอน ฉันอัพเดตคำตอบแล้ว
Charles Stewart

ฉันสามารถพูดได้ว่าapt-getเกือบจะพ่นข้อผิดพลาด (ประสบการณ์จากเซิร์ฟเวอร์ Ubuntu 12.10, 14.04) ในขณะที่aptitudeสามารถทำอะไรบางอย่างได้จริง ฉันยังไม่เข้าใจว่ายังคงมีแนวโน้มที่ฉลาดได้อย่างไร
Totty.js

20

aptitudeทำให้สะดวกในการแสดงว่าโปรแกรมใดในการค้นหาที่คุณติดตั้งไว้ในระบบ (ด้วยความช่วยเหลือgrep):

aptitude search flash | grep ^i

ที่จริงแล้วการaptitudeค้นหาของมีประสิทธิภาพมากกว่าสิ่งที่คุณได้รับการไพพ์ผ่านgrepเนื่องจากมันรองรับการค้นหาตามบริบท:

เช่นนี้จะค้นหาแพ็คเกจทั้งหมดที่มี 'แฟลช' ในชื่อแพ็คเกจที่ติดตั้ง:

aptitude search '~iflash'

เทียบเท่า "แบบยาว" ของ "แบบสั้น" ~i:

aptitude search '?installed(flash)'

โปรดทราบว่ารูปแบบการค้นหานั้นฟรี (ไม่ได้เก็บไว้) โดยค่าเริ่มต้น คุณต้องใช้รูปแบบจุดยึด ' ^' (จุดเริ่มต้นของสตริง) และ / หรือ ' $' (จุดสิ้นสุดของสตริง)

ในการค้นหาแพ็คเกจทั้งหมดที่ชื่อขึ้นต้นด้วย 'ttf' หรือ 'font'

aptitude search '(^ttf|^font)'

(หมายเหตุ: นี่เป็นวิธีแก้ปัญหาสำหรับบั๊กaptitudeเนื่องจาก regex ที่ถูกต้อง'^(ttf|font)'ไม่ทำงานอย่างถูกต้อง - จะค้นหาแพ็คเกจที่ชื่อขึ้นต้นด้วย 'ttf' หรือมี 'font')

aptitudeคุณสมบัติที่ดีอื่น ๆ:

แสดงแพ็คเกจทั้งหมดด้วย 'เฟิร์มแวร์' ในชื่อของพวกเขาที่ ALSO มี 'ไร้สาย' ในคำอธิบาย:

aptitude search 'firmware ~dwireless'

หรือแบบยาว:

aptitude search '?and(?name(firmware),?description(wireless))'

(หมายเหตุ: ในรูปแบบย่ออาร์กิวเมนต์ที่คั่นด้วยช่องว่างคือ ANDed ภายในเครื่องหมายคำพูดหากส่งผ่านเป็นอาร์กิวเมนต์ argv [] ที่แยกต่างหากบรรทัดคำสั่งจะเป็น ORed)

p   atmel-firmware       - Firmware for Atmel at76c50x wireless networking chips.
p   firmware-atheros     - Binary firmware for Atheros wireless cards
...
p   libertas-firmware    - Firmware for Marvell's libertas wireless chip series
p   zd1211-firmware      - Firmware images for the zd1211rw wireless driver

~U แสดงแพ็คเกจทั้งหมดที่สามารถอัพเกรดได้จากเวอร์ชั่นปัจจุบันด้วยเวอร์ชั่นใหม่:

# aptitude update ; aptitude versions '~U'
Package virtualbox-4.1:            
i   4.1.18-78361~Debian~squeeze                       100
p   4.1.20-80170~Debian~squeeze     <NULL>            500

แสดงแพ็คเกจที่แนะนำ 'gcc-multilib'

$ aptitude search '~DRecommends:gcc-multilib'
i   libc6-dev-i386   - Embedded GNU C Library: 32-bit development libraries for AMD64

อธิบายว่าเหตุใดจึงต้องติดตั้ง 'ฟิวส์ - utils'

$ aptitude why fuse-utils
i   xorg           Depends    xterm | x-terminal-emulator
pi  gnome-terminal Provides   x-terminal-emulator
pi  gnome-terminal Recommends gvfs
pi  gvfs           Depends    libgdu0 (>= 2.29.90)
pi  libgdu0        Depends    udisks (< 1.1.0)
pi  udisks         Recommends ntfsprogs
pi  ntfsprogs      Depends    fuse-utils (> 2.5.0)

(ตัวอย่างนี้แสดงความบ้าคลั่งบางอย่างที่เป็นผลมาจากค่าเริ่มต้นตั้งแต่ Squeeze (?) ของการติดตั้งแพคเกจ "แนะนำ" ทั้งหมดการติดตั้ง gnome-terminal สิ้นสุดลงด้วยการติดตั้ง ntfsprogs และฟิวส์ - utils, egad! ฉันคิดว่าคนส่วนใหญ่ต้องการ ไม่ใช่การรวมระบบ NTFS ในตัวซึ่งเป็นทางเลือกเว้นแต่จะระบุไว้)

ค้นหาแพ็คเกจทั้งหมดที่ให้บริการ "mail-transport-agent":

$ aptitude search '?provides(mail-transport-agent)'
p   citadel-mta          - complete and feature-rich groupware server (mail transport agent)
...
p   nullmailer           - simple relay-only mail transport agent
p   postfix              - High-performance mail transport agent
i   sendmail-bin         - powerful, efficient, and scalable Mail Transport Agent
p   ssmtp                - extremely simple MTA to get mail off the system to a mail hub
p   xmail                - advanced, fast and reliable ESMTP/POP3 mail server

แสดงชื่อแพ็คเกจทั้งหมดที่ติดตั้งซึ่งไม่จำเป็นหรือติดตั้งโดยอัตโนมัติตามการพึ่งพา:

$ aptitude search '~i!(~E|~M)' -F '%p'

น่าเสียดายที่เอกสารนี้ค่อนข้างมีเอกสารไม่ดีและหายาก แต่นี่เป็นข้อมูลอ้างอิงที่ดีที่สุด (จากผู้ดูแล 'ความถนัด')


4
ค้นหาคุณสมบัติได้จากapt-getผ่านapt-cache search NAME
EricR

@EricR จริง แต่ฉันไม่พบความสามารถในการค้นหาเช่นนี้
niceman

4

ตามDebian GNU / Linux คำถามที่พบบ่อยเกี่ยวกับการจัดการบรรจุภัณฑ์ความถนัดมีความซับซ้อนมากกว่าฉลาด - รับและขึ้นอยู่กับเครื่องมือการจัดการแพคเกจที่ซับซ้อนน้อยกว่า apt-get และ dpkg

ดังนั้นสำหรับความต้องการที่ง่ายขึ้นคุณสามารถใช้เครื่องมือที่ง่ายกว่าได้ในขณะที่สำหรับความต้องการที่ซับซ้อนมากขึ้นคุณสามารถวางใจได้กับเครื่องมือที่ซับซ้อนมากขึ้น (apitude)

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


3

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

นี่คือเหตุผลหลักว่าทำไมฉันจึงคิดว่าความถนัดนั้นดีกว่าเสมอ


การอ้างอิงที่จำเป็น แต่นั่นจะเป็นความแตกต่างที่น่าสนใจ
Kzqai

การอ้างอิง: debian-handbook.info/browse/stable/ …
deizel

อันที่จริงไม่ว่าเป็นอย่างดีกับapt-get apt-get autoremove <package-name>ทั้งคู่apt-getและaptitudeทำเครื่องหมายแพ็คเกจที่ติดตั้งอัตโนมัติ
Legionair

แต่aptitudeทำความสะอาดแพ็คเกจรถยนต์ทุกครั้งที่ใช้งาน ในขณะที่apt-getคุณต้องเริ่มต้นที่ชัดเจน
Anders

2

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

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