Apa perbedaan nyata antara "apt-get" dan "aptitude"? (Bagaimana dengan "wajig"?)

256

Saya tahu bahwa keduanya apt-getdan aptitudeantarmuka manajemen paket perintah pada Linux berasal Debian, dengan opsi yang berbeda, tapi saya masih agak bingung. Di bawah tenda, bukankah mereka menggunakan sistem APT yang sama?

Mengapa Debian mempertahankan alat paralel ini? (Pertanyaan bonus: apa sih wajig ?)

Kevin Cantu
sumber
Saya tahu ini bukan jawaban yang tepat untuk pertanyaan Anda, tetapi mengapa Anda tidak mencoba sinaptik? sangat user frindly dan tidak mengunduh dan menginstal dependensi secara otomatis. Apakah gnome tidak ada di sistem Anda?
Hemant
Saya bias, tapi saya pikir pertanyaan ini di situs SE Ubuntu mungkin relevan.
David Z
@ Wim karena bagian wajig dari pertanyaan ini, saya memutuskan untuk menggabungkan 244 ke dalam pertanyaan ini alih-alih sebaliknya
xenoterracide
1
Patut dicatat bahwa aptitude dijadwalkan untuk dihapus dari instalasi default pada versi Ubuntu berikutnya (walaupun Anda selalu bisa menginstalnya menggunakan apt-get sesudahnya)
Rob Cowell

Jawaban:

223

Perbedaan yang paling jelas adalah bahwa aptitudemenyediakan antarmuka menu terminal (seperti Synaptic di terminal), sedangkan apt-gettidak.

Mempertimbangkan hanya antarmuka baris perintah dari masing-masing, mereka sangat mirip, dan sebagian besar, itu benar-benar tidak masalah yang mana yang Anda gunakan. Versi terbaru dari keduanya akan melacak paket mana yang diinstal secara manual, dan yang diinstal sebagai dependensi (dan karenanya memenuhi syarat untuk dihapus secara otomatis). Bahkan, saya percaya bahwa baru-baru ini, kedua alat telah diperbarui untuk benar-benar berbagi database yang sama dari paket yang diinstal secara manual vs otomatis, sehingga kasus di mana Anda menginstal sesuatu dengan apt-get dan kemudian aptitude ingin menghapusnya sebagian besar merupakan masa lalu.

Ada beberapa perbedaan kecil:

  • aptitude akan secara otomatis menghapus paket yang memenuhi syarat, sedangkan apt-get memerlukan perintah terpisah untuk melakukannya
  • Perintah untuk pemutakhiran vs dist-pemutakhiran telah dinamai ulang dengan tepat ke nama yang mungkin lebih akurat, yaitu pemutakhiran aman dan pemutakhiran penuh .
  • aptitude sebenarnya menjalankan fungsi tidak hanya apt-get, tetapi juga beberapa alat pendampingnya, seperti apt-cache dan apt-mark.
  • aptitude memiliki sintaks kueri yang sedikit berbeda untuk pencarian (dibandingkan dengan apt-cache)
  • aptitude memiliki perintah mengapa dan mengapa-tidak untuk memberi tahu Anda paket mana yang diinstal secara manual yang mencegah tindakan yang mungkin ingin Anda ambil.
  • Jika tindakan (menginstal, menghapus, memperbarui paket) yang ingin Anda ambil menyebabkan konflik, aptitude dapat menyarankan beberapa resolusi potensial. apt-get hanya akan berkata "Maafkan aku Dave, aku tidak bisa membiarkanmu melakukan itu."

Ada perbedaan kecil lainnya, tetapi itu adalah yang paling penting yang dapat saya pikirkan.

Singkatnya, aptitude lebih baik masuk dalam kategori dengan Synaptic dan paket manajer tingkat tinggi lainnya. Itu kebetulan juga memiliki antarmuka baris perintah yang menyerupai apt-get.

Putaran Bonus: Apa itu wajig?

Ingat bagaimana saya menyebutkan alat "pendamping" seperti apt-cache dan apt-mark? Nah, ada banyak dari mereka, dan jika Anda sering menggunakannya, Anda mungkin tidak ingat yang mana yang memberikan perintah. wajig adalah salah satu solusi untuk masalah itu. Ini pada dasarnya adalah operator, pembungkus di sekitar semua alat itu. Ini juga berlaku sudo bila perlu. Ketika Anda mengatakan wajig install foo, wajig mengatakan "Oke, installdisediakan oleh apt-getdan membutuhkan hak admin," dan itu berjalan sudo apt-get install foo. Ketika Anda mengatakan wajig search foo, wajig mengatakan "Oke, searchdisediakan oleh apt-cachedan tidak memerlukan hak admin," dan itu berjalan apt-cache search foo. Jika Anda menggunakan wajig alih-alih apt-get, apt-mark, apt-cache, dan lainnya, maka Anda tidak akan pernah memiliki masalah ini:

