gdebi vs dpkg: как gdebi автоматически получает недостающие зависимости? Могу ли я использовать gdebi для всех других установок пакетов .deb?

Недавно мне довелось переустановить Ubuntu в Lubuntu 15.04. Поэтому я искал установку Skype и получил хороший учебник .

Это было действительно круто. Он загрузил официальный пакет skype deb из здесь

Так как у меня не установлено gdebi, я установил с помощью sudo su -c apt-get install gdebi

Затем установил skype-ubuntu-precise_4.3.0.37-1_i386.deb с помощью команды gdebi sudo su -c gdebi skype-ubuntu*4*.deb

Ух ты, gdebi сделал все для меня, что без хлопот без использования традиционного добавления ссылок 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, и в Википедии

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

Мне интересно

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

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

Пожалуйста, объясните в терминах непрофессионала, чтобы я мог получить это.

13
задан 18.08.2016, 07:12

3 ответа

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

Для устранения проблемы я использовал:

sudo dpkg -i skype.deb

И затем будучи запрошенным внешние библиотеки как Вы имеют в Вашем выводе, я ввел:

sudo apt-get install -f

Это загрузило необходимые пакеты и установило скайп совершенно отдельно.

0
ответ дан 18.04.2019, 00:29

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

Вопрос 1:

1), Как gdebi делают это? установите .deb Пакеты с Зависимостями, не используя Кв. ссылки PPA, добавленные вручную в конфигурационных файлах?

Являющийся dpkg фронтенд, это может использовать всю функциональность dpkg. Начиная с каждого .deb файл пакета содержит (при условии, что они не повреждены) метаданные об этом deb файл (как имя пакета, специалист по обслуживанию, зависимости и т.д.), это может легко проверить зависимость этого файла.

, Например, можно проверить метаданные .deb файла с помощью dpkg --info package-name.deb

, И затем они используют их, информация, чтобы создать карту зависимости и отметить локально доступные .deb файлы как [1 125] уже загрузила , и загрузите другой .deb файлы из Интернета.

Обращают внимание, что, необходимые дополнительные пакеты должны быть доступными (с нужной версией) в по крайней мере одном из репозиториев, которые настроены в системе.

Затем это продолжает любить нормальную способную установку. Различие - это, не повторно загружает основной .deb Вопрос о файле

2:

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

PPAs существует по причине. Главная причина, они обеспечивают последние версии пакетов. И они выше имеющий версию пакет обычно зависит от старших версий подпакетов также, которые также обычно подаются от PPA, не из стандартного репозитория Ubuntu.

Сценарий В качестве примера:

предположим, пакет, названный , родительский пакет имеет последнюю версию [1 111] в Стандарте репозитории Ubuntu и этот , родительский пакет зависит от пакета, названного дочерний пакет из версии 2. Также предположите, некоторый PPA обеспечивает родительский пакет из версии 3.0, которая требует на child-package из [1 114], они оба доступны через тот репозиторий PPA.

проблема, если Вы теперь загрузите mother-package-3.0.deb со страницы репозитория и попытки установить ее с [1 115], то Вы будете (или gdebi) сбой.

, поскольку, проверяя файл mother-package-3.0.deb , gdebi знал, что этот родительский пакет потребности дочерний пакет из версии 3.0 или выше, но Это только знает местоположение версии 2.0. Это не знает, откуда выбрать версию 3.0 [1 135] дочерний пакет . Это ожидается, потому что, Вы не сказали систему, где Вы получаете это последнее родительский пакет . Другими словами, Вы не сделали настроил список хранилищ для включения того PPA.

Так, Очевидный ответ имеет этот вопрос, , Он зависит . , Если необходимые зависимости могут быть найдены в уже настроенных репозиториях, установка будет успешна . Но в противном случае затем это не установит имеющий версию пакет этого highered. Вот почему Вам все еще нужен PPAs, и это - самый легкий путь, вручную не делая всех они.

вторая часть второго вопроса не имела смысла мне .

0
ответ дан 18.04.2019, 00:29

В каждом .deb пакете существует список зависимостей (с числом совместимой версии).

я не читатель Python, но исходный код, кажется, звонит apt для получения того списка. Это, очевидно, получено для рекурсивного происхождения, чтобы найти, что зависимости зависимостей, но apt могут, очевидно, сделать это также.

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

зависимости и целевой пакет установлены в двух операциях по двум причинам. Сначала формат способного вызова для установки локального .deb отличается от способного вызова для установки зависимостей из репозитория. Во-вторых, разделение вызовов гарантирует, что зависимости все установлены перед целевым пакетом.

0
ответ дан 18.04.2019, 00:29

Теги

Похожие вопросы