Чи існує простий спосіб автоматичного виправлення джерел ubuntu, коли вони стають доступними та завантажуються до PPA?


9

Я шукаю інструмент для наступного:

  • Автоматично виявляти оновлення для набору вихідних пакетів (зокрема gtk + 2 та gtk + 3)
  • завантажити вихідний пакет
  • застосувати власні спеціальні патчі до джерела
  • правильно виконати виправлення ( dpkg-source --commit [something-or-other]?)
  • у разі успішного завантаження їх до PPA на Launchpad (до чого я можу вказувати свою систему звичайним способом).

Чи може Launchpad зробити все це для мене?

Якщо ні, чи є інструмент, який автоматично зробить усе це з роботи з cron?

Якщо не буде сказано вище, я щось зберу разом, але які команди мені потрібно:

  • виявити та завантажити оновлення вихідного пакета? (Я б хотів щось подібне (bzr | git) тягнути, а не щоразу підходити до отримання джерела абсолютно нової копії)
  • автоматично ввести патч локально (я використовував би той самий опис фіксації кожен раз)?
  • завантажувати джерела неінтерактивно в PPA?

Я знайшов питання ( що є правильним способом виправити Wine за користувацьким PPA? ), Яке схоже, але кроки у відповіді все ще в основному ручні та інтерактивні. Повністю рукотворна версія плюс автоматичне виявлення оновлень джерел допоможе дуже багато.

Відповіді:


2

Що ж, це звучить, як рецепти упаковки - це шлях до цього. В основному, рецепти упаковки можуть автоматично створювати вихідні пакети Ubuntu та завантажувати їх у PPA кожного разу, коли bzr гілка на Launchpad змінюється. Документація досить добре, але я дам кілька прикладів ...

Спочатку ви вказуєте гілку для відстеження (наприклад, lp:gtk3), а потім додаєте команду вкладати власну гілку упаковки Debian у цю гілку. Погляньте на цей рецепт, який я створив для щоденних складок Inkscape.

# bzr-builder format 0.4 deb-version 1:0.48+devel+{revno}+{revno:packaging}
lp:inkscape
nest packaging lp:~inkscape.dev/inkscape/debian-packaging debian

Цей рецепт створює пакет Ubuntu щодня, використовуючи останнє джерело для поточного потоку для Inkscape, але копіює спеціалізовані інструкції щодо упаковки Debian з lp:~inkscape.dev/inkscape/debian-packagingгілки у підпапку під назвою " debian".

Сторінка рецептів упаковки на Launchpad дозволяє вказати, до якого PPA автоматично завантажувати ваші пакунки. У нашому випадку він завантажений тут .

Як альтернативний підхід, ви можете базувати свій рецепт на існуючому пакеті Ubuntu, а не безпосередньо на вихідному джерелі. Наприклад, lp:ubuntu/gtk+3.0. Потім вам потрібно буде створити гілку цього коду та здійснити будь-які потрібні вам зміни. Назвемо це lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-build, наприклад. Потім ви створите рецепт для автоматичного злиття змін, а не інструкцій щодо створення гнізд. Рецепт виглядав би приблизно так:

# bzr-builder format 0.4 deb-version {debversion}+{date}
lp:ubuntu/gtk+3.0
merge my-custom-build lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-build

Таким чином, цей рецепт автоматично створює спеціальний вихідний пакет Ubuntu та завантажує його у ваш PPA, коли відбувається зміна офіційного пакету Ubuntu.

Якщо ви скористаєтеся таким підходом "злиття", то у вас є два варіанти застосування ваших патчів. Або ви просто відредагуйте вихідний вихідний код безпосередньо у своїй філії та дозвольте bzr подбати про його злиття, або ви можете створити патч-файли всередині debian/папки за допомогою ковдри. У кожного є свої переваги / недоліки. Колишній підхід трохи розумніший ... якщо один з ваших патчів буде прийнятий розробником вгору, тоді злиття зазвичай все ще працюватиме, і пакет Ubuntu створить OK. Останній підхід дозволяє вам обробляти свої патчі, використовуючи стандартний підхід, заснований на Debian, зберігати код упаковки окремо від коду вище за течією ... однак, якщо розробник верхнього потоку прийняв один із ваших патчів, то ковдра не зможе застосувати (дублікат) патч і пакет не вдасться створити.


Але яку версію gtk-3 lp:ubuntu/gtk+3.0відстежує? Поточна стабільна чи поточна версія розробки?
Хуршид Алам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.