Как позволить `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
и имеет схожий функционал:
Бег
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.