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

Скажем, у меня есть 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.debdpkg: 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.

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

sudo apt install ./foo-1.2.3.deb

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

Увидеть объявление о выпуске

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

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

sudo gdebi my_package_1.0.deb

Гдеби

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

sudo gdebi package.deb

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

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

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

gdebi-gtk

бегущий

sudo apt-get install -f

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

Если вам нужно выполнить команду, которая автоматически разрешает все a .зависимостей файла deb и устанавливает файл .deb и его отсутствующие зависимости с помощью той же команды, вам нужно будет обновить установленное программное обеспечение с помощью sudo apt update. Затем откройте терминал, измените каталоги с помощью cd в каталог, содержащий package-name.deb, и введите:

подходящая установка - имитация ./имя пакета.deb # Эта команда не требует sudo.

где имя пакета.deb должно быть заменено именем a .файл deb, расположенный в текущем каталоге, который вы пытаетесь установить.

Приведенная выше команда ничего не установит, но выведет сообщение со списком любых зависимостей package-name.deb, которых нет в репозиториях Ubuntu по умолчанию. Вам нужно будет вручную загрузить и установить файлы .deb этих отсутствующих пакетов зависимостей, чтобы установить package-name.deb. Бежать apt install --simulate ./загруженный вручную package.deb перед установкой любого из этих загруженных вручную пакетов зависимостей, чтобы проверить, есть ли у этих пакетов какие-либо неудовлетворенные зависимости.

Если имитируемая команда завершится успешно, выполните следующую команду для установки package-name.deb.

потеть подходящая установка ./имя пакета.deb

В одной и той же команде может быть несколько файлов .deb, если все файлы .deb расположены в текущем каталоге.

sudo apt install ./package-name-1.deb ./package-name-2.deb

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

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

гдеби (интерфейс gui) раньше мог это делать, но был заменен на USC.

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

РЕДАКТИРОВАТЬ на основе комментария Эндрю:sudo gdebi foo-1.2.3.deb сделал бы свое дело!!

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

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

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

#!/bin/bashDEBIAN_FILE1=$1dpkg -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 будет нет устанавливать рекомендуемый зависимости, однако! Единственным обходным путем для этого было бы создать локальный репозиторий и добавить в /etc/apt/sources.list, то есть:

apt-ftparchive packages . > Packages && gzip < Packages > Packages.gzsudo echo "deb file://$PWD /" >> /etc/apt/sources.listsudo apt-get update

@pd12: Ура циклическим ссылкам! :smiley:

Удивительно, что в 2016 году графическая установка .deb по-прежнему завершается беззвучно, не сообщая пользователю ничего об отсутствии dependencies.

Возможный дубликат Как автоматически извлекать отсутствующие зависимости при установке программного обеспечения из .deb?

@Melebius Результат выглядит как обычно. Он просит меня ввести пароль, когда я его выполняю. После ввода пароля все команды "sudo apt install` в скрипте будут выполнены без каких-либо ошибок.

Для первого абзаца см. Where are packages stored installed with APT in Ubuntu 16.04? - Ask Ubuntu что касается остальной части вопроса, то вам было бы лучше найти решение от How can I install software or packages without Internet (offline)? - Ask Ubuntu

хех, я решил связать оба и посмотреть, какой из них выберут моды.

_ “Это потому, что я пишу ”sudo apt install pkg" в скрипт bash и не выполнил скрипт с помощью “sudo”?"_ Это зависит от того, ввели ли вы пароль или настроили свою ОС так, чтобы пароль для скрипта не требовался. В любом случае, вы записали выходные данные скрипта?