gdebi vs dpkg: Bagaimana gdebi secara otomatis kehilangan ketergantungan? Bisakah saya menggunakan gdebi untuk semua instalasi lain dari paket .deb?

15

Baru-baru ini saya kebetulan menginstal ulang Ubuntu saya ke Lubuntu 15.04. Jadi saya mencari instalasi Skype dan mendapatkan tutorial yang bagus ini .

Itu sangat keren. Ini mengunduh paket deb skype resmi dari sini

Karena saya belum gdebimenginstal, saya menginstal menggunakansudo su -c apt-get install gdebi

Kemudian dipasang skype-ubuntu-precise_4.3.0.37-1_i386.debdengan menggunakan perintah gdebisudo su -c gdebi skype-ubuntu*4*.deb

Wow, gdebi melakukan segalanya untuk saya, hal yang merepotkan tanpa menggunakan tambahan tautan manual PPA Apt tradisional yang mungkin juga akan merusak pembaruan sistem / instalasi perangkat lunak saya ..

Tetapi jika saya mencoba menginstalnya menggunakan dpkg -i

dpkg -i skype-ubuntu-precise_4.3.0.37-1_i386.deb
Selecting previously unselected package skype.
(Reading database ... 86449 files and directories currently installed.)
Preparing to unpack skype-ubuntu-precise_4.3.0.37-1_i386.deb ...
Unpacking skype (4.3.0.37-1) ...
dpkg: dependency problems prevent configuration of skype:
 skype depends on libc6 (>= 2.3.6-6~).
 skype depends on libc6 (>= 2.7).
 skype depends on libgcc1 (>= 1:4.1.1).
 skype depends on libqt4-dbus (>= 4:4.5.3).
 skype depends on libqt4-network (>= 4:4.8.0).
 skype depends on libqt4-xml (>= 4:4.5.3).
 skype depends on libqtcore4 (>= 4:4.7.0~beta1).
 skype depends on libqtgui4 (>= 4:4.8.0).
 skype depends on libqtwebkit4 (>= 2.2~2011week36).
 skype depends on libstdc++6 (>= 4.2.1).
 skype depends on libx11-6.
 skype depends on libxext6.
 skype depends on libxss1.
 skype depends on libxv1.
 skype depends on libssl1.0.0.
 skype depends on libpulse0.
 skype depends on libasound2-plugins.

dpkg: error processing package skype (--install):
 dependency problems - leaving unconfigured
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for mime-support (3.55ubuntu1.1) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for dbus (1.8.8-1ubuntu2.1) ...
Errors were encountered while processing:
 skype

Begitu banyak masalah ketergantungan. Oh, aku baru saja memiliki GDebi dan wikipedia di Google

GDebi adalah alat APT yang dapat digunakan dalam command-line dan pada GUI. [44] GDebi dapat menginstal file .deb lokal melalui baris perintah seperti perintah dpkg, tetapi dengan akses ke repositori untuk menyelesaikan dependensi

Keajaiban saya adalah

(1) Bagaimana gdebi menginstal Paket .deb dengan Ketergantungan tanpa menggunakan tautan PPA Apt yang ditambahkan secara manual dalam file konfigurasi?

(2) Dapatkah saya menggunakan perintah gdebi yang sama ( sudo su -c gdebi my.deb) untuk menginstal semua paket .deb lainnya tanpa menambahkan Apt PPA atau apakah saya harus mengubah format seperti: di sudo su -c my*n*.debmana n adalah versi perangkat lunak, dll?

Tolong jelaskan dalam istilah awam sehingga saya bisa mendapatkannya.

pengguna879
sumber

Jawaban:

10

Sebenarnya gdebihanya front-end dpkgdengan fungsionalitas tambahan yang dapat memeriksa paket dependensi di repositori dan dapat menginstalnya dalam satu operasi, sementara dpkg -imemerlukan dua operasi secara manual (nantinya apt-get -f install).

Pertanyaan 1:

1) Bagaimana gdebi melakukan ini? instal Paket deb dengan Dependensi tanpa menggunakan tautan PPA Apt yang ditambahkan secara manual dalam file konfigurasi?

Menjadi dpkgfront-end, itu dapat menggunakan semua fungsi dpkg. Karena setiap .debfile paket berisi (asalkan mereka tidak rusak) metadata tentang file deb itu (seperti nama paket, pengelola, dependensi dll), ia dapat dengan mudah memeriksa ketergantungan file ini.

Misalnya, Anda dapat memeriksa metadata file deb menggunakan dpkg --info package-name.deb

