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 - версия программное обеспечение и т.д?

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

14
задан 17 August 2016 в 21:12

3 ответа

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

Вопрос 1:

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

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

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

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

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

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

Вопрос 2:

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

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

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

Предположим, пакет, названный родительским пакетом, имеет последнюю версию 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.

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

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

9
ответ дан 18 August 2016 в 07:12
  • 1
    Я сделал. Возможно, I' m пропавшие без вести чего-то кроме you' ре ища переменную непрозрачность и что-то это doesn' t требуют псевдонимов. Konsole достигает обоих из тех, но I' m не уверенный в escape-последовательностях. – Matt O. 12 August 2016 в 13:55

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

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

sudo dpkg -i skype.deb

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

sudo apt-get install -f

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

0
ответ дан 17 August 2016 в 21:12

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

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

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

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

0
ответ дан 18 August 2016 в 07:12
  • 1
    Почему выполненный это в терминале? Выполненный /bin/bash -c "sleep 10 && firefox" – Jacob Vlijm 8 August 2016 в 19:05

Другие вопросы по тегам:

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