Apa perbedaan antara apt-get dan aptitude?

56

Saya tidak mengerti mengapa ada dua program berbeda dalam instalasi minimal untuk menginstal perangkat lunak. Bukankah mereka melakukan hal yang sama? Apakah ada perbedaan besar? Saya telah membaca di mana-mana untuk menggunakan aptitude daripada apt-get tetapi saya masih tidak tahu bedanya

Thomaschaaf
sumber

Jawaban:

48

aptitude adalah pembungkus untuk dpkg seperti halnya apt-get / apt-cache, tetapi itu adalah alat satu atap untuk mencari / menginstal / menghapus / query. Beberapa contoh yang mungkin tidak disediakan oleh 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 <[email protected]>
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.
katriel
sumber
10
belum lagi: $ aptitude changelog bash
pgs
Trik lain yang aptitudemengetahui bahwa yang terbaru apttidak dapat dilakukan: aptitude search '~i linux'mencari paket dengan linuxnama atau deskripsi yang diinstal; aptitude search '~o'daftar paket usang (paket terinstal yang tidak lagi disediakan oleh repositori apa pun); aptitude search '!~M ~i'memperlihatkan paket yang tidak ditandai sebagai terinstal secara otomatis; aptitude search '~i lib.*-dev'memperlihatkan pustaka pengembangan yang diinstal dan Anda dapat mengganti searchdengan markautoatau unmarkautomenandai paket-paket ini sebagai yang diinstal secara otomatis atau manual.
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. 
Mikeage
sumber
19

Alat resmi yang saat ini digunakan dalam penginstal Debian dan direkomendasikan dalam catatan rilis adalah aptitude.

Penawaran Aptitude antarmuka kutukan (ketika dijalankan tanpa parameter apapun) dan antarmuka baris perintah yang dapat melakukan hampir segala sesuatu yang apt-cache/ apt-gettidak. Ini juga memiliki penyelesai ketergantungan yang lebih baik yang memungkinkan Anda menjelajah di antara beberapa solusi. Bahkan ketika menggunakan versi baris perintah, Anda dapat berinteraksi dengan solusi yang diusulkan dan memberikan pesanan atau petunjuk tambahan (seperti menginstal atau menghapus paket yang direkomendasikan oleh yang lain).

Tetapi aptitude didasarkan pada libapt library (ini bukan pembungkus langsung dari dpkg) dan karena itu tergantung pada aptpaket sehingga Anda tidak dapat menginstal aptitude tanpa apt-get (yang juga ada dalam paket 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

Untuk mempelajari lebih lanjut tentang bagaimana apt / dpkg / aptitude berinteraksi, Anda dapat memeriksa diagram yang dibuat oleh Daniel Burrows (penulis utama aptitude). Diagram lain menyajikan informasi yang disimpan oleh berbagai alat manajemen paket: Peta file status apt dan dpkg .

Anda juga dapat membaca artikel saya apt-get, aptitude, ... pilih manajer paket yang tepat untuk Anda

Raphaël Hertzog
sumber
7

aptitudeingat paket mana yang Anda instal dengan sengaja dan yang telah diinstal secara otomatis untuk memenuhi dependensi. Setelah penghapusan paket aptitude akan menghapus paket-paket yang diinstal secara otomatis untuk menjaga sistem Anda rapi. apt-gettidak sepintar itu.

aptitudeakan dengan cepat menjadi alat yang sangat diperlukan setelah Anda menggunakan repositori berbeda dengan versi paket yang berbeda. Bayangkan Anda bekerja dengan backports.org atau repositori tidak resmi seperti debian-multimedia.org . Kemudian aptitudeakan menunjukkan (di bagian bawah halaman detail dari paket tertentu) nomor versi yang tersedia dan memungkinkan Anda untuk memilih satu.

Jika Anda masuk ke situasi di mana program bertentangan karena penggunaan repositori tidak resmi seperti itu, Anda akan melihat tampilan "Patah: ..." di bagian atas. Anda dapat mengetik l ~ b (limit / flag / broken) dan hanya mendapatkan daftar paket yang saling bertentangan. Membuatnya lebih mudah untuk menyelesaikan konflik secara manual.

Selanjutnya Anda dapat menggunakan " l" untuk membatasi daftar paket. Bayangkan Anda sedang mencari paket yang dimulai dengan " openoffice " lalu tekan " l" dan ketik " ^openoffice" (ini adalah ekspresi reguler) dan Anda akan melihat hanya paket-paket itu. Pilih "daftar paket tetap" dari menu dan Anda akan mencapai tujuan dengan cepat.

Buku pegangan yang lengkap sangat besar, menawarkan Anda lebih banyak filter dan kemungkinan. Bahkan jika Anda tidak tahu mereka aptitudeadalah pengganti yang berguna apt-getdan Anda dapat menggunakannya dengan parameter umum seperti:

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)
Signum
sumber
2
Sebenarnya, pada Lenny, apt-get juga melacak paket yang diinstal hanya sebagai dependensi dari sesuatu yang Anda minta secara eksplisit. Saya menggunakan aptitude sendiri, tetapi apt-get autoremovesekarang menghapus paket yang diinstal sebagai dependensi dari paket yang sejak itu dihapus.
Telemakus
Saat ini Anda juga dapat menggunakan adil aptdan dapat melakukan campuran hal-hal itu apt-getdan apt-cachedulu. Misalnya, apt search fooakan mencantumkan paket yang berisi foonama atau deskripsi. apt install fooakan menginstal paket yang disebut foojika tersedia dan apt policy fooakan mencantumkan versi yang saat ini diinstal dan semua versi paket yang tersedia foo.
Mikko Rantalainen
The aptitudemasih bisa melakukan lebih dari apttapi polos aptseringkali jauh lebih cepat.
Mikko Rantalainen
5

