gdebi vs dpkg: Як гдеbi автоматично отримує відсутні залежності? Чи можна використовувати gdebi для всіх інших установок пакунків .deb?


15

Нещодавно мені довелося перевстановити свій Ubuntu в Lubuntu 15.04. Тому я шукав установку Skype і отримав цей приємний підручник .

Це було дійсно круто. Він скачав офіційний пакет скайп Деб від сюди

Оскільки я ще не gdebiвстановив, я встановив за допомогоюsudo su -c apt-get install gdebi

Потім встановлюється skype-ubuntu-precise_4.3.0.37-1_i386.debза допомогою команди gdebisudo su -c gdebi skype-ubuntu*4*.deb

Нічого собі, гдеbi зробив для мене все, що робити без проблем, не використовуючи традиційні додатки посібника Apt PPA, що, ймовірно, також порушить мої оновлення системи / установки програмного забезпечення ..

Але якщо я спробую встановити його за допомогою 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

Стільки проблем залежностей. О, я просто гугл GDebi і wikipedia

GDebi - це інструмент APT, який можна використовувати в командному рядку та на графічному інтерфейсі. [44] GDebi може встановити локальний файл .deb через командний рядок, як команда dpkg, але з доступом до сховищ для вирішення залежностей

Моє диво

(1) Як інсталятор .deb встановлює пакети .deb із залежностями без використання посилань Apt PPA, доданих вручну у файли конфігурації?

(2) Чи можу я використовувати ту саму команду gdebi ( sudo su -c gdebi my.deb) для встановлення всіх інших пакетів .deb без додавання Apt PPA або мені потрібно змінити формат так: sudo su -c my*n*.debде n - версія програмного забезпечення тощо?

Будь ласка, поясніть простим словом, щоб я міг його отримати.

Відповіді:


10

Насправді gdebiце лише передовий dpkgдодаток з додатковою функціональністю, що він може перевіряти пакети залежностей у сховищах та може встановлювати їх за одну операцію, в той час як dpkg -iвимагає двох операцій вручну (пізніше apt-get -f install).

Питання 1:

1) Як там робити це? встановити пакети .deb із залежностями без використання посилань Apt PPA, доданих вручну у файли конфігурації?

Будучи dpkgпередовим, він може використовувати всю функціональність dpkg. Оскільки кожен .debфайл пакета містить (за умови, що вони не пошкоджені) метадані про цей деб-файл (наприклад, ім'я пакета, сервіс, залежності тощо), він може легко перевірити залежність цього файлу.

Наприклад, ви можете перевірити метадані файлу .deb, використовуючи dpkg --info package-name.deb

А потім він використовує цю інформацію для побудови карти залежностей та позначення локально доступних файлів .deb як уже завантажених та завантаження інших .debфайлів з Інтернету.

Зверніть увагу, що необхідні додаткові пакети повинні бути доступними (з належною версією) принаймні в одному із сховищ, налаштованих у системі.

Тоді це продовжує як звичайна влучна установка. Різниця в тому, що він не завантажує повторно головний .deb-файл

Питання 2:

(2) Чи можу я використовувати ту саму команду gdebi ( sudo su -c gdebi my.deb) для встановлення всіх інших пакетів дебюту без додавання PPA? чи мені потрібно змінити формат, sudo su -c myn.debде n - версія програмного забезпечення тощо?

PPA існує з причини. Основна причина полягає в тому, що вони надають останні версії пакетів. І цей пакет з вищою версією зазвичай також залежить від більш високих версій підпакетів, які також зазвичай подаються з PPA, а не зі стандартного сховища Ubuntu.

Приклад сценарію:

Припустимо, пакет із іменем mother-package має найвищу версію 2.0в стандартних сховищах Ubuntu, і цей материнський пакет залежить від пакета, який називається дочірнім пакетом версії 2. Також припустимо, що деякі PPA надають материнський пакет версії, 3.0який вимагається child-packageвід 3.0, вони доступні через сховище PPA.

Проблема полягає в тому, що якщо ви зараз завантажите mother-package-3.0.deb зі сторінки сховища і спробуйте встановити його gdebi, ви (або gdebi) не зможете .

Тому що, перевіривши файл mother-package-3.0.deb , gdebiзнав, що цей материнський пакет потребує дочірнього пакету версії 3.0або вище, але він знає лише місце розташування версії 2.0. Він не знає , де для отримання версії 3.0з дитячого-пакета з. Це очікується, тому що ви не сказали системі, де ви отримаєте цей останній пакет матері . Іншими словами, ви не налаштували список сховищ для включення цього PPA.

Отже, очевидна відповідь на це питання - це залежить . Якщо необхідні залежності можна знайти у вже налаштованих сховищах, установка буде успішною . Але якщо ні, то не вдасться встановити цей вищий пакет з версією. Ось чому вам все одно потрібні PPA, і це найпростіший спосіб, не роблячи все це вручну.

Друга частина другого питання не мала для мене сенсу .


5

У мене була така ж проблема з кількома програмами, причому скайп є одним з них, вони залежать від зовнішніх пакетів або бібліотечних файлів, які потрібно встановити вручну.

Для вирішення проблеми я використав:

sudo dpkg -i skype.deb

А потім після того, як буде запропоновано для зовнішніх бібліотек, як у вас є у вашому виході, я набрав:

sudo apt-get install -f

Це завантажило необхідні пакети та встановило skype все самостійно.


2

У кожному пакеті .deb є список залежностей (із сумісним номером версії).

Я не читач Python, але, схоже, вихідний код телефонує, aptщоб отримати цей список. Очевидно, що слід рекурсивно понижуватись, щоб знайти залежність залежностей, але, aptочевидно, це також можна зробити.

Після того, як всі залежності будуть розроблені та розміщені в правильному порядку (деякі залежності потрібно встановити, перш ніж можна встановити інші залежності), aptпросто просять встановити залежності. Потім встановлюється пакет, який був заданий як аргумент Gdebi.

Залежності та цільовий пакет встановлюються в дві операції з двох причин. Спочатку формат влучного виклику для встановлення локального .deb відрізняється від підходящого виклику для встановлення залежностей із сховища. По-друге, розділення викликів гарантує, що залежність буде встановлена ​​перед цільовим пакетом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.