Как установить локальные пакеты .deb с помощью apt-get

144

Есть ли способ установить магазин пакетов на вашем HD с помощью apt-get, как apt-get install ./package.deb?

Если нет, то как очень легко справиться с зависимостями?

Луис
источник
Это работает сейчас. Если вы все еще используете SuperUser, можете ли вы обновить принятый ответ? Смотри ниже.
mikemaccana

Ответы:

121

как правило, я не могу dpkg -i <deb file>сказать, что ему нужны зависимости. После этого, когда вы сделаете apt-get updateэто, в конце он скажет что-то вроде «зависимости готовы к установке», я думаю, что потом советует использовать apt-get install -f.

Как только это будет сделано, я использую dpkg -iснова.

Работал хорошо для меня последние несколько лет.

изменить: глядя немного дальше, по-видимому, инструмент под названием gdebiможет сделать это как gdebi [deb file].

Sirex
источник
1
Спасибо, я сделал то же самое с помощью «error» dpkg, затем apt-get install -f, и это сработало.
Луи
2
gdebiработает для меня, и самое простое, что я видел до сих пор.
Ctrl-Alt-Delor
55

У Sirex это более или менее правильно, но его ответ не ясен. Я просто решил это, вот что я сделал:

sudo dpkg -i /path/to/filename.deb

Если это не удастся с сообщением о пакете в зависимости от того, что не установлено, вы можете исправить это, запустив

sudo apt-get -f install

Это установит зависимости (при условии, что они доступны в репозиториях, о которых знает ваша система) И пакете, который вы изначально запрашивали для установки («f» - это опция «fix», а «y» - это «предположить, да»). или опция «не спрашивайте меня, все ли в порядке, просто установите ее уже» - очень полезно для автоматической установки по сценарию). В системе, в которой я был, не было необходимости снова запускать dpkg (Ubuntu lucid 10.04).

Мне показалось интересным, что если вы пропустите опцию -f при запуске sudo apt-get install, она покажет ваш пакет как не настроенный из-за неразрешенной зависимости, а также предложит:Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Редактировать:

Если вы хотите установить без ответа «у» на все вопросы, вы можете добавить yмодификатор , как я первоначально включал: sudo apt-get -fy install. Тем не менее, комментатор отметил, что apt иногда предлагает удалить всю среду рабочего стола. Я делал эту работу на виртуальной машине, и у меня не было этой проблемы, но этот пост был обновлен, чтобы отразить в нем немного более осторожность.

Akrikos
источник
Если у меня все файлы пакета уже есть в каталоге, есть ли способ сообщить apt, что это новый репозиторий, поэтому мне не придется заставлять его устанавливать что-либо без зависимостей?
Ягода Цакала
2
Извините, но я не знаю. Я бы предложил задать этот вопрос как еще один вопрос высшего уровня.
Акрикос
Сумасшедший странный, что это требуется. На raspian это потребует sudo (как для dpkg, так и для apt-get): sudo dpkg -i mypackages.debи т. Д.
Brent Faust
@Rubistro root-доступ необходим во всех системах. Я предполагаю, что ответы предполагали, что эти команды выполняются пользователем root (например, из интерактивной оболочки root или скрипта, который выполняется как root).
Амос Шапира
2
Для вашего же блага, не добавляйте -yопцию. Например, apt может предложить, например, удалить всю среду рабочего стола, если вы попробуете это с неправильным пакетом в неподходящее время (по крайней мере, в Debian).
oseiskar
45

Вы также можете установить файл .deb с помощью gdebi. Для установки gdebi выполните следующие команды:

sudo apt-get install gdebi-core

Установить пакеты .deb с помощью gdebi,

sudo gdebi /path/to/filename.deb

Это также исправляет зависимости.

Авинаш Радж
источник
4
Обратите внимание, что gdebi принимает только один аргумент и молча бросает остальных на пол. Это означает, что если вы устанавливаете несколько дэбов одновременно (возможно, потому что они зависят друг от друга), вам нужно тщательно составить gdebiкоманды, которые позволяют их устанавливать. По этой причине эта половина побеждает цель Гдеби, но вы все равно можете найти ее полезной для одного файла
Энтони Соттил,
@ Энтони тогдаfind -name *.deb -exec gdebi {} \;
jjmontes
3
@jjmontes , который будет работать только в том случае , если взаимозависимости в алфавитном порядке , в котором я бы пари довольно редко
Энтони Sottile
Я следовал за этим freesoftwaremagazine.com/articles/… (ошибка локального репозитория должна была быть в / var / www / html / debs), и synaptic продолжал пытаться загрузить его с удаленного даже без интернета, поэтому gdebi прекрасно работал с локальным репо ! Кроме того, файлы .deb должны были бытьchmod +r *.deb
Водолей Power
34

Да, предложенная вами команда верна.

sudo apt-get install ./package.deb

или же

sudo apt install ./package.deb

установит пакет, полученный из другого источника, чем APT, и в то же время использует возможности APT для автоматического разрешения его зависимостей. К сожалению, эта apt-getфункция не описана в справочной странице .

См. Https://askubuntu.com/a/769542/250300 и https://askubuntu.com/a/795048/250300 для получения подробной информации.

Melebius
источник
8
Это должен был быть принятый ответ.
Питер
Какая версия apt-get добавила эту возможность?
Курт Фитцнер
@KurtFitzner Он был добавлен в APT 1.1 для каждого объявления о выпуске (можно найти на сайте askubuntu.com/a/795048/250300 ).
Мелебиус