Вопрос: Как разрешить мне устанавливать зависимости `dpkg -i`?


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

dpkg -i ./foo-1.2.3.deb

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

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


255
2018-05-04 13:11


Источник


Возможный дубликат Как автоматически получать недостающие зависимости при установке программного обеспечения из .deb? - pd12
@ pd12: Ура для круговых ссылок! :-D - David Foerster
хех, я решил связать оба и посмотреть, какой из них выбрать. - pd12
Удивительно, что в 2016 году .deb графическая установка все еще терпит неудачу, не сообщая пользователю ничего о недостающих зависимостях, - Dan Dascalescu


Ответы:


После использования 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,


343
2018-05-04 15:38



Должен ли я запускать sudo dpkg -i mypackage.deb еще раз ? - Muhammad Gelbana
После запуска sudo apt-get -f install мой пакет и его зависимости были установлены. Бег sudo dpkg -i my_package.deb не требуется, и он снова установит пакет. - Gus E
Следующие работы на Ubuntu 14.04: sudo dpkg -i package.deb; sudo apt-get -f install; sudo dpkg -i package.deb, Первый dpkg -i запускать метки меток, apt-get -f install устанавливает необходимые зависимости, а второй dpkg -iуспешно устанавливает пакет. Обратите внимание, что apt-get install -f это совершенно другая команда. - Mikko Rantalainen
@ysth нет, не делай dpkg -i --force; что заставит установить сломанный пакет! Бег dpkg /без/ --force сделает необходимую запись в базе данных пакета так, чтобы apt-get -f install будет поступать правильно. - Brian A. Henning
@Lotharyx: я не могу попробовать прямо сейчас, но я не думал, что dpkg без силы (который не выполняется из-за отсутствия зависимостей) сделает запись в базе данных пакета - ysth


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

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

sudo gdebi my_package_1.0.deb

108
2018-05-04 14:47





Gdebi

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

sudo gdebi package.deb

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

Видеть man gdebi для полного списка опций.

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

gdebi-gtk


35
2018-05-04 16:56



gdebi-gtk не покажет требуемые отпечатки (версия у меня здесь, по крайней мере, и это похоже на ошибку), но в командной строке будет! Если у нас есть другая машина с пакетами, мы можем использовать dpkg-repack на нем основано на таком списке депо :) - Aquarius Power


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

sudo apt install ./foo-1.2.3.deb

Настолько проще и чище.

См. анонс выпуска


25
2017-07-05 09:23



Пришло время это доступно - Mike
Это решение не сработало. Все, что произошло, это список ошибок. - Billy S
@BillyS жаль слышать, что это не сработало для вас, но без версии дистрибутива, которую вы используете, и какие ошибки вы получили, это вообще не подлежит действию. - textshell
Команда не работала для меня, но apt ./install foo-1.2.3.deb работал. - Cenk Alti
Исправлена ​​команда, комментарии выше относились к предыдущей версии ответа, которая пропустила необходимый ./ или путь - Zanna


Бег

sudo apt-get install -f

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


18
2018-05-04 13:17



Должен ли я запускать sudo dpkg -i mypackage.deb еще раз ? - Muhammad Gelbana
apt-get -f install работает, но apt-get install -f не такой же. - 200_success


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

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

Gdebi (gui frontend) имел обыкновение делать это, но был заменен USC.

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

EDIT, основанный на комментарии andrew: sudo gdebi foo-1.2.3.deb  сделал бы трюк !!


8
2018-05-04 13:32



gdebi все еще можно использовать для этого. Центр программного обеспечения теперь просто приложение по умолчанию. Кроме того, как отмечает Чэнь Сяо-Лонг, gdebi также можно использовать в командной строке. - andrewsomething
круто! то вопрос имеет ответ, потому что gdebi можно использовать и в командной строке. - Rinzwind


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

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


3
2018-05-10 07:55





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



использование apt-get --yes --fix-broken install и сделайте фиксацию автоматической. - Lucas
@ysth Нет, не в общем. - BuZZ-dEE


Я просто столкнулся с этой проблемой. призвание 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

1
2018-02-10 15:19