Comment mettre à jour les packages Ubuntu depuis la source?

8

Je voudrais créer une version mise à jour du package network-manager-openconnect dans Ubuntu. Apparemment, j'ai besoin d'obtenir la dernière source de package:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head

Alors quoi? Le paquet semble avoir un moyen de se mettre à jour à partir du dernier code en amont en utilisant git. Mais comment puis-je le faire?

James Ward
la source
Je pensais que bzr signifiait bazar - bazaar.canonical.com/en
Paul

Réponses:

6

La construction d'un package mis à jour à partir d'une branche bzr a tendance à différer sensiblement selon qui gère les branches ou comment le package fonctionne en général. Cependant, voici quelques directives pour une mise à jour rapide et sale de n'importe quel paquet, à pousser vers un PPA:

Obtenez la succursale:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head

Ensuite, passez-y et mettez à jour le journal des modifications:

dch -i

dch -i ouvrira simplement une nouvelle entrée dans debian / changelog, augmentant la révision de version d'une unité . Si vous souhaitez ajouter un correctif, c'est parfait, mais si vous souhaitez mettre à jour vers une version plus récente du logiciel en amont, vous devrez mettre à jour le numéro de version avant le tiret (-). Disons, une version dans 1.2-0ubuntu1 , si vous démarrez dch -i, elle passera à 1.2-0ubuntu2 , ce qui est bon pour les correctifs, mais si vous avez besoin d'une nouvelle version, vous voudrez probablement la changer en 1.3-0ubuntu1 .

Si vous avez besoin de patcher, il est maintenant temps d'ajouter vos modifications. Dans les branches qui n'ont qu'un répertoire debian / , vous pouvez utiliser bzr bd-do (nécessite le paquet bzr-builddeb) pour basculer vers une arborescence de travail où vous pouvez effectuer des modifications, utiliser quilt ou tout système de correctifs, puis "quitter 0" pour recopiez vos modifications.

Si vous voulez une nouvelle version en amont, une fois le journal des modifications modifié, vous exécuterez probablement une commande similaire à celle-ci:

debian/rules get-orig-source

Cela télécharge généralement l'archive tar appropriée de l'éditeur en amont pour vous aider à démarrer. Si d'autres modifications sont nécessaires, procédez comme ci-dessus pour "patcher" ou changer d'autres fichiers dans le répertoire debian / , sinon vous avez presque terminé:

bzr bd -S

bzr bd se chargera de la construction. L'appeler sans argument commence à s'appuyer sur votre système, tandis que l'appeler avec -S lui dit de préparer un paquet source, qui comprendra un fichier ..._ source.changes qui est ce que vous voulez télécharger sur votre PPA (utilisez dput ppa: <yourname> / <nom de votre ppa> <fichier de modifications> pour cela).


Pour les packages NetworkManager, c'est un peu différent. Voyons plus précisément openconnect:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head network-manager-openconnect

Assurez-vous que vous disposez également de toutes les dépendances de génération: sudo get-build-deps

Une fois la branche récupérée, ceci lira le fichier debian / control et essaiera de télécharger tout ce dont vous avez besoin pour construire network-manager-openconnect. Vous pourriez aussi avoir besoin de git. Une fois cela fait, exécutez get-orig-source pour obtenir simplement l'archive tar du dernier instantané de git:

debian/rules get-orig-source

Vous verrez le texte passer et une archive tar avec un long numéro de version apparaît. C'est le dernier code que vous pouvez obtenir pour nm-openconnect.

Vous devrez ensuite mettre à jour le journal des modifications avec le numéro de version de l'archive tar, tout en conservant le suffixe -0ubuntu1 intact.

Ou, changez debian / changelog avec le numéro de version spécifique que vous voulez, puis exécutez: debian / rules get-current-source

Étant donné que les plugins ne changent pas beaucoup, vous devriez pouvoir simplement construire le package à partir de là, en utilisant bzr bd comme ci-dessus. Sinon, appliquez les modifications nécessaires comme ci-dessus.

N'oubliez pas de valider bzr après avoir apporté des modifications.

