Дерево залежності пакета вихідних пакетів Ubuntu


10

У мене є кілька пакетів. Давайте назвемо їх A.deb, B.debі C.deb. Кожен пакет має відповідний вихідний пакет A.dscі A.tar.gz, B.dscі B.tar.gz, C.dscі C.tar.gz. Пакети залежать один від одного: C.debзалежить B.debі B.debзалежитьA.deb

Якщо я модифікую A.deb, мені потрібно відновити B.debабо це не спрацює. Те саме стосується B.debі C.deb. Чи є спосіб автоматизувати цей процес? Чи є інструмент чи сценарій, який зробить це для мене? Якщо ні, то як я можу сам це автоматизувати?

Крім того, не існує моїх пакунків.


2
Ви говорите: "C.deb залежить від B.deb, а B.deb залежить від A.deb", тож я думаю, ви маєте на увазі бінарні пакети? Ви також маєте на увазі компіляцію B проти зовнішньої бібліотеки в A? Якщо так, просто не повинно виникати необхідності перебудовувати пакунок, враховуючи, що розробник (-ів) A не змінив інтерфейс такої бібліотеки (тож це залежить від маніпулятора (-ів) A, а не для керування (-ів) B) ; якщо ви розробник всіх із них, просто просто збережіть реалізацію Anostic з його інтерфейсу якомога більше, щоб сумісність була забезпечена якнайбільше).
kos

1
Я не займаюся цим рівнем на Linux, але думаю, що саме для цього makeбуло придумано. Makefile включає правила, які визначають, що потрібно перекомпілювати / перебудувати на основі того, що змінилося.
Джо

1
@xiaodongjie - ти дорога людина з дорогим запитанням - значить, ти вже знаєш баш та баш-сценарій? ---> таким чином ви можете написати невеликий сценарій з циклом перемикання, а потім, як в ліфті, скласти в різні випадки, що робити з пакунками. Немає мого сценарію. Ви такі розумні, як ми розумні - смійтесь. - цей сценарій, звичайно, можна налаштувати як демон (для роботи автоматично).
dschinn1001

1
А @Joe сказав: використовуйте make, і як ви самі сказали, @xiaodongjie, цільовими цілями стануть результуючі пакунки, де оголошуються їх залежність від пакета до пакету, і пов'язана дія для кожної цілі буде командою, яка створює пакет . Встановіть make-docі введіть, info makeщоб прочитати все про нього.
Ральф Ронквіст

1
Що щодо створення псевдоніма для процесу збирання?
Вільгельм Еразм

Відповіді:


3

Ви б використовували Makefile із оголошеними залежностями побудови, наприклад таким чином:

default: A.deb B.deb C.deb

C.deb: B.deb C.dsc C.tar.gz
        <command(s) to build C.deb>

B.deb: A.deb B.dsc B.tar.gz
        <command(s) to build B.deb>

A.deb: A.dsc A.tar.gz
        <command(s) to build A.deb>

Зверніть увагу, що відступ команди є TAB.

З цим Makefileви б використали команду

make

і це дозволить розробити, які пакунки потрібно створити та в якому порядку, а потім створити їх, все залежно від часових позначок файлів. Наприклад, якщо скажімо B.tar.gz, що часова мітка пізніше B.deb(тобто пакет Bмає нове джерело), ​​то це спочатку призведе B.debдо перебудови, а оскільки це зробить печатку пізніше C.deb, це також призведе C.debдо його перебудови.


1

Ну, можливо, я абсолютно не вистачаю вашої точки зору, але це здається, що ви перекомпілюєте пакет A і хочете перекомпілювати пакети B&C, для чого я б просто нам створив файл файлу .


Чи можете ви пояснити детальніше?
xiaodongjie

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