Aptitude vs apt-get: Manakah alat yang direkomendasikan (alias "benar") untuk digunakan?

94

Beberapa waktu yang lalu saya baca itu aptitudeadalah alat yang disukai untuk instalasi pada sistem berbasis Debian. Tetapi ketika Anda mencari di sekitar tentang cara mengelola sistem berbasis Debian, maka aptitude jarang disebutkan. Kebanyakan orang sepertinya lebih suka apt-get- dan itu bahkan berlaku untuk halaman wiki Debian!

Jadi saya bertanya-tanya apakah saya melewatkan sesuatu. Manakah alat yang tepat untuk digunakan?

Vokuhila-Oliba
sumber
Menariknya Ubuntu tidak lagi menginstal aptitudesecara default.
Mekanik siput
2
Satu-satunya perbedaan paling penting bagi saya, adalah bahwa setelah membaca dokumen secara menyeluruh, saya tidak dapat menemukan cara untuk mendapatkan sumber paket melalui aptitude. apt-get source package-nameakan melakukannya, tapi saya belum melihat ada yang setara dengan bakat
EricR
2
Satu hal yang aptitude search package-namebekerja dalam bakat. Lain aptitude why package-namejuga berguna tetapi tidak di apt-get. Saya juga hal bahwa baris perintah aptitudesedikit dibersihkan dibandingkan dengan apt-get. Tetapi seperti yang Anda perhatikan, ada aptitude build-dep package-nametetapi tidak aptitude source package-name.
Anders

Jawaban:

73

aptitudedan apt-getbekerja sama untuk banyak tugas, tetapi untuk kasus yang paling sulit, seperti peningkatan distribusi ( apt-get dist-upgradevs aptitude full-upgrade), mereka memiliki aturan yang berbeda, dan aturan bakat hampir selalu lebih baik dalam praktik di mana mereka tidak setuju.

Alasan Anda melihat lebih banyak dokumentasi untuk apt-getlebih aptitudesebagian besar inersia: aptitudebelum front end yang direkomendasikan untuk APT untuk semua yang lama, begitu banyak dokumentasi yang ada belum diperbarui, dan ada banyak orang yang mengakui keuntungan dari aptitudeatas apt-gettetapi gunakan secara apt-getrefleks.

Saya baru-baru ini sampai pada titik di mana saya biasanya mengikuti aptdengan idan bukan -ketika saya mengetik.

Postscript Perhatikan bahwa aturan yang digunakan dalam apt-getdan aptitudebergerak target - sebagai catatan Hubert dalam komentar, jalur upgrade yang direkomendasikan dari Debian Lenny sekarang menggunakan apt-get, tidak aptitude. Ini mencerminkan fakta bahwa apt-getmelacak keadaan yang kurang tentang paket saat ini daripada aptitude, dan jadi tidak perlu khawatir tentang keadaan APT tidak menjadi "bersih", dan karena apt-getaturan lebih cerdas daripada sebelumnya. Saya masih menggunakan dan merekomendasikan aptitudelebih apt-get, tetapi adalah rekomendasi lebih bernuansa

Charles Stewart
sumber
6
Selain itu, aptitude memungkinkan untuk menelusuri resolusi konflik yang mungkin dengan mudah, sedangkan dengan apt-get Anda biasanya hanya memiliki satu cara yang mungkin ditampilkan dan Anda menerimanya atau Anda harus melakukan resolusi dengan tangan (fe menggunakan dpkg).
liori
20
apt-getmemang memiliki keuntungan karena lebih hemat memori. Ini tidak mungkin terlihat bagi sebagian besar pengguna; Saya tidak benar-benar menyadarinya sampai saya mencoba untuk meng-upgrade paket pada instalasi penuh Debian dengan 32MB RAM. aptitudeakhirnya meronta-ronta dalam swap selama sekitar satu jam per lari; apt-get secara signifikan lebih cepat.
intuited
4
Dokumentasi pemerasan resmi Debian secara eksplisit menyatakan tidak akan digunakan aptitudeuntuk peningkatan dari Lenny meskipun didukung untuk peningkatan sebelumnya, jadi saya tidak berpikir itu hanya inersia ...
Hubert Kario
@ HubertKario - Ya, memang. Saya telah memperbarui jawaban saya.
Charles Stewart
Saya hanya bisa mengatakan bahwa apt-gethampir selalu melakukan kesalahan (pengalaman dari server Ubuntu 12.10, 14.04) sementara aptitudesebenarnya bisa melakukan sesuatu. Saya masih tidak mengerti bagaimana apt-get masih ada.
Totty.js
20

aptitudemembuatnya nyaman untuk menampilkan program apa dalam pencarian yang telah Anda instal pada sistem (dengan bantuan grep):

aptitude search flash | grep ^i

