Как найти зависимости сборки пакета?

48

Я хотел бы узнать, какие пакеты

sudo apt-get build-dep <package>

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

htorque
источник
1
Я запутался, не sudo apt-get build-dep <package>показывает список пакетов (если пакет имеет какие-либо зависимости сборки), который он собирается установить?
Исаия
1
К сожалению, это показывает только пакеты, которые не установлены.
htorque

Ответы:

45

Для получения полного списка зависимостей, включая зависимости, вы можете использовать:

apt-rdepends --build-depends openoffice.org

Команда может напомнить вам, чтобы установить в apt-rdependsпервую очередь.

Вы можете использовать следующую команду, чтобы показать только те, которые не установлены:

apt-rdepends --build-depends --print-state openoffice.org | grep NotInstalled

Смотрите apt-rdepends --helpдля всех вариантов.

Примечание : это создаст огромный список.
apt-rdepends -b xtermНапример, генерирует 8773 строки вывода и требует времени для этого.

Если вы хотите видеть только те пакеты, которые необходимы для сборки самого верхнего пакета, т.е. что мне нужно установить для сборки nautilus, выполните:

apt-rdepends --build-depends --follow=DEPENDS nautilus

Это примерно эквивалентно ответу Карстена Тиля ( The following NEW packages will be installed), но формат вывода немного лучше. Он также показывает только самый верхний пакет, тогда как смоделированный apt-get также показывает пакеты, установленные как их зависимости.

Это также показывает пакеты, которые установлены. Но это может также показать пакеты, которые установлены по умолчанию. К сожалению, ни один из методов не очень помогает, когда вы пытаетесь очистить свою систему после запуска apt-get build-dep. Насколько я знаю, нет надежного способа найти, какие из них были установлены, кроме как посмотреть на файл журнала apt /var/log/apt/history.log.

Стефано Палаццо
источник
1
Спасибо, версия с --follow=DEPENDSименно то, что я искал. Вы также можете найти эти зависимости сборки на Launchpad, например. для Наутилуса: launchpad.net/ubuntu/natty/+source/nautilus (прокрутите вниз).
hrqueque
17

Опция -s( --simulate) выведет все, что будет сделано, ничего не делая. Вам даже не нужны привилегии root для этого.

apt-get -s build-dep <package>
Карстен Тиль
источник
6
Посмотрите мой комментарий выше - это не покажет уже установленные пакеты. Извините за не точность в моем вопросе.
htorque
Не работает - терпит неудачуE: Unable to find a source package for inkscape
Анатолий Techtonik
17
apt-cache showsrc <pkgname> | grep ^Build-Depends

showsrcотображает файл debian / control для данного исходного пакета. Затем мы grep для строки (ей), которые начинаются с 'Build-Depends', в которой есть список пакетов, необходимых для сборки из исходного кода.

анонимный
источник
+1 если ты объяснишь что apt-cache showsrcи что | grepзначит. Тем не менее, хороший ответ. Спасибо, что нашли время, чтобы предоставить его.
MadMike
sudo apt-cache showsrc inkscapeне работает inkscapeв Ubuntu 18.10 - даетW: Unable to locate package inkscape N: No packages found
анатолий techtonik
@anatolytechtonik, только что протестированный на Ubuntu 18.10 в Docker, работает для меня. Ты apt-get updateпервый?
Стефан Гурихон
Это должен быть принятый ответ, поскольку он предоставляет необходимый инструмент и не требует дополнительного пакета.
Стефан Гурихон