Apa perbedaan antara dpkg dan aptitude / apt-get?

125

Ketika menginstal perangkat lunak melalui dpkg -i packageA.deb, apakah dependensi yang diperlukan oleh packageAdiunduh dan diinstal secara otomatis? Apa bedanya dengan menggunakan apt-getatau aptitude?

Aniket Thakur
sumber
Terkait (terutama terkait dependensi): askubuntu.com/q/40779/250300
Melebius

Jawaban:

168

Tidak, dpkghanya menginstal sebuah paket, sehingga melakukan dpkg -i packageName.debhanya akan menginstal paket Deb ini, dan akan memberitahu Anda tentang dependensi yang perlu diinstal, tetapi akan tidak menginstal mereka, dan itu akan tidak mengkonfigurasi packageName.debkarena baik ... dependensi yang tidak ada.

apt-getadalah Sistem Manajemen Paket yang menangani instalasi paket Deb pada distribusi Linux berbasis Debian . Sistem Manajemen Paket adalah seperangkat alat yang akan membantu Anda menginstal, menghapus, dan mengubah paket dengan mudah. Jadi apt-getseperti orang pintar dpkg.

Saya suka memikirkan timeline dengan cara ini (berikut ini hanya saya yang berbicara dari pengalaman. Ini dimaksudkan hanya memberi Anda gambaran tentang semua ini):

  • Mereka datang dengan cara untuk "menyimpan" file aplikasi dalam "paket" sehingga dapat dengan mudah diinstal. Jadi, paket Deb ( .debfile ekstensi ) lahir.

    Sebuah .debfile berisi file yang dibutuhkan oleh sebuah aplikasi untuk menjalankan, serta (saya suka menyebutnya) "meta-data" yang memegang informasi lainnya, seperti nama-nama dependensi kebutuhan aplikasi. Jika Anda ingin melihat konten .debfile, Anda dapat menggunakan perintah dpkg -c packageName.deb, dan jika Anda ingin melihat informasi "meta-data" ini, gunakan perintah dpkg -I pacakgeName.deb(dan jika Anda hanya ingin melihat dependensi, lakukan dpkg -I packageName.deb | grep Depends).

  • Mereka membutuhkan alat untuk menginstal .debfile - file ini , jadi mereka datang dengan dpkgalat itu. Alat ini, bagaimanapun, hanya akan menginstal .debfile, tetapi tidak akan menginstal dependensi karena tidak memiliki file-file itu dan tidak memiliki akses ke "repositori" untuk menarik dependensi dari.

  • Kemudian, mereka datang dengan apt-get, yang mengotomatiskan masalah pada poin sebelumnya. Di bawah kap, apt-getpada dasarnya dpkg(saya suka menganggapnya sebagai apt-getfront-end untuk dpkg), tetapi yang pintar yang akan mencari dependensi dan menginstalnya. Ia bahkan melihat dependensi yang saat ini diinstal dan menentukan yang tidak digunakan oleh paket lain, dan akan memberi tahu Anda bahwa Anda dapat menghapusnya.

aptitudelalu datang. Ini menggunakan perpustakaan apt-getmenggunakan dan benar-benar memiliki UI interaktif (antarmuka pengguna). Jika Anda ingin melihat UI ini, cukup ketikkan aptitudeterminal. Itu aptitude . Ini memanfaatkan perpustakaan untuk memberikan lebih banyak opsi dan fasilitas daripada apt-get. Sebagai contoh, aptitudesecara otomatis akan menghapus paket yang memenuhi syarat, sementara apt-getmemerlukan perintah terpisah untuk melakukannya. Tapi, pada akhirnya, melakukan sudo aptitude install packageName.debharus setidaknya sama dengan sudo apt-get install packageName.deb. Mungkin ada perbedaan halus di sana-sini yang tidak saya ketahui, tetapi keduanya akan mencari dependensi dan melakukan semua hal itu. Anda dapat membaca jawabannya di sini untuk informasi lebih lanjut tentang perbedaan antara aptitudedan apt-get.

Juga, aptitudetidak memiliki Kekuatan Sapi Super.

EDIT: Rupanya, itu benar. aptitude -v[v[v[v[v]]]] moo.

aptitudemungkin tidak diinstal secara default. Untuk menginstalnya, lakukan sudo apt-get install aptitudeatau klik ini: aptitudeInstal bakat .


Tambahan

Informasi berikut ini tidak benar-benar langsung menjawab " Apa perbedaan antara dpkg dan aptitude / apt-get? " Tetapi itu berkontribusi pada gambaran besar.


Dari Carlos Campderrós ' komentar di bawah ini :

gdebiadalah alat lain yang merupakan jenis campuran antara apt-getdan aptitude. Ketika Anda menggunakannya untuk menginstal .debpaket ( gdebi packageName.deb), itu akan mengidentifikasi dependensi yang hilang, menginstalnya menggunakan apt-get, dan akhirnya menginstal dan mengkonfigurasi paket menggunakan dpkg. Bahkan memiliki GUI yang sederhana dan rapi yang memberi Anda informasi tentang .debpaket, file yang disertakan dalam paket, dan dependensi apa yang perlu diinstal. Untuk melihat GUI ini, Anda harus melakukannya gdebi-gtk packageName.deb. Anda dapat gdebimencoba dengan menginstalnya dengan sudo apt-get install gdebiatau klik ini: gdebiInstal gdebi .


