Як знайти залежність побудови пакета?


48

Я хотів би дізнатися, які пакунки

sudo apt-get build-dep <package>

встановив би (якщо я вже встановив деякі залежності, я також хотів би побачити ті →, так що запущених або моделюючих вище недостатньо). Переважний командний рядок


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. Наскільки я знаю, не існує надійного методу визначення того, які з них були встановлені, окрім перегляду файлу влучного журналу в /var/log/apt/history.log.


1
Дякую, версія з --follow=DEPENDSсаме тим, що я шукав. Ви також можете знайти ті побудови залежностей від Launchpad, наприклад. для Nautilus: launchpad.net/ubuntu/natty/+source/nautilus (прокрутка вниз).
htorque

17

Опція -s( --simulate) виведе все, що було б зроблено, нічого не роблячи. Для цього вам навіть не потрібні кореневі привілеї.

apt-get -s build-dep <package>

6
Дивіться мій коментар вище - це не відображатиме вже встановлені пакети. Вибачте, що в моєму питанні не були точними.
htorque

Не працює - не вдаєтьсяE: Unable to find a source package for inkscape
anatoly techtonik

17
apt-cache showsrc <pkgname> | grep ^Build-Depends

showsrcвідображає файл debian / control для даного вихідного пакету. Потім ми збираємося за рядки, які починаються з "Build-залежно", який містить список пакетів, необхідних для створення з джерела.


+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
anatoly techtonik

@anatolytechtonik щойно перевірений на Ubuntu 18.10 в Docker, працює для мене. Ви apt-get updateпершими?
Стефан Гурішон

Це має бути прийнятою відповіддю, оскільки вона надає необхідний інструмент і не потребує додаткового пакету.
Стефан Гурішон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.