Скажем, у меня есть 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...
Обратите внимание на строку о Установке package_with_unsatisfied_dependencies
. Этим исправляет (и завершает) установку package_with_unsatisfied_dependencies.deb
.
, начиная с apt 1.1 (доступно в Xenial (16.04), stretch) apt install
также позволяет использовать локальные файлы:
sudo apt install ./foo-1.2.3.deb
Так намного проще и чище.
gdebi
устанавливает дебетовый пакет и его зависимости. Чтобы использовать его запуск:
sudo gdebi package.deb
В новых версиях Ubuntu, он не устанавливается по умолчанию, поэтому вам нужно будет установить его из репозиториев.
Смотрите man gdebi
для получения полного списка опций.
gdebi
- это командная строка, эквивалентная графическому инструменту с тем же именем, который по умолчанию был включен в Ubuntu. Команда для графического инструмента является gdebi-gtk
и имеет аналогичную функциональность:
dpkg не имеет поддержки зависимостей. Есть способ обойти это, но для этого нужно сделать локальную базу данных (а значит, вы уже знаете о зависимостях) и она считается устаревшей (...).
Должна ли это быть командная строка? (server install?) Если так, то посмотрите также на apt-get -f
, но будьте осторожны: решение зависимостей после установки может привести к тому, что вы получите поломанную систему.
gdebi (gui frontend) раньше мог это сделать, но его заменили на USC.
Как вы скачали .deb. Некоторые из новых возможностей 11.04 - это работа с .deb, загруженным с сайта: он получает opend в USC, так что зависимости будут решены программой установки.
EDIT на основе комментариев Эндрю:
sudo gdebi foo-1.2.3.deb
выполнит свою задачу!!
запуск
sudo apt-get install -f
после установки пакета с dpkg может решить проблему сломанных впадин (по крайней мере, мужчина, скажем так...). Иллюстрированное обновление, когда я его проверю.
В качестве альтернативы gdebi-gtk
можно использовать Ubuntu Software Center.
Двойной щелчок на пакете и кнопка установки должна быть доступна.
Вы можете создать файл 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 install -f
приведет к , а не install рекомендуемым зависимостям! Единственный обходной путь для этого - создать локальный репозиторий и добавить его в /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
На самом деле, ответ заключается в том, что dpkg
пакетный менеджер не может установить зависимости из коробки. Вы зажали кулачок man dpkg
и выяснили это. Поэтому вам нужно использовать такие инструменты, как apt
, apt-get
, aptitude
, ... основанные на dpkg
.
Я бы сказал, что тот же самый случай для пакетного менеджера rpm
на другом полушарии Linux. rmp
не предназначен для установки на основе зависимостей. Он может устанавливать отдельные пакеты, а для установки зависимостей вы используете yum
, urpmi
, up2date
- все они основаны на RPM.
Как уже отмечалось, существует небольшая опасность установки пакетов непосредственно с dpkg
, так как последующее разрешение зависимостей может привести к выходу из строя системы, как описано в @Rinzwind.
Вы можете установить gdebi-core
, который представляет собой версию программы установки пакета GDebi из командной строки от 10. 04 и ранее. В новых версиях Ubuntu для установки debs используется Центр программного обеспечения, который не имеет эквивалента командной строки.
Для установки пакета deb с помощью gdebi просто запустите:
sudo gdebi my_package_1.0.deb
Если вам нужно запустить команду, которая автоматически разрешает все зависимости файла .deb и устанавливает файл .deb и его недостающие зависимости с помощью той же команды, вам нужно будет обновить установленное программное обеспечение с помощью sudo apt update
. Затем откройте терминал, измените каталоги с помощью cd
на каталог, содержащий имя-пакета.deb, и введите:
apt install --simulate ./package-name.deb # This command does not require sudo.
, где имя-пакета.deb
следует заменить на имя файл .deb, расположенный в текущем каталоге, который вы пытаетесь установить.
Вышеупомянутая команда ничего не установит, но напечатает сообщение, в котором перечислены все зависимости package-name.deb, которые не существуют в Ubuntu по умолчанию. репозитории. Вам нужно будет вручную загрузить и установить файлы .deb этих недостающих пакетов зависимостей, чтобы установить package-name.deb. Выполните apt install --simulate ./[11104607 sizesmanually-downloaded-package.deb
перед установкой любого из этих загруженных вручную пакетов зависимостей, чтобы проверить, имеют ли сами эти пакеты какие-либо неудовлетворенные зависимости.
Если смоделированная команда завершается успешно, выполните следующую команду для установки package-name.deb.
sudo apt install ./package-name.deb
В одной команде может быть несколько файлов .deb, если все файлы .deb находятся в текущем каталоге.
sudo apt install ./package-name-1.deb ./package-name-2.deb