Скажем, у меня есть foo-1.2.3.deb
, который зависит от perl
и python
, однако, команда запуска:
dpkg -i ./foo-1.2.3.deb
не будет устанавливать эти зависимости. Поэтому я должен apt-get install perl python
от руки.
Как заставить dpkg -i
автоматически установить эти зависимости для меня?
После использования 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...
[ 119] Обратите внимание на строку о Setting up package_with_unsatisfied_dependencies
. Это исправляет (и завершает) установку package_with_unsatisfied_dependencies.deb
.
Вы можете установить gdebi-core
, который является версией программы установки пакета GDebi для командной строки с 10.04 и более ранних версий. В более новых версиях Ubuntu для установки дэбов используется Центр программного обеспечения, который не имеет эквивалента командной строки.
Чтобы установить пакет deb с помощью gdebi, просто запустите:
sudo gdebi my_package_1.0.deb
начиная с apt 1.1 (доступно в Xenial (16.04), stretch) apt install
также позволяет локальные файлы:
sudo apt install ./foo-1.2.3.deb
Так проще и чище.
.apt ./install foo-1.2.3.deb
работал.
– Nikhil Dinesh
17.05.2020, 00:40
./
или путь
– Matthew Clark
17.05.2020, 00:42
В качестве альтернативы gdebi-gtk
вы можете использовать Ubuntu Software Center.
Дважды щелкните пакет, и кнопка установки должна быть доступна.
У dpkg нет поддержки зависимостей. Есть способ обойти это, но это потребует от вас создания локальной базы данных (и, таким образом, вы уже будете знать зависимости), и она считается устаревшей (...).
Это должна быть командная строка? (установка на сервер?) Если так, взгляните также на apt-get -f
, но будьте осторожны: решение зависимостей после установки может привести к поломке системы.
gdebi (GUI-интерфейс) раньше был в состоянии сделать это, но был заменен на USC.
Как вы скачали .deb. Некоторые из новых возможностей 11.04 - это обработка .deb, загруженного с веб-сайта: он становится открытым в USC, поэтому установщик разрешает зависимости.
РЕДАКТИРОВАТЬ на основе комментария Эндрю: sudo gdebi foo-1.2.3.deb
сделали бы трюк !!
gdebi
устанавливает пакет deb и его зависимости. Чтобы использовать его, запустите:
sudo gdebi package.deb
В более новых версиях Ubuntu он по умолчанию не установлен, поэтому вам нужно будет установить его из репозиториев.
См. man gdebi
для полного списка опций.
gdebi
- это командная строка, эквивалентная графическому инструменту с тем же именем, который по умолчанию включался в Ubuntu. Команда для графического инструмента - gdebi-gtk
и имеет аналогичную функциональность:
dpkg-repack
на ней на основе такого списка deps:)
– B-Dog
17.05.2020, 00:42
Я только что столкнулся с этой проблемой. При вызове 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
после установки пакета с помощью dpkg может разрешить нарушенные зависимости (по крайней мере, man apt-get скажет так ...). Я буду обновлять, когда я проверю это.
На самом деле ответ таков: dpkg
менеджер пакетов не может устанавливать зависимости «из коробки». Вы сделали снимок man dpkg
и выяснили это. Поэтому вам нужно использовать такие инструменты, как apt
, apt-get
, aptitude
, ..., основанные на dpkg
.
Я бы сказал, что точно такой же случай для менеджера пакетов rpm
в другом полушарии Linux. rmp
не предназначен для установки на основе зависимостей. Он может устанавливать отдельные пакеты, и для установки зависимостей, которые вы используете yum
, urpmi
, up2date
, все они основаны на RPM.
Как уже отмечалось, существует небольшая опасность установки пакетов непосредственно с dpkg
, потому что позднее разрешение проблем может привести к поломке системы, как обрисовал @Rinzwind.
Вы можете создать файл 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
apt-get --yes --fix-broken install
и сделайте фиксацию автоматической.
– CodeNepal
17.05.2020, 00:44
dpkg -i --force
; тот будет установка силы поврежденный пакет! Выполнениеdpkg
/without/--force
сделает необходимую запись в базе данных пакета так, чтобыapt-get -f install
сделал правильную вещь. – Vladimir Kornea 17.05.2020, 00:39sudo 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
полностью различная команда. – Matthew Clark 17.05.2020, 00:40sudo apt-get -f install
мой пакет и it' s зависимости были все установлены. Выполнениеsudo dpkg -i my_package.deb
является ненужным и просто установит пакет снова. – cdmckay 17.05.2020, 00:40sudo dpkg -i mypackage.deb
снова? – jolt 17.05.2020, 00:41