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

18

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

Винициус Феррао
источник

Ответы:

22

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

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

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`
smammy
источник
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 все время, но мне бы хотелось получить лучший ответ на текущий вопрос. Мне это тоже нужно.
Сехе