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

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

dpkg -i ./foo-1.2.3.deb

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

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

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...

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

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

sudo apt install ./foo-1.2.3.deb

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

Смотрите анонс релиза

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

Чтобы установить пакет deb с помощью gdebi, просто запустите:

sudo gdebi my_package_1.0.deb

Gdebi

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

sudo gdebi package.deb

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

Увидеть man gdebi для полного списка вариантов.

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

Gdebi-GTK

Бег

sudo apt-get install -f

после установки пакета с помощью dpkg может решить проблемы с зависимостями (по крайней мере, man apt-get, скажем так...). Я обновлю, когда я проверю это.

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

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

Gdebi (интерфейс GUI) раньше мог это делать, но его заменили на USC.

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

РЕДАКТИРОВАТЬ на основе комментария Эндрю: sudo gdebi foo-1.2.3.deb сделал бы трюк!

Вы можете создать файл 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

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

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

Я просто столкнулся с этой проблемой. призвание apt-get install -f не установит рекомендуемые зависимости, хотя! Единственный обходной путь для этого - создать локальный репозиторий и добавить в /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

Приведенная ниже команда попытается исправить любые проблемы с зависимостями.

sudo apt-get install -f

Поэтому рекомендуется запускать это после установки пакета

sudo dpkg -i YOUR-PACKAGE.deb && sudo apt-get install -f

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

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

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

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