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

248495
Louis

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

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

129

4 ответа на вопрос

112
Sirex

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

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

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

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

Спасибо, я сделал то же самое с помощью «error» dpkg, затем apt-get install -f, и это сработало. Louis 13 лет назад 1
`gdebi` работает для меня, и самое простое, что я видел до сих пор. ctrl-alt-delor 7 лет назад 2
54
Akrikos

Sirex has it more or less correct, but his answer isn't clear. I just solved this, so here's what I did:

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

If this fails with a message about the package depending on something that isn't installed, you can probably fix it if you run

sudo apt-get -f install

This will install the dependencies (assuming they're available in the repos your system knows about) AND the package you were originally requesting to install ('f' is the 'fix' option and 'y' is the 'assume yes to prompts' or 'don't ask me if it's ok, just install it already' option -- very useful for scripted silent installs). On the system I was on, there was no need to run dpkg again (Ubuntu lucid 10.04).

I found it interesting that if you leave off the -f when you run sudo apt-get install, it will list your package as not being configured due to an unresolved dependency as well as helpfully suggesting: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Edit:

If you want install without having to answer 'y' to all of the questions, you can add the y modifier as I originally included: sudo apt-get -fy install. However, a commenter pointed out that apt will sometimes suggest that you uninstall your entire desktop environment. I was doing this work in a VM and didn't have that concern, but this post has been updated to reflect being a bit more careful.

Если у меня все файлы пакета уже есть в каталоге, есть ли способ сообщить apt, что это новый репозиторий, поэтому мне не придется заставлять его устанавливать что-либо без зависимостей? Berry Tsakala 11 лет назад 0
Извините, но я не знаю. Я бы предложил задать этот вопрос как еще один вопрос высшего уровня. Akrikos 11 лет назад 2
Сумасшедший странный, что это требуется. Для raspian это потребует sudo (как для dpkg, так и для apt-get): `sudo dpkg -i mypackages.deb` и т. Д. Brent Faust 10 лет назад 0
@Rubistro root-доступ необходим во всех системах. Я предполагаю, что ответы предполагали, что эти команды выполняются пользователем root (например, из интерактивной оболочки root или скрипта, который выполняется как root). Amos Shapira 10 лет назад 0
Для вашего же блага, ** не ** добавляйте опцию `-y`. Например, apt может предложить, например, удалить всю среду рабочего стола, если вы попробуете это с неправильным пакетом в неправильное время (по крайней мере, в Debian). oseiskar 9 лет назад 2
46
Avinash Raj

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

sudo apt-get install gdebi-core 

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

sudo gdebi /path/to/filename.deb 

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

Обратите внимание, что gdebi принимает только один аргумент и * молча * бросает остальных на пол. Это означает, что если вы устанавливаете несколько дэбов одновременно (возможно, потому, что они зависят друг от друга), вам нужно тщательно создать команды `gdebi`, которые позволяют их устанавливать. Imo эта половина побеждает цель gdebi, но вы все равно можете найти его полезным для одного файла Anthony Sottile 8 лет назад 4
@Anthony затем `find -name * .deb -exec gdebi {} \;` jjmontes 8 лет назад 0
@jjmontes, который будет работать только в том случае, если взаимозависимости расположены в алфавитном порядке. Anthony Sottile 8 лет назад 3
Я следовал этому http://freesoftwaremagazine.com/articles/debianubuntu_making_package_repository_your_lan/ (ошибка локального репозитория должна была быть в / var / www / html / debs), и синаптик продолжал пытаться загружать из удаленного, даже без интернета, поэтому gdebi работал отлично с местным репо! также .deb файлы должны быть `chmod + r * .deb` Aquarius Power 5 лет назад 0
18
Melebius

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

sudo apt-get install ./package.deb 

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

Подробнее см. Https://askubuntu.com/a/769542/250300 .

Это должен был быть принятый ответ. Peter 5 лет назад 2

Похожие вопросы