Saya tidak ingin membingungkan siapa pun, tetapi hanya untuk memberi Anda bagian lain dari gambar, ada format paket Linux populer lainnya yang disebut RPM, dan file-nya memiliki .rpmekstensi. Format paket ini digunakan pada distribusi Linux berbasis RPM (seperti Red Hat, CentOS, dan Fedora). Mereka menggunakan perintah rpmuntuk menginstal paket, dan yummerupakan front-end untuk itu, itu yang pintar. Jadi .rpmfile mereka adalah file kita .deb, rpmalat mereka adalah dpkgalat kita , dan mereka yumadalah milik kita apt-get.

Dari komentar Paddy Landau di bawah ini :

alienadalah alat yang mengkonversi antara .rpmdan .debpaket. Jadi, jika Anda pernah jatuh ke dalam situasi di mana Anda memiliki .rpmpaket, dan Anda ingin menginstal di Ubuntu Anda (atau distro berbasis Debian lainnya), Anda dapat menggunakan perintah alien rpm_packageName.rpmuntuk mengubahnya .deb, dan kemudian menginstalnya menggunakan dpkg. Anda dapat melakukan sebaliknya (konversi .debke .rpm) menggunakan alien -r packageName.deb.

Alaa Ali
sumber
5
Itu sangat berguna dan persis apa yang saya cari. Tx!
Aniket Thakur
4
Anda juga dapat menggunakan gdebi( apt-get install gdebi-core) yang bercampur apt-get/ aptitudedengan dpkg. Anda memanggilnya gdebi some_package.debdan akan menganalisis dependensinya, menelepon apt-getuntuk menginstal yang hilang dan ketika semua dependensi terpenuhi, kemudian menelepon dpkguntuk akhirnya menginstal paket Anda.
Carlos Campderrós
2
@Alaa Di Bawah Ekstra , Anda juga dapat menyebutkan bahwa alienpaket konversi antara .rpmdan .deb. Ini berguna untuk paket yang tersedia untuk RPM tetapi tidak untuk DEB (atau sebaliknya). Misalnya, alien packagename.rpmuntuk membuatnya dapat digunakan untuk Ubuntu.
Paddy Landau
1
@AlaaAli aptitudebukan frontend untuk apt-get. Kedua program tersebut merupakan antarmuka untuk libapt-pkgperpustakaan.
Eliah Kagan
1
@edwardtorvalds AskUbuntu adalah situs tanya jawab. Cari jawaban Anda di sini di situs dari ribuan pertanyaan lama, dan jika Anda tidak menemukannya, ajukan pertanyaan Anda sendiri, orang-orang yang lebih berpengalaman daripada saya semoga juga akan menjawab.
Alaa Ali
5

apt-get

Manajemen paket melalui apt-getmenjalankan bergandengan tangan dengan /etc/apt/sources.listfile.

apt-get install <package_name> menginstal paket baru ke komputer Anda.

apt-get build-dep <package_name> Perintah ini mencari repositori dan menginstal dependensi build untuk. Jika paket tidak ada di repositori, paket akan mengembalikan kesalahan.

apt-get install <package1_name> <package2_name> <package3_name> apt-get memungkinkan instalasi banyak paket. pisahkan paket dengan spasi.

auto-apt run <command_string> Ketika dipanggil, perintah auto-apt secara otomatis menginstal paket saat akses file hilang. Jika suatu program mencoba mengakses file yang diketahui milik dalam paket yang dihapus, auto-apt akan menginstal paket itu menggunakan apt-get. Fitur ini membutuhkan apt dan sudo agar berfungsi.

Kunjungi halaman instruksi apt-get

bakat

aptitudemenyediakan fungsionalitas dselectdan apt-getjuga banyak fitur tambahan yang tidak ditemukan di kedua program.

aptitude memiliki cangkangnya sendiri yang mengaktifkan keyboard atau mouse dan berjalan di jendela terminal

aptitude build-dep <package> - Instal dependensi build dari paket - yang berarti paket yang dibutuhkan untuk mengkompilasi (atau membangun ) paket sumbernya. Misalnya, banyak paket yang perlu debhelperatau autotoolsakan dibangun, tetapi tidak perlu dijalankan.

Kunjungi halaman instruksi aptitude

dpkg

adalah alat untuk menginstal, membangun, menghapus, dan mengelola paket Debian. tautan

dpkg -i <package.deb>menginstal paket Debian ke komputer Anda. Itu tidak menginstal dependensi sejauh yang saya bisa tahu dari file bantuan.

Untuk detail, ketikkan dpkg --helpjendela terminal.

Panduan

panduan untuk manajemen file dapat ditemukan di sini

SimplySimon
sumber
0

Saya pikir hal yang paling penting dan juga perbedaan yang perlu diperhatikan adalah Anda harus menggunakan apt-getalat untuk menginstal paket. ( aptatau aptitudebaik-baik saja juga).

Ini karena dpkgdimaksudkan untuk menginstal paket tanpa menginstal paket dependen. Karena itu hanya menginstal paket dengan dpkg, dapat menyebabkan masalah kemudian di mana resolusi dependensi dapat berakhir dengan sistem yang rusak.

Anda harus menggunakan baris perintah apt-getatau apt(sejak 14.04) alat untuk menginstal paket. Alat-alat ini digunakan dpkguntuk Anda dan pada saat yang sama memiliki mekanisme resolusi ketergantungan di dalamnya.

prosti
sumber