J'ai d'abord oublié d'ajouter, n'hésitez pas à utiliser le système de proposition de fusion ( Proposer de fusionner le lien de la page de votre branche sur LP) lorsque les modifications que vous apportez pourraient bénéficier à d'autres. Habituellement, vous pouvez simplement proposer de fusionner avec la branche sur laquelle votre base est basée (par exemple lp: ~ network-manager / network-manager / openconnect-ubuntu.head dans ce cas).

Mathieu Trudel-Lapierre
la source
J'ai pensé que je devais oublier quelque chose: n'ayez pas peur de faire apparaître vos modifications pour les fusionner dans la branche principale de l'emballage si c'est un correctif d'emballage (cela inclut également les correctifs), afin que tout le monde puisse bénéficier des changements! :)
Mathieu Trudel-Lapierre
2

Ok mis à jour sur la façon d'extraire le code de la zone de lancement

bzr branch lp: ~ gestionnaire-réseau / gestionnaire-réseau / openconnect-ubuntu.head

Ce que cette dose est de tirer le code du lp (service d'hébergement du tableau de bord). Nous devons trouver où se trouve le code.

man bzr
343 #type 343 lorsque la page de manuel s'affiche.

bzr branch FROM_LOCATION [TO_LOCATION]        
       If  the TO_LOCATION is omitted, the last component of the FROM_LOCATION
       will be used.  In other words, "branch ../foo/bar" will attempt to cre‐
       ate  ./bar.   If the FROM_LOCATION has no / or path separator embedded,
       the TO_LOCATION is derived from the FROM_LOCATION by stripping a  lead‐
       ing   scheme   or  drive  identifier,  if  any.  For  example,  "branch
       lp:foo-bar" will attempt to create ./foo-bar.

Essayez de passer au répertoire dans lequel vous souhaitez travailler ou d'ajouter le répertoire dans lequel vous et le code aller.

cd / home / [votre nom d'utilisateur] / [chemin vers le
répertoire de développement] ou bzr branch lp: ~ network-manager / network-manager / openconnect-ubuntu.head / home / [votre nom d'utilisateur] / [chemin vers le répertoire de développement]
par exemple bzr branch lp: ~ network-manager / network-manager / openconnect-ubuntu.head / home / joe / projects / network-manger / dev

Si vous l'avez déjà fait, vous avez probablement un répertoire dans votre répertoire personnel

ls ~
./openconnect-ubuntu.head

Il devrait y avoir un fichier README dans ce répertoire pour voir ce qui devrait y être jeter un œil au code du projet , voici un lien vers README.source

README devrait avoir des instructions sur la construction de ce projet individuel.

Autres outils bzr utiles à installer

sudo apt-get install bzr-builddeb bzr-builder bzr-explorer quilt

Le bzr-explorere vous permettra de parcourir vos référentiels bzr que vous avez créés sur votre machine dans une interface graphique.

Une autre note. Vous devrez peut-être extraire l'intégralité de la source du gestionnaire de réseau afin de créer l'unique composant.

Vous devez créer un correctif pour le package opneconnect actuel, puis créer un correctif à l'aide de tous les outils de diff que vous utilisez. Et envoyez-le au responsable du package.

Ou si vous souhaitez utiliser votre nouveau package de correctifs localement, vous souhaitez créer un fichier de package .deb.

Créer un paquet c'est assez compliqué lire les liens suivants

nelaaro
la source
Merci. Mais je ne sais toujours pas comment extraire le dernier code de gestionnaire de réseau-openconnect de git. Les fichiers que j'ai extraits avec bzr ont un script dans debian / rules qui semble pouvoir faire le pull git mais je ne sais pas comment exécuter le script correctement.
James Ward
@james launchpad extrait la source en amont du référentiel git du projet nework-manager hébergé par la communauté gnome. Vous n'avez donc pas besoin d'utiliser git pour extraire le référentiel. lisez la documentation de bzr et faites quelques tutoriels pour avoir une idée du fonctionnement de bzr. Autre sage check out git over à stackoverflow
nelaaro
@james plus simple pourrait être de simplement télécharger le fichier .tar.gz au bas de cette page ou directement en utilisant ce lien
nelaaro
Il semble que bzr ait un moyen simple de créer une branche, puis de mettre à jour vers la dernière source d'origine.
James Ward