Установить только зависимости данного пакета в Debian или Ubuntu (apt)


18

Есть ли лучший способ установить только требуемые зависимости пакета, вместо того, чтобы устанавливать его непосредственно с помощью apt-get (или любого другого интерфейса dpkg), а затем сразу же удалять его, оставляя его зависимости?

Ответы:


22

apt-cache depends pkgname покажет зависимости пакета.

Если вы хотите все это одной командой, вы можете сделать хуже, чем:

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`

16

apt-get предоставляет команду именно для этого ...

apt-get build-dep <package name>

Из страниц руководства вы получаете

build-dep вызывает apt-get для установки / удаления пакетов в попытке удовлетворить зависимости сборки для исходного пакета. По умолчанию зависимости удовлетворены для первоначальной сборки пакета. При желании хост-архитектура может быть указана с параметром --host-Architecture.


9
Разве не может быть разница между build dependenciesи dependencies? Например, если вы обычно устанавливаете программу, вы получаете зависимости, необходимые для ее фактического запуска, а со сборочными зависимостями я больше думаю о библиотеках, компиляторах и тому подобном. Так как я не уверен (этот ответ имеет положительные отзывы), но мне кажется, это не тривиально, что получение зависимостей сборки - это то же самое, что получать (запускать) зависимости пакетов?
Нанн

1
Ты прав. При ответе на это, очень давно, у меня не было полного понимания разницы между зависимостями сборки (время сборки) и зависимостями (время выполнения). Спасибо за разъяснение Нанне!
Натан Крок

4

aptitude позволит вам указать запрос вместо имени пакета при установке. Если вы хотите установить зависимости именованных пакетов foo, вы можете установить пакеты, которые имеют обратную зависимость от foo:

aptitude install '?reverse-depends(foo)'

или

aptitude install '~Rfoo'

Проблема с установкой и последующим удалением пакета состоит в том, что все пакеты, которые устанавливаются как зависимости, будут помечены как «автоматически установленные» и будут удалены любым действием установки / удаления / обновления с помощью aptitude или при запуске, apt-get autocleanесли только вы не запустили пометьте их как установленные вручную с помощью aptitude markили apt-markкоманды.

Тем не менее, возникает вопрос, почему вы хотели бы сделать это, я думаю, вы пытаетесь установить зависимости для некоторого программного обеспечения, которое вы собираетесь скомпилировать вручную. В этом случае вы должны сначала установить зависимости для сборки apt-get build-dep packagename, но затем вам следует создать фиктивный пакет, который имеет зависимости времени выполнения (которые обычно отличаются от зависимостей сборки), используя equivпакет для сборки фиктивного пакета с правильными зависимостями для Ваша вручную скомпилированная программа. Смотрите информацию о equivsв APT HOWTO


3

В случае построения pkgname из источников

apt-get build-dep pkgname

1
зависимости построения не являются зависимостями времени выполнения
сехе

>> В случае построения pkgname из источников
eri

Я не знаю, где это гарантировано / задокументировано. Кроме того, до сих пор не делает это то же самое для любой цели. Я использую build-dep все время, но мне бы хотелось получить лучший ответ на текущий вопрос. Мне это тоже нужно.
Сехе
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.