$ apt-get search foo
E: Invalid operation search

Jika Anda ingin tahu apa yang dilakukan wajig di belakang layar, alat apa yang digunakannya untuk mengimplementasikan perintah tertentu, ia memiliki --simulatedan --teachingmode.

Dua perintah wajig yang sering saya gunakan adalah wajig listfiles foodan wajig whichpkg /usr/bin/foo.

Ryan Thompson
sumber
Satu masalah besar yang saya miliki dengan aptitude adalah bahwa dibutuhkan waktu lama untuk mendapatkan penyelesaian tab pada nama paket (misalnya, aptitude install linux-imtab), sementara itu sangat cepat untuk apt-get. Tampaknya ada beberapa caching yang ada di keluarga apt-get yang kurang memiliki bakat.
levesque
12
aptitudejuga memiliki yang luar biasa aptitude searchyang dapat Anda gunakan dengan pola pencarian yang sangat kuat . Kamu punya aptitude reinstall. Anda juga dapat menggunakan antarmuka ncurses (menu terminal) untuk menyiapkan operasi paket yang kompleks seperti pemutakhiran parsial, menghapus satu paket, membekukan yang lain, memutakhirkan yang ini, yang kemudian dapat Anda jalankan dalam satu operasi ... Oh, dan ia memiliki pemecah konflik interaktif .
Totor
3
@ Sapi suci motor, menggunakan antarmuka ncurses aptitude untuk menyiapkan perintah baru saja menjual saya di aptitude untuk selamanya! (Setelah bertahun-tahun berpikir bakat itu layak dilakukan, tetapi mengetikkan apt-get dari memori otot)
TJ Ellis
2
... dan aptitudejuga harus aptitude download package-namemendapatkan file .deb paket!
Totor
2
Itu hanya satu hal yang saya temukan yang tidak ada di aptitudetetapi ada di apt-get, dan itu apt-get --compile source package-name. apt-get build-dep package-nameada tetapi saya pikir itu aptitude build-dep package-namemelakukan pekerjaan yang lebih baik.
Anders
71

Saya sendiri sering bertanya-tanya. Wikipedia menyoroti bahwa fitur pembeda utama adalah bahwa aptitude memiliki antarmuka mode-teks layar penuh (kutukan). Fakta bahwa Anda dapat menggunakan sebagian besar apt-getargumen perintah dengan aptitudesendirinya hanyalah keputusan desain untuk membuatnya lebih mudah bagi apt-getpengguna untuk pindah ke aptitudedan sebaliknya.

Saya tidak pernah menggunakan wajig, tetapi dokumentasi menunjukkan bahwa itu hanya sebuah skrip yang tahu apakah Anda mengirimkannya debfile (saat dijalankan dpkg) atau aptnama paket (saat dijalankan apt-getsebagai gantinya). Bisakah Anda mencobanya dan melihat apakah itu yang dilakukannya?

Tentu saja, perbedaan sebenarnya adalah:

gaurav@fern:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...
gaurav@fern:~$ aptitude moo
There are no Easter Eggs in this program.
Gaurav
sumber
52
Tidak! aptitudememiliki lebih banyak. Anda lupa menaruh -vbendera tanpa akhir moo. (Anda bisa naik ke atas -vvvvvv)
Umang
12
Jangan lupa semua Kekuatan Super Sapi yang penting, yang apt-getmemiliki tetapi aptitudetidak. (Coba --helpkeduanya)
derobert
lmao. itu adalah jawaban yang menyenangkan untuk dibaca, meskipun jawaban @yan jauh lebih rumit;)
Michael Trouw
26

aptitude adalah program yang disukai untuk manajemen paket dari konsol baik untuk instalasi paket dan peningkatan paket atau sistem di Debian.

Berikut ini adalah ikhtisar dari alat ini dan fitur-fiturnya yang memiliki lebih dari apt-get: http://www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude

Jadi, saran saya adalah hanya apt-get install aptitude :)

dsp
sumber
2
The catatan rilis mengatakan apt-get sekarang direkomendasikan atas bakat untuk upgrade untuk memeras.
jrdioko
1
Ya, tetapi hanya untuk itu. Kalau tidak mereka dianggap sama tetapi aptitudememiliki banyak fitur yang lebih canggih, seperti mode pencarian dan layar penuh, daripada apt-get.
Anders
Untuk beberapa alasan digunakan aptitude untuk menginstal emacs dan tanpa melihatnya dihapus gdm! Jadi untuk saat ini akan menggunakan apt-get tetapi saya sangat penasaran dengan bakat.
TomFirth
20

