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

235

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

dpkg -i ./foo-1.2.3.deb

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

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

    
задан Xiè Jìléi 04.05.2011 в 15:11
источник

9 ответов

313

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

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

    
ответ дан Arindom 04.05.2011 в 17:38
источник
104

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

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

sudo gdebi my_package_1.0.deb
    
ответ дан Andrew Gunnerson 04.05.2011 в 16:47
33

Gdebi

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

sudo gdebi package.deb

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

Для получения полного списка параметров см. man gdebi .

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

    
ответ дан dv3500ea 04.05.2011 в 18:56
20

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

sudo apt install ./foo-1.2.3.deb

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

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

    
ответ дан textshell 05.07.2016 в 11:23
18

работает

sudo apt-get install -f

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

    
ответ дан Denwerko 04.05.2011 в 15:17
8

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

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

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

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

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

    
ответ дан Rinzwind 04.05.2011 в 15:32
3

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

#!/bin/bash

DEBIAN_FILE1=
dpkg -i $DEBIAN_FILE1
apt-get install -f

Я предполагаю, что вы создали файл в своей домашней папке. Сделайте его исполняемым с 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
    
ответ дан BuZZ-dEE 28.01.2013 в 17:01
3

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

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

    
ответ дан Henrique 10.05.2011 в 09:55
0

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

apt-ftparchive packages . > Packages && gzip < Packages > Packages.gz
sudo echo "deb file://$PWD /" >> /etc/apt/sources.list
sudo apt-get update
    
ответ дан Alex Kläser 10.02.2016 в 16:19