Selain menyediakan UI konsol yang cantik ketika Anda menjalankan aptitudetanpa argumen, itu menggabungkan berbagai apt-*perintah (dan dselect) menjadi satu utilitas ..

Untuk mencari paket dan menginstalnya, menggunakan apt-get:

apt-cache search somepkg
apt-get install somepkg

..tapi dengan aptitude itu perintah yang sama:

aptitude search somepkg
aptitude install somepkg

aptitudememang memiliki beberapa fitur tambahan, seperti aptitude changelog somepkgdan hal-hal seperti memegang paket (untuk menghentikannya ditingkatkan) - tidak ada yang tidak dapat Anda capai melalui perintah / metode lain, hanya saja lebih menyatu dan menyenangkan untuk digunakan.

dbr
sumber
3
Sayang sekali itu tidak memiliki setara "kebijakan apt-cache".
hayalci
4

seperti yang Anda tahu ketika Anda menginstal paket jika membutuhkan paket lain (dependensi) mereka akan diunduh dan diinstal juga. aptitude track, pada saat instalasi, paket-paket yang datang dengan yang diinstal sehingga ketika Anda menghapus aptitude yang terakhir akan meminta Anda untuk menghapus dependensi "orphaned" lainnya (sekarang tidak digunakan). apt-get akan menyimpannya di sistem Anda secara diam-diam jika Anda menghapus paket "utama".

sepertinya versi terbaru dari apt-get memiliki fungsi serupa: http://www.psychocats.net/ubuntu/aptitude

gpilotino
sumber
aptitudeatau bahkan apttidak menyimpan daftar paket yang diinstal sebagai dependensi untuk paket yang diberikan. Ini hanya melacak jika paket diinstal secara manual atau otomatis. Dan jika suatu paket telah ditandai sebagai terinstal secara otomatis dan tidak ada paket lain yang Tergantung atau Merekomendasikannya, itu akan dihapus dengan apt autoremoveatau aptitude dist-upgrade.
Mikko Rantalainen
3

Perbedaan terbesar adalah bahwa aptitude dirancang untuk bersifat interaktif di mana alat apt lebih cocok untuk pekerjaan scripting. Anda dapat menggunakan yang terakhir, yaitu alat apt, secara interaktif baik-baik saja dengan lebih banyak upaya untuk mendapatkan hasil yang sama dengan yang disediakan oleh aptitude. Jika Anda harus puas hanya dengan satu alat atau yang lain karena suatu alasan maka Anda perlu memutuskan berapa banyak upaya yang ingin Anda lakukan dalam manajemen paket Anda.

pengguna3146
sumber
1

Salah satu keuntungan serius dari bakat adalah kemampuannya untuk menghitung dependensi. Pertama dapat menangani inter-dependensi yang rumit tanpa intervensi sendiri, yang sering gagal. Tetapi jika Anda tidak menyukai solusi yang telah disajikan kepada Anda (dan itu akan memberi skor solusi sendiri untuk menunjukkan seberapa baik menurutnya), Anda dapat memintanya untuk pergi dan mencari solusi lain untuk menyelesaikan konflik.

Ini benar-benar melakukan beberapa manajemen paket yang luar biasa.

Koperasi
sumber
1

Perbedaan terbesar adalah: ketik "aptitude" tanpa parameter apa pun.

Ini memberi Anda antarmuka pengguna berbasis teks, Anda dapat menggunakan keybord untuk mencari / menavigasi dll. Melihat informasi tentang dependensi, membalikkan dependensi, semua versi paket yang tersedia, dan Anda dapat melakukan operasi manajer paket pada mereka dari layar itu.

Anda dapat menekan "g" untuk meninjau perubahan, memodifikasi penambahan dan penghapusan paket jika perlu, dan menerapkan semua operasi yang tertunda.

Cara visual yang hebat dari manajemen paket melalui koneksi ssh atau terminal lama.

hayalci
sumber