Sebenarnya, aptitudepencarian jauh lebih kuat daripada apa yang Anda dapatkan melalui piping grep, karena mendukung pencarian kontekstual:

misalnya, ini menemukan semua paket dengan 'flash' di nama paket yang diinstal:

aptitude search '~iflash'

"Bentuk panjang" yang setara dengan "bentuk pendek" ~i:

aptitude search '?installed(flash)'

Perhatikan bahwa pola pencarian gratis (tidak dipelihara) secara default. Untuk menjangkar mereka, Anda perlu menggunakan pola jangkar ' ^' (awal string) dan / atau ' $' (akhir-string).

Untuk menemukan semua paket yang namanya dimulai dengan 'ttf' atau 'font':

aptitude search '(^ttf|^font)'

(Catatan: ini adalah solusi untuk bug di aptitude, karena regex yang benar dari '^(ttf|font)'tidak berfungsi dengan benar - ia menemukan paket yang namanya dimulai dengan 'ttf' atau mengandung 'font'.)

Fitur bagus aptitudelainnya:

Tunjukkan semua paket dengan 'firmware' dalam namanya yang JUGA memiliki 'nirkabel' dalam deskripsi mereka:

aptitude search 'firmware ~dwireless'

atau bentuk panjang:

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

(Catatan: dalam bentuk singkat, argumen yang dibatasi spasi adalah ANDed di dalam tanda kutip; jika dilewatkan sebagai argumen baris perintah terpisah [] argumen mereka adalah 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 memperlihatkan semua paket yang dapat diupgrade dari versi mereka saat ini dengan versi baru:

# 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

Tampilkan paket yang Rekomendasikan 'gcc-multilib'

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

Jelaskan mengapa 'sekering-utils' mungkin perlu diinstal

$ 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)

(Contoh ini menunjukkan beberapa kegilaan yang dihasilkan dari default sejak Squeeze (?) Menginstal semua paket "Recommends". Instalasi gnome-terminal akhirnya menginstal ntfsprogs dan fuse-utils, egad! Saya pikir kebanyakan orang hanya ingin perspektif terminal dan bukan integrasi NTFS bawaan, yang bersifat opsional, kecuali jika ditentukan.)

Temukan semua paket yang menyediakan layanan "agen pengiriman-surat":

$ 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

Tampilkan semua nama paket yang diinstal, yang tidak penting atau diinstal secara otomatis oleh dependensi:

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

Sayangnya, hal ini agak kurang terdokumentasi dan sulit ditemukan, tetapi inilah referensi terbaik (dari pengelola 'bakat').

Chris P.
sumber
4
Fitur pencarian tersedia dari apt-getviaapt-cache search NAME
EricR
@ EricR benar tetapi saya tidak menemukan kemampuan pencarian karena ini
niceman
4

Menurut FAQ Debian GNU / Linux tentang manajemen paket , aptitude lebih kompleks daripada apt-get dan tergantung pada alat manajemen paket yang kurang kompleks, apt-get dan dpkg.

Oleh karena itu, untuk kebutuhan yang lebih sederhana, Anda dapat menggunakan alat yang lebih sederhana, sedangkan untuk kebutuhan yang lebih kompleks, Anda dapat mengandalkan alat yang lebih canggih (kecepatan).

Dikutip dari FAQ Debian: "aptitude menyediakan fungsionalitas dselect dan apt-get, serta banyak fitur tambahan yang tidak ditemukan di kedua program."

pagliuca
sumber
3

aptitude menandai paket yang diinstal karena ketergantungan dengan tag otomatis. Jika Anda sekarang membersihkan atau menghapus paket, aptitude akan secara otomatis menghapus paket yang diinstal secara otomatis yang tidak digunakan lagi di samping paket yang ingin Anda hapus atau hapus.

Ini adalah alasan utama mengapa saya pribadi berpikir bahwa bakat selalu lebih baik daripada apt.

Fleshgrinder
sumber
Kutipan diperlukan, tetapi itu akan menjadi perbedaan yang menarik.
Kzqai
Sebenarnya apt-getmelakukan itu juga, dengan apt-get autoremove <package-name>. Keduanya apt-getdan aptitudetandai paket yang diinstal secara otomatis
Legionair
Tetapi aptitudelakukan pembersihan paket otomatis setiap kali digunakan. Meskipun apt-getAnda harus memulai secara eksplisit.
Anders
2

Tidak ada alat yang tepat, Anda dapat mencampur & mencocokkan keduanya tergantung pada salah satu yang Anda anggap paling nyaman untuk tugas yang dihadapi. aptitude adalah alat yang hebat untuk menguji / menyampingkan pengguna tetapi cenderung kurang dapat diandalkan untuk meningkatkan-upgrade dari satu stabil ke yang berikutnya. Lihat artikel saya apt-get, aptitude, ... pilih manajer paket yang tepat untuk Anda .

Raphaël Hertzog
sumber