Dan kemudian menggunakan informasi ini untuk membangun peta ketergantungan dan menandai file .deb yang tersedia secara lokal sebagai sudah diunduh dan mengunduh .debfile lain dari Internet.

Perhatikan bahwa, paket-paket tambahan yang diperlukan harus tersedia (dengan versi yang tepat) di setidaknya satu dari repositori, yang dikonfigurasi dalam sistem.

Kemudian berlanjut seperti instalasi apt yang normal. Perbedaannya adalah tidak mengunduh ulang file .deb utama

Pertanyaan 2:

(2) Dapatkah saya menggunakan perintah gdebi yang sama ( sudo su -c gdebi my.deb) untuk menginstal semua paket deb lainnya tanpa menambahkan PPA? atau apakah saya harus mengubah format di sudo su -c myn.debmana n adalah versi perangkat lunak dll?

PPA ada karena suatu alasan. Alasan utamanya adalah mereka menyediakan paket versi terbaru. Dan paket berversi yang lebih tinggi ini biasanya tergantung pada versi yang lebih tinggi dari sub-paket juga, yang juga biasanya dilayani dari PPA, bukan dari repositori standar Ubuntu.

Skenario Contoh:

Misalkan, sebuah paket bernama paket ibu memiliki versi tertinggi 2.0dalam repositori Standar Ubuntu, dan paket ibu ini bergantung pada paket yang bernama paket anak- versi 2. Juga anggaplah, beberapa PPA menyediakan paket ibu- versi 3.0yang membutuhkan child-packagedari 3.0, keduanya tersedia melalui repositori PPA itu.

Masalahnya adalah, jika sekarang Anda mengunduh mother-package-3.0.deb dari halaman repositori dan mencoba menginstalnya gdebi, Anda akan (atau gdebi) gagal.

Karena, memeriksa file mother-package-3.0.deb , gdebitahu bahwa paket-ibu ini membutuhkan paket anak- versi 3.0atau lebih tinggi, tetapi hanya mengetahui lokasi versi 2.0. Ia tidak tahu di mana untuk mengambil versi 3.0dari anak-paket dari. Ini diharapkan karena, Anda tidak memberi tahu sistem di mana Anda mendapatkan paket-ibu terbaru ini . Dengan kata lain, Anda tidak mengonfigurasi daftar repositori untuk memasukkan PPA itu.

Jadi, jawaban yang jelas dari pertanyaan ini adalah tergantung . Jika dependensi yang diperlukan dapat ditemukan di repositori yang sudah dikonfigurasi, instalasi akan berhasil . Tetapi jika tidak, maka itu akan gagal untuk menginstal paket berversi yang lebih tinggi ini. Itu sebabnya Anda masih membutuhkan PPA dan itu adalah cara termudah tanpa melakukan semua ini secara manual.

Bagian kedua dari pertanyaan kedua tidak masuk akal bagi saya .

Anwar
sumber
5

Saya memiliki masalah yang sama dengan beberapa aplikasi, dengan skype menjadi salah satunya, ini tergantung pada paket eksternal atau file perpustakaan yang perlu diinstal secara manual.

Untuk memperbaiki masalah yang saya gunakan:

sudo dpkg -i skype.deb

Dan kemudian setelah diminta untuk perpustakaan eksternal seperti yang Anda miliki di output Anda, saya mengetik:

sudo apt-get install -f

Ini mengunduh paket yang diperlukan dan menginstal skype dengan sendirinya.

Moithil Biswas
sumber
2

Di setiap paket deb. Ada daftar dependensi (dengan nomor versi yang kompatibel).

Saya bukan pembaca Python tetapi kode sumber tampaknya membuat panggilan aptuntuk mendapatkan daftar itu. Jelas harus turun secara rekursif untuk menemukan dependensi dari dependensi tetapi aptjelas dapat melakukannya juga.

Setelah semua dependensi bekerja dan ditempatkan dalam urutan yang benar (beberapa dependensi perlu diinstal sebelum dependensi lain dapat diinstal), aptcukup diminta untuk menginstal dependensi. Kemudian paket yang diberikan sebagai argumen ke Gdebi diinstal.

Ketergantungan dan paket target dipasang dalam dua operasi karena dua alasan. Pertama format panggilan apt untuk menginstal. Deb lokal berbeda dari panggilan apt untuk menginstal dependensi dari repositori. Kedua, memisahkan panggilan memastikan semua dependensi diinstal sebelum paket target.

james
sumber