aptitudeingat paket mana yang diminta secara eksplisit dan yang hanya diinstal karena dependensi. Secara otomatis akan menghapus paket yang tidak diminta secara eksplisit ketika mereka tidak lagi diperlukan.

apt-get memperlakukan paket yang diminta secara eksplisit dan dependensinya sama.

Jadi penggunaan yang lebih baik aptitude, ini membantu menjaga sistem Anda bersih.

starblue
sumber
4
Ini memang benar, tetapi saya tahu apt-get saya memiliki apt-get autoremoveperintah untuk menghapus paket yang diinstal hanya sebagai dependensi. Saya tidak tahu kapan fitur ini ditambahkan, tetapi satu situs web menunjukkan itu mungkin terjadi dengan Debian Lenny (Juni 2010).
Gaurav
8
apt-get autoremovetidak menghapus paket yang diinstal hanya sebagai dependensi, ia menghapus dependensi yatim, yang merupakan perbedaan yang halus; itu tidak bisa memastikan apakah paket 'leaf' diinstal dengan niat atau sebagai dependensi sehingga ia meninggalkannya, di mana aptitude akan tahu dan menghapusnya.
pjz
Aku terjual! Ada hal-hal baik lainnya tentang aptitudetetapi ini adalah fitur mematikan.
iconoclast
12

apt-get, serta berbagai alat pengiring, menggunakan memori yang secara signifikan lebih sedikit daripada pemanggilan baris perintah masing-masing aptitude, dan sedikit lebih cepat. Saya benar-benar tidak menyadari hal ini sampai saya mencoba memutakhirkan instalasi debian pada thinkpad pentium tua yang keriput dengan ram sebesar 32MB. Dibutuhkan satu atau dua jam swap-thrashing untuk dijalankan apt-get, yang selesai dengan sukses; aptitudeakan gagal setelah saya pikir periode waktu yang lebih lama.

Perbedaan ini kurang lebih relevan pada apa pun yang menyerupai sistem desktop modern.

intuisi
sumber
9

Membangun pada jawaban @ Gaurav, telur paskah di dua manajer paket cukup lucu !:

siddhartha@siddhartha-dev:~$ apt-get  moo
             (__) 
             (oo) 
       /------\/ 
      / |    ||   
     *  /\---/\ 
        ~~   ~~   
..."Have you mooed today?"...

siddhartha@siddhartha-dev:~$ aptitude  moo
There are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -v moo
There really are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
siddhartha@siddhartha-dev:~$ aptitude -vvv moo
Stop it!
siddhartha@siddhartha-dev:~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
siddhartha@siddhartha-dev:~$ aptitude -vvvvv moo
All right, you win.

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

dan seterusnya.

Siddhartha
sumber
7

Seperti disebutkan menjadi http://pthree.org/2007/08/12/aptitude-vs-apt-get/ , aptitudememiliki antarmuka baris perintah yang jauh lebih mudah digunakan.

Di bawah tenda, bukankah mereka menggunakan sistem APT yang sama? Iya.

Sistem yang mendasarinya bukan hanya adil apt, tetapi dpkg. Sistem ini sama bodohnya dengan RPM, hanya dapat menangani instalasi dan administrasi paket tunggal. Ini melacak file yang diinstal milik paket mana.

aptmenangani unduhan repositori, pelacakan dependensi, dan sebagainya untuk semua paket individu - yang kemudian diinstal menggunakan dpkg. aptitudemelakukan hal yang sama, dengan antarmuka yang berbeda.

vdboor
sumber
6

Baik apt-get maupun aptitude bergantung pada pustaka APT, ya.

Lihat jawaban saya di serverfault.com .

Debian bukan entitas monolitik, ada orang-orang dengan pendapat yang berbeda dan pengelola bakat memutuskan bahwa apt-get memiliki beberapa kekurangan dan ingin membangun sesuatu yang lebih baik dengan bakat. Dia meningkatkan logika untuk menemukan solusi untuk skenario peningkatan yang rumit, menambahkan GUI untuk konsol, dll. Dan ada lebih dari sekadar apt-get dan aptitude, lihat artikel saya apt-get, aptitude, ... pilih manajer paket yang tepat untuk Anda .

Raphaël Hertzog
sumber
6

Saya tidak yakin apakah ini masih berlaku tetapi pengembang Debian Joey Hess yang selalu berdarah selalu menganjurkan bakat atas apt-get. Tentu saja hal-hal berubah ketika perangkat lunak berkembang. Apt-get sekarang menangani dependensi yang lebih baik daripada biasanya. Dari http://lists.debian.org/debian-user/2004/04/msg03138.html

Tanggal: Sel, 20 Apr 2004 22:27:12 -0400 Dari: Joey Hess

Sembilan alasan mengapa Anda harus menggunakan aptitude daripada apt-get atau dselect.

  1. aptitude dapat terlihat seperti apt-get

    Jika Anda menjalankan 'pembaruan aptitude' atau 'upgrade aptitude' atau 'aptitude install', itu terlihat dan berfungsi seperti apt-get, dengan beberapa peningkatan. Jadi tidak ada kurva belajar.

    (Jika Anda pengguna dselect, kurva belajar jelas bukan salah satu masalah Anda.)

  2. paket aptitude secara otomatis menginstal paket

    Berhentilah khawatir tentang pemangkasan perpustakaan yang tidak digunakan dan paket dukungan dari sistem Anda. Jika Anda menggunakan aptitude untuk menginstal semuanya, itu akan melacak paket apa yang ditarik oleh dependensi saja, dan menghapus paket-paket itu ketika mereka tidak lagi diperlukan.

  3. aptitude sanely menangani merekomendasikan

    Kegagalan apt-get yang telah berlangsung lama adalah kurangnya dukungan untuk hubungan Recommends. Yang merupakan masalah karena banyak paket di Debian mengandalkan Rekomendasi untuk menarik perangkat lunak yang rata-rata pengguna gunakan dengan paket tersebut. Ini bukan penyebab masalah yang tidak biasa, meskipun apt-get baru-baru ini menjadi setidaknya menyebutkan paket yang disarankan, mudah untuk melewatkan peringatannya.

    Aptitude mendukung Rekomendasi secara default, dan dapat dikonfigurasi untuk mendukung Saran juga. Itu bahkan mendukung menginstal paket yang direkomendasikan ketika digunakan dalam mode baris perintah.

  4. gunakan aptitude sebagai pengguna normal dan hindari menyemprot sistem Anda

    Mungkin Anda tidak tahu bahwa Anda dapat menjalankan aptitude dalam mode gui sebagai pengguna biasa. Buat perubahan yang ingin Anda coba. Jika Anda benar-benar berantakan, Anda dapat menekan 'q' dan keluar, perubahan Anda tidak akan disimpan. (Aptitude juga memungkinkan Anda menggunakan ctrl-u untuk membatalkan perubahan.) Karena itu berjalan sebagai pengguna biasa, Anda tidak dapat menyemprot sistem Anda sampai Anda memberi tahu aptitude untuk melakukan sesuatu, pada titik itu ia akan meminta Anda untuk kata sandi root Anda.

  5. aptitude memiliki UI yang kuat dan kemampuan pencarian

    Antara peramban kategoris aptitude dan dukungannya yang luar biasa untuk pemfilteran gaya-mutt dan pencarian paket berdasarkan nama, deskripsi, pengelola, dependensi, dll., Anda harus dapat menemukan paket lebih cepat dari sebelumnya menggunakan aptitude.

  6. aptitude memudahkan untuk melacak perangkat lunak yang usang

    Jika Debian berhenti mendistribusikan paket, apt akan membiarkannya di sistem Anda tanpa batas, tanpa peringatan, dan tanpa peningkatan. Aptitude mendaftar paket-paket semacam itu di bagian "Paket Usang dan Dibuat Lokal", sehingga Anda dapat diberi tahu tentang masalah tersebut dan melakukan sesuatu tentangnya.

  7. aptitude memiliki antarmuka ke sistem tugas Debian

    Aptitude memungkinkan Anda menggunakan sistem tugas Debian seperti yang dirancang untuk digunakan. Anda dapat menelusuri tugas-tugas yang tersedia, memilih tugas untuk diinstal, dan kemudian menggali ke dalamnya dan menghapus bagian-bagian dari tugas yang tidak Anda inginkan. apt-get tidak memiliki dukungan untuk tugas, dan aptitude lebih baik bahkan daripada alat tujuan khusus seperti tasksel.

  8. aptitude mendukung banyak sumber

    Jika sources.list Anda dikonfigurasi untuk membuat beberapa versi paket tersedia, aptitude memungkinkan Anda menelusuri untuk melihat versi yang tersedia dan memilih versi non-standar untuk diinstal. Jika sebuah paket rusak tidak stabil, cukup gulung kembali ke versi dalam pengujian.

  9. aptitude mencatat tindakannya

    Aptitude log memaketkannya menginstal, meningkatkan, dan menghapus ke / varlog / aptitude, yang dapat berguna untuk mencari tahu mengapa segala sesuatunya mulai rusak setelah peningkatan kemarin, atau ketika Anda menghapus paket partiticlar.

- Lihat jo pemalu

=================== Ada juga diskusi yang lebih baru dari 2010 di sini https://superuser.com/questions/93437/aptitude-vs-apt-get-get-get-which- is-the-recommended-aka-the-right-tool-to-use di StackExchange.

manselton
sumber