Встановлюйте лише залежності певного пакету в 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

Придатність дозволить вам вказати запит замість імені пакета при установці. Якщо ви хочете встановити залежності названого пакету foo, ви можете встановити пакети, які мають зворотну залежність від foo:

aptitude install '?reverse-depends(foo)'

або

aptitude install '~Rfoo'

Проблема з встановленням пакету та його видаленням полягає в тому, що всі пакунки, які встановлюються як залежності, будуть позначені як "автоматично встановлені", і їх буде видалено будь-якою дією встановлення / видалення / оновлення за можливостями або під час запуску, apt-get autocleanякщо ви не позначте їх як встановлені вручну за aptitude markдопомогою apt-markкоманди або команди.

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


3

У випадку створення pkgname з джерел

apt-get build-dep pkgname

1
побудувати залежності не залежність від часу виконання
1616

>> У випадку створення pkgname з джерел
eri

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