Есть ли простой способ автоматически исправлять исходники Ubuntu по мере их появления и загружать в PPA?

Я ищу инструмент для следующего:

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

Может ли Launchpad сделать все это для меня?

Если нет, есть ли инструмент, который будет автоматически делать все это из задания cron?

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

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

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

9
задан 13 April 2017 в 15:23

1 ответ

Что ж, похоже, рецепты упаковки - вот путь. По сути, рецепты упаковки могут автоматически создавать исходные пакеты 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».

На странице рецептов упаковки на панели запуска вы можете указать, в какой 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/, используя quilt. У каждого есть свои преимущества / недостатки. Первый подход немного умнее ... если один из ваших патчей будет принят вышестоящим разработчиком, то слияние обычно все равно будет работать, и пакет Ubuntu будет работать нормально. Последний подход позволяет вам обрабатывать ваши патчи, используя стандартный подход на основе Debian, заключающийся в том, чтобы отделить код упаковки от исходного кода ... однако, если вышестоящий разработчик примет один из ваших патчей, то Quilt не сможет применить (дублировать) патч и пакет не удастся собрать.

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: