Come aggiorno i pacchetti Ubuntu dal sorgente?


8

Vorrei creare una versione aggiornata del pacchetto network-manager-openconnect in Ubuntu. Apparentemente ho bisogno di ottenere l'ultima fonte del pacchetto:

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

E allora? Il pacchetto sembra avere un modo per aggiornarsi dall'ultimo codice upstream usando git. Ma come faccio a farlo?


Pensavo che bzr volesse dire bazar - bazaar.canonical.com/it
Paul

Risposte:


6

La creazione di un pacchetto aggiornato da una filiale bzr tende a differire in modo equo a seconda di chi gestisce le filiali o di come funziona il pacchetto in generale. Tuttavia, ecco alcune linee guida per un aggiornamento rapido e sporco di quasi tutti i pacchetti, da inviare a un PPA:

Ottieni la filiale:

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

Quindi passare ad esso e aggiornare il log delle modifiche:

dch -i

dch -i aprirà semplicemente una nuova voce in debian / changelog, aumentando la revisione della versione di uno. Se vuoi aggiungere una patch, è perfetto, ma se vuoi aggiornare a una versione più recente del software upstream, dovrai aggiornare il numero di versione prima del trattino (-). Ad esempio, una versione in 1.2-0ubuntu1 , se avvii dch -i cambierà in 1.2-0ubuntu2 , il che è buono per il patching ma se hai bisogno di una nuova versione probabilmente vorrai cambiarla in 1.3-0ubuntu1 .

Se hai bisogno di patch, ora è il momento di aggiungere le tue modifiche. Nei rami che hanno solo una directory debian / , puoi usare bzr bd-do (richiede il pacchetto bzr-builddeb) per passare ad un albero di lavoro in cui puoi fare cambiamenti, usare quilt o qualsiasi sistema di patch, quindi "esci da 0" per avere le modifiche copiate indietro.

Se desideri una nuova versione upstream, una volta modificato il log delle modifiche probabilmente eseguirai un comando simile a questo:

debian/rules get-orig-source

Questo di solito scaricherà il tarball giusto dall'editore a monte per iniziare. Se sono necessarie ulteriori modifiche, procedere come sopra per "patchare" o cambiare altri file nella directory debian / , altrimenti hai quasi finito:

bzr bd -S

bzr bd si occuperà della costruzione. Chiamarlo senza argomenti inizia a costruire sul tuo sistema, mentre chiamarlo con -S gli dice di preparare un pacchetto sorgente, che includerà un file ..._ source.changes che è quello che vuoi caricare sul tuo PPA (usa dput ppa: <nomeutente> / <nome del ppa> <modifica file> per farlo).


Per i pacchetti NetworkManager, è un po 'diverso. Diamo un'occhiata a openconnect in particolare:

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

Assicurati di avere anche tutte le dipendenze di compilazione: sudo get-build-deps

Con il ramo recuperato, questo leggerà il file debian / control e proverà a scaricare tutto il necessario per costruire network-manager-openconnect. Potrebbe essere necessario anche git. Una volta fatto, esegui get-orig-source per ottenere solo il tarball dell'ultima istantanea da git:

debian/rules get-orig-source

Vedrai volare il testo e apparirà un tarball con un numero di versione lungo. Questo è l'ultimo codice che potresti ottenere per nm-openconnect.

Sarà quindi necessario aggiornare il log delle modifiche con il numero di versione dal tarball, mantenendo intatto il suffisso -0ubuntu1 .

Oppure, cambia debian / changelog con il numero di versione specifico che desideri, quindi esegui: debian / rules get-current-source

Dato che i plugin non cambiano molto, dovresti essere in grado di compilare il pacchetto da lì, usando bzr bd come sopra. In caso contrario, applicare le modifiche necessarie come sopra.

Non dimenticare di bzr commit dopo aver apportato le modifiche.

Ho prima dimenticato di aggiungere, non esitare a utilizzare il sistema di proposta di unione ( Proponi di unire la pagina della tua filiale su LP) quando le modifiche che stai apportando potrebbero andare a vantaggio degli altri. Di solito puoi semplicemente proporre di unirti al ramo su cui si basa il tuo (ad esempio lp: ~ network-manager / network-manager / openconnect-ubuntu.head in questo caso).


Ho pensato che dovevo dimenticare qualcosa: non aver paura di far apparire le tue modifiche per unirle al ramo del packaging principale se si tratta di una correzione del packaging (comprese anche le patch), in modo che tutti possano beneficiare delle modifiche! :)
Mathieu Trudel-Lapierre,

2

Ok aggiornato su come estrarre il codice da Launch Pad

bzr branch lp: ~ gestore di rete / gestore di rete / openconnect-ubuntu.head

A cosa serve questa dose estrarre il codice da lp (launchpad hosting service). Dobbiamo trovare dove si trova il codice.

man bzr
343 #type 343 mentre viene visualizzata la pagina man.

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.

Prova a passare alla directory in cui vuoi lavorare o ad aggiungere la directory in cui tu e il codice vai.

cd / home / [il tuo nome utente] / [percorso alla
directory di sviluppo] o bzr branch lp: ~ gestore di rete / gestore di rete / openconnect-ubuntu.head / home / [il tuo nome utente] / [percorso alla directory di sviluppo]
ad esempio bzr branch lp: ~ gestore di rete / gestore di rete / openconnect-ubuntu.head / home / joe / progetti / network-manger / dev

Se lo hai già fatto, probabilmente hai una directory nella tua home directory

ls ~
./openconnect-ubuntu.head

Dovrebbe esserci un campo README in quella directory per vedere cosa dovrebbe essere lì dare un'occhiata al codice del progetto , ecco un link a README.source

README dovrebbe avere le istruzioni per costruire quel singolo progetto.

Altri utili strumenti bzr da installare

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

Bzr-explorere ti permetterà di sfogliare i tuoi repository bzr che hai creato sulla tua macchina in una GUI.

Un'altra nota Potrebbe essere necessario estrarre l'intera origine del gestore di rete per creare l'openconnect a un componente. Potrebbero esserci molte dipendenze e tra componenti diversi.

È necessario creare una correzione per il pacchetto opneconnect corrente, quindi creare una patch utilizzando tutti gli strumenti diff che si utilizzano. E inviarlo al manutentore del pacchetto.

Oppure, se si desidera utilizzare il nuovo pacchetto di correzione localmente, si desidera creare un file di pacchetto .deb.

La creazione di un pacchetto è abbastanza impegnativa leggere i seguenti collegamenti


Grazie. Ma non sono ancora sicuro di come estrarre l'ultimo codice di gestore di rete-openconnect da git. I file che ho tirato giù con bzr hanno uno script in debian / rules che sembra essere in grado di eseguire il git pull ma non so come eseguire correttamente lo script.
James Ward,

@james launchpad estrae la sorgente upstream dalla reposity git del progetto nework -manager ospitato dalla comunità gnome. Quindi non è necessario usare git per estrarre il repository. leggi la documentazione di bzr ed esegui alcuni tutorial per avere un'idea di come funziona bzr. Altro saggio check out su
stackoverflow

@james più semplice potrebbe essere semplicemente scaricare il file .tar.gz in fondo a questa pagina o direttamente usando questo link
nelaaro

Sembra che bzr abbia un modo semplice per ramificarsi e quindi aggiornarsi all'ultima fonte originale.
James Ward,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.