web-dev-qa-db-fra.com

Existe-t-il un moyen simple de corriger automatiquement les sources Ubuntu lorsqu'elles deviennent disponibles et téléchargées sur un PPA?

Je cherche un outil pour faire ce qui suit:

  • Détecter automatiquement les mises à jour d'un ensemble de packages source (spécifiquement gtk + 2 et gtk + 3)
  • télécharger le package source
  • appliquer mes propres correctifs personnalisés à la source
  • valider correctement le patch (dpkg-source --commit [something-or-other]?)
  • en cas de succès, téléchargez-les sur un PPA sur Launchpad (sur lequel je peux ensuite pointer mon système de la manière habituelle).

Launchpad peut-il faire tout cela pour moi?

Sinon, existe-t-il un outil qui fera automatiquement tout cela à partir d'une tâche cron?

À défaut de ce qui précède, je vais associer quelque chose moi-même, mais de quelles commandes ai-je besoin pour:

  • détecter et télécharger les mises à jour du package source? (Je préfère quelque chose comme (bzr | git) pull plutôt que d'avoir à obtenir à chaque fois une nouvelle copie)
  • valider automatiquement le patch localement (j'utiliserais la même description de commit à chaque fois)?
  • télécharger les sources de manière non interactive vers un PPA?

J'ai trouvé une question ( Quelle est la bonne façon de patcher Wine pour un PPA personnalisé? ), qui est similaire mais les étapes de la réponse sont toujours essentiellement manuelles et interactives. Une version complètement simplifiée de cela, plus la détection automatique des mises à jour sources, serait très utile.

9
Nick Booker

Eh bien, cela ressemble à recettes d'emballage sont le chemin à parcourir ici. Fondamentalement, les recettes de packaging peuvent créer automatiquement des packages source Ubuntu et les télécharger sur un PPA chaque fois qu'une branche bzr sur Launchpad change. Le documentation en ligne est assez bon, mais je vais donner quelques exemples ...

Tout d'abord, vous spécifiez une branche à suivre (par exemple, lp:gtk3 ) puis ajoutez une commande pour imbriquer votre propre branche d'empaquetage Debian dans cette branche. Jetez un oeil à cette recette J'ai créé pour les versions quotidiennes d'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

Cette recette crée un paquet Ubuntu chaque jour en utilisant la dernière source en amont pour Inkscape, mais copie des instructions d'empaquetage Debian personnalisées à partir du lp:~inkscape.dev/inkscape/debian-packaging branchez-vous dans un sous-dossier appelé "debian".

La page de recette d'emballage sur Launchpad vous permet de spécifier vers quel PPA télécharger automatiquement vos colis. Dans notre cas, il est téléchargé ici .

Comme approche alternative, vous pouvez baser votre recette sur un package Ubuntu existant plutôt que directement sur la source en amont. Par exemple, lp:ubuntu/gtk+3.0 . Vous devez ensuite créer une branche de ce code et valider toutes les modifications dont vous avez besoin. Appelons ça lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-build, par exemple. Vous créeriez alors une recette pour automatiquement fusionnez vos modifications plutôt que d'imbriquer les instructions d'emballage. La recette ressemblerait à quelque chose comme:

# 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

Cette recette crée donc automatiquement un package source Ubuntu personnalisé et le télécharge sur votre PPA chaque fois qu'il y a un changement dans le package Ubuntu officiel.

Si vous adoptez cette approche de "fusion", vous avez deux options pour appliquer vos correctifs. Soit vous éditez simplement le code source en amont directement dans votre branche et laissez bzr se charger de le fusionner, soit vous pouvez créer des fichiers de correctif à l'intérieur du debian/ dossier à l'aide de la courtepointe. Chacun a ses propres avantages/inconvénients. L'ancienne approche est un peu plus intelligente ... si l'un de vos correctifs est adopté par le développeur en amont, la fusion fonctionnera généralement et le package Ubuntu se construira correctement. Cette dernière approche vous permet de gérer vos correctifs en utilisant l'approche standard basée sur Debian de garder le code de conditionnement séparé du code en amont ... cependant, si le développeur en amont adopte l'un de vos correctifs, quilt ne pourra pas appliquer le (duplicata) patch et le package ne parviendra pas à construire.

2
Alex Valavanis