Как позволить `dpkg -i` установить для меня зависимости?

Скажем, у меня есть foo-1.2.3.deb, который зависит от perl и python, однако, команда запуска:

dpkg -i ./foo-1.2.3.deb

не будет устанавливать эти зависимости. Поэтому я должен apt-get install perl python от руки.

Как заставить dpkg -i автоматически установить эти зависимости для меня?

459
задан 20 March 2014 в 04:21

11 ответов

После использования dpkg, выполнение следующей команды помогло мне установить необходимые зависимости:

sudo apt-get -f install

В общем, ваш терминал должен выглядеть следующим образом:

$ sudo dpkg -i package_with_unsatisfied_dependencies.deb
dpkg: dependency problems prevent ... 
[additional messages]

$ sudo apt-get -f install
[apt messages]
Setting up [dependency]...
Setting up package_with_unsatisfied_dependencies...

Обратите внимание на строку о Установке package_with_unsatisfied_dependencies. Этим исправляет (и завершает) установку package_with_unsatisfied_dependencies.deb.

539
ответ дан 20 March 2014 в 04:21

, начиная с apt 1.1 (доступно в Xenial (16.04), stretch) apt install также позволяет использовать локальные файлы:

sudo apt install ./foo-1.2.3.deb

Так намного проще и чище.

См. объявление о выпуске

134
ответ дан 20 March 2014 в 04:21

Gdebi

gdebi устанавливает дебетовый пакет и его зависимости. Чтобы использовать его запуск:

sudo gdebi package.deb

В новых версиях Ubuntu, он не устанавливается по умолчанию, поэтому вам нужно будет установить его из репозиториев.

Смотрите man gdebi для получения полного списка опций.

gdebi - это командная строка, эквивалентная графическому инструменту с тем же именем, который по умолчанию был включен в Ubuntu. Команда для графического инструмента является gdebi-gtk и имеет аналогичную функциональность:

gdebi-gtk

41
ответ дан 20 March 2014 в 04:21

dpkg не имеет поддержки зависимостей. Есть способ обойти это, но для этого нужно сделать локальную базу данных (а значит, вы уже знаете о зависимостях) и она считается устаревшей (...).

Должна ли это быть командная строка? (server install?) Если так, то посмотрите также на apt-get -f, но будьте осторожны: решение зависимостей после установки может привести к тому, что вы получите поломанную систему.

gdebi (gui frontend) раньше мог это сделать, но его заменили на USC.

Как вы скачали .deb. Некоторые из новых возможностей 11.04 - это работа с .deb, загруженным с сайта: он получает opend в USC, так что зависимости будут решены программой установки.

EDIT на основе комментариев Эндрю: sudo gdebi foo-1.2.3.deb выполнит свою задачу!!

11
ответ дан 20 March 2014 в 04:21

запуск

sudo apt-get install -f

после установки пакета с dpkg может решить проблему сломанных впадин (по крайней мере, мужчина, скажем так...). Иллюстрированное обновление, когда я его проверю.

21
ответ дан 20 March 2014 в 04:21

В качестве альтернативы gdebi-gtk можно использовать Ubuntu Software Center.

Двойной щелчок на пакете и кнопка установки должна быть доступна.

3
ответ дан 20 March 2014 в 04:21

Вы можете создать файл dpkg-dep-inst со следующим содержимым.

#!/bin/bash

DEBIAN_FILE1=$1
dpkg -i $DEBIAN_FILE1 || apt-get --fix-broken install

Я предполагаю, что вы создали файл в своей домашней папке. Сделайте его исполняемым с помощью chmod + x dpkg-dep-inst и переместите его в / usr / local / bin с помощью sudo cp dpkg-dep-inst / usr / local / bin .

Теперь вы можете установить пакет debian с зависимостями автоматически с помощью:

sudo dpkg-dep-inst foo-1.2.3.deb
3
ответ дан 20 March 2014 в 04:21

Я только что столкнулся с этой проблемой. Однако вызов apt-get install -f приведет к , а не install рекомендуемым зависимостям! Единственный обходной путь для этого - создать локальный репозиторий и добавить его в /etc/apt/sources.list , то есть:

apt-ftparchive packages . > Packages && gzip < Packages > Packages.gz
sudo echo "deb file://$PWD /" >> /etc/apt/sources.list
sudo apt-get update
2
ответ дан 20 March 2014 в 04:21

На самом деле, ответ заключается в том, что dpkg пакетный менеджер не может установить зависимости из коробки. Вы зажали кулачок man dpkg и выяснили это. Поэтому вам нужно использовать такие инструменты, как apt, apt-get, aptitude, ... основанные на dpkg.

Я бы сказал, что тот же самый случай для пакетного менеджера rpm на другом полушарии Linux. rmp не предназначен для установки на основе зависимостей. Он может устанавливать отдельные пакеты, а для установки зависимостей вы используете yum, urpmi, up2date - все они основаны на RPM.

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

0
ответ дан 20 March 2014 в 04:21

Вы можете установить gdebi-core, который представляет собой версию программы установки пакета GDebi из командной строки от 10. 04 и ранее. В новых версиях Ubuntu для установки debs используется Центр программного обеспечения, который не имеет эквивалента командной строки.

Для установки пакета deb с помощью gdebi просто запустите:

sudo gdebi my_package_1.0.deb
114
ответ дан 20 March 2014 в 04:21

Если вам нужно запустить команду, которая автоматически разрешает все зависимости файла .deb и устанавливает файл .deb и его недостающие зависимости с помощью той же команды, вам нужно будет обновить установленное программное обеспечение с помощью sudo apt update . Затем откройте терминал, измените каталоги с помощью cd на каталог, содержащий имя-пакета.deb, и введите:

apt install --simulate ./package-name.deb # This command does not require sudo.

, где имя-пакета.deb следует заменить на имя файл .deb, расположенный в текущем каталоге, который вы пытаетесь установить.

Вышеупомянутая команда ничего не установит, но напечатает сообщение, в котором перечислены все зависимости package-name.deb, которые не существуют в Ubuntu по умолчанию. репозитории. Вам нужно будет вручную загрузить и установить файлы .deb этих недостающих пакетов зависимостей, чтобы установить package-name.deb. Выполните apt install --simulate ./[11104607 sizesmanually-downloaded-package.deb перед установкой любого из этих загруженных вручную пакетов зависимостей, чтобы проверить, имеют ли сами эти пакеты какие-либо неудовлетворенные зависимости.

Если смоделированная команда завершается успешно, выполните следующую команду для установки package-name.deb.

sudo apt install ./package-name.deb

В одной команде может быть несколько файлов .deb, если все файлы .deb находятся в текущем каталоге.

sudo apt install ./package-name-1.deb ./package-name-2.deb
13
ответ дан 5 January 2021 в 23:54

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

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