Differences between revisions 12 and 14 (spanning 2 versions)
Revision 12 as of 2017-12-08 14:46:59
Size: 5066
Comment: sync with english master
Revision 14 as of 2020-09-24 12:41:54
Size: 7409
Comment: sync with English master v.28
Deletions are marked like this. Additions are marked like this.
Line 16: Line 16:
 * Un How-To del Debian Perl Group: [[http://pkg-perl.alioth.debian.org/howto/quilt.html|Quilt per i Debian Maintainer]].  * Un How-To del Debian Perl Group: [[https://perl-team.pages.debian.net/howto/quilt.html|Quilt per i Debian Maintainer]].
Line 24: Line 24:
{{{ {{{#!wiki yellow
Line 41: Line 41:
QUILT_PATCH_OPTS="--reject-format=unified"
QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:diff_rem=1;31:diff_hunk=1;33:diff_ctx=35:diff_cctx=33"
Line 45: Line 47:
In alternativa si possono aggiungere queste righe al file .bashrc, o altrimenti eseguirle nella shell prima di usare quilt. In alternativa si possono impostare a mano le variabili d'ambiente.
Line 47: Line 49:
{{{
export QUILT_PATCHES=debian/patches
Add these lines to your shell's init scripts (~/.bashrc), and restart your shell to apply the changes. Or, run them in your shell before using quilt.
Aggiungere queste righe agli script di inizializzazione della shell (~/.bashrc) e riavviare la shell per rendere effettivi i cambiamenti. Oppure eseguirle nella shell prima di usare quilt.

{{{#!wiki yellow
export QUILT_PATCHES=debian/patches<<BR>>
Line 60: Line 65:
        QUILT_PATCH_OPTS="--reject-format=unified"
        QUILT_DIFF_ARGS="-p ab --no-timestamps --no-index --color=auto"
        QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"
        QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:diff_rem=1;31:diff_hunk=1;33:diff_ctx=35:diff_cctx=33"
Line 70: Line 72:
"apt-get source" decide se applicare le patch in base al formato del pacchetto. Per alcuni pacchetti sarà necessario applicare le patch come descritto qui. Per altri verranno applicate automaticamente. "apt-get source" decide se applicare le patch in base al formato del pacchetto.

Per alcuni pacchetti sarà necessario applicare le patch come descritto qui. Per altri verranno applicate automaticamente.
Line 74: Line 78:
{{{ {{{#!wiki yellow
Line 82: Line 86:
{{{ {{{#!wiki yellow
Line 86: Line 90:
{{{
quilt add README # Dove 'README' è il nome del file da modificare. Va fatto preventivamente per tutti i file che saranno modificati, una patch di quilt può modificare più file
'''Aggiungere un file'''

{{{#!wiki yellow
quilt add README # Dove 'README' è il nome del file da modificare.
Line 89: Line 95:

Va fatto, prima di cambiarli, per tutti i file che saranno modificati, una patch di quilt può modificare più file.
Line 96: Line 104:
{{{ {{{#!wiki yellow
Line 98: Line 106:
}}}

'''Aggiungere una descrizione alle intestazioni'''

{{{#!wiki yellow
quilt header -e #modifica l'intestazione in $EDITOR
Line 102: Line 116:
{{{
quilt pop -a #revoca tutte le patch in modo che i sorgenti ritornino alla condizione in cui erano al momento del download
{{{#!wiki yellow
quilt pop -a
Line 105: Line 119:

Questo revoca l'applicazione di tutte le patch in modo che i sorgenti ritornino alla condizione in cui erano al momento in cui sono stati scaricati.
Line 112: Line 128:
{{{ {{{#!wiki yellow
Line 116: Line 132:
E una volta modificata: Ora modificarla e, quando pronta, salvarla:

{{{#!wiki yellow
quilt refresh miaPatch.diff
}}}

Notare che il completamento automatico fa risparmiare in scrittura ed evita errori.

=== Ripristinare una patch che non è stata applicata con successo ===

Se l'applicazione della patch è fallita (solitamente quando si aggiorna ad un rilascio a monte nuovo) quando si esegue `quilt push` come nell'esempio sottostante:
Line 119: Line 145:
quilt refresh miaPatch.diff #nota: il completamento automatico fa risparmiare in scrittura ed evita errori $ quilt push
Applying patch CVE-2018-1000544_part1.patch
patching file lib/zip/entry.rb
Hunk #1 FAILED at 147.
1 out of 1 hunk FAILED -- rejects in file lib/zip/entry.rb
patching file test/data/absolutepath.zip
patching file test/entry_test.rb
Patch CVE-2018-1000544_part1.patch does not apply (enforce with -f)
Line 123: Line 156:
$ quilt push -f
Applying patch CVE-2018-1000544_part1.patch
patching file lib/zip/entry.rb
Hunk #1 FAILED at 147.
1 out of 1 hunk FAILED -- saving rejects to file lib/zip/entry.rb.rej
patching file test/data/absolutepath.zip
patching file test/entry_test.rb
Applied patch CVE-2018-1000544_part1.patch (forced; needs refresh)
}}}

si dovrebbero ispezionare i file `*.rej` (`lib/zip/entry.rb.rej` in questo esempio) e adattare `lib/zip/entry.rb` in modo da includere la modifica voluta.

Se la modifica è stata incorporata dagli autori a monte, si può rimuoverla dalla propria patch. Ad esempio:

{{{
$ quilt refresh
Diff failed on file 'test/data/absolutepath.zip', aborting
# In questo caso la modifica a absolutepath.zip è già stata fatta dagli autori originali a monte.

# Rimuovere perciò il file dalla patch:
$ quilt remove test/data/absolutepath.zip
File test/data/absolutepath.zip removed from patch CVE-2018-1000544_part1.patch
$ quilt refresh
}}}

=== Aggiornare i commenti nelle intestazioni della patch in cima allo stack ===

{{{#!wiki yellow
quilt header -e
}}}

Ora che sono state salvate le modifiche, rimuovere tutte le patch e riportare i sorgenti nello stato originale

{{{#!wiki yellow
Line 127: Line 194:
CategoryPackaging

Traduzioni: English - Italiano


Usare Quilt con i pacchetti sorgenti Debian

  • Questa pagina si rivolge a chi vuole apportare modifiche ad un pacchetto sorgente di Debian che sta già utilizzando quilt.
  • L'intenzione non è di spiegare quilt ma di offrire alcuni suggerimenti specifici per Debian.

Informazioni generali

Documentazione

Concetti base

quilt funziona usando alcune directory: crea una directory .pc/ e una patches/.

Queste directory possono essere create quando si usa

  • $ quilt import un_qualche_package.diff.gz

Utilizzare quilt con i pacchetti sorgente Debian

Situazione: è stato scaricato un pacchetto di sorgenti Debian che usa quilt e si vuole correggere un bug per poi presentare una patch al maintainer.

Usare il file di configurazione .quiltrc

Mettere un file di configurazione .quiltrc nella propria directory home, contenente le righe seguenti.

QUILT_PATCHES=debian/patches
QUILT_NO_DIFF_INDEX=1
QUILT_NO_DIFF_TIMESTAMPS=1
QUILT_REFRESH_ARGS="-p ab"
QUILT_DIFF_ARGS="--color=auto" # se si desiderano i colori quando si usa `quilt diff`.
QUILT_PATCH_OPTS="--reject-format=unified"
QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:diff_rem=1;31:diff_hunk=1;33:diff_ctx=35:diff_cctx=33"

Variabili d'ambiente

In alternativa si possono impostare a mano le variabili d'ambiente.

Add these lines to your shell's init scripts (~/.bashrc), and restart your shell to apply the changes. Or, run them in your shell before using quilt. Aggiungere queste righe agli script di inizializzazione della shell (~/.bashrc) e riavviare la shell per rendere effettivi i cambiamenti. Oppure eseguirle nella shell prima di usare quilt.

export QUILT_PATCHES=debian/patches
export QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"

Incapsulato

Per applicare le opzioni di quilt solo quando all'interno di un pacchetto sorgente Debian, si può impostare il proprio file ~/.quiltrc in modo simile a questo:

d=. ; while [ ! -d $d/debian -a `readlink -e $d` != / ]; do d=$d/..; done
if [ -d $d/debian ] && [ -z $QUILT_PATCHES ]; then
        # if in Debian packaging tree with unset $QUILT_PATCHES
        QUILT_PATCHES="debian/patches"

        if ! [ -d $d/debian/patches ]; then mkdir $d/debian/patches; fi
fi

Operazioni quilt di base

Creare una nuova patch

"apt-get source" decide se applicare le patch in base al formato del pacchetto.

Per alcuni pacchetti sarà necessario applicare le patch come descritto qui. Per altri verranno applicate automaticamente.

Primo passo: applicare patch esistenti ai sorgenti

quilt push -a

per "inserire" tutte le patch esistenti nell'albero dei sorgenti (quando si crea un pacchetto questo è fatto dagli script di compilazione)

Creare una nuova patch

quilt new miaPatch.diff # questo è il nome della patch

Aggiungere un file

quilt add README # Dove 'README' è il nome del file da modificare.

Va fatto, prima di cambiarli, per tutti i file che saranno modificati, una patch di quilt può modificare più file.

Modificare i sorgenti

Apporre i cambiamenti ai file aggiunti alla patch: modificarli o sostituirli con un file già modificato salvato in una directory diversa.

Aggiornare una patch con le modifiche fatte ai file

quilt refresh #si può ripetere quante volte si vuole

Aggiungere una descrizione alle intestazioni

quilt header -e #modifica l'intestazione in $EDITOR

Completare la modifica

quilt pop -a

Questo revoca l'applicazione di tutte le patch in modo che i sorgenti ritornino alla condizione in cui erano al momento in cui sono stati scaricati.

Modificare una patch esistente

quilt gestisce patch multiple ma se ne può modificare solo una, ovvero l'ultima inserita.

Per modificare una patch esistente si comincia con l'inserirla:

quilt push miaPatch.diff

Ora modificarla e, quando pronta, salvarla:

quilt refresh miaPatch.diff

Notare che il completamento automatico fa risparmiare in scrittura ed evita errori.

Ripristinare una patch che non è stata applicata con successo

Se l'applicazione della patch è fallita (solitamente quando si aggiorna ad un rilascio a monte nuovo) quando si esegue quilt push come nell'esempio sottostante:

$ quilt push
Applying patch CVE-2018-1000544_part1.patch
patching file lib/zip/entry.rb
Hunk #1 FAILED at 147.
1 out of 1 hunk FAILED -- rejects in file lib/zip/entry.rb
patching file test/data/absolutepath.zip
patching file test/entry_test.rb
Patch CVE-2018-1000544_part1.patch does not apply (enforce with -f)

$ quilt push -f
Applying patch CVE-2018-1000544_part1.patch
patching file lib/zip/entry.rb
Hunk #1 FAILED at 147.
1 out of 1 hunk FAILED -- saving rejects to file lib/zip/entry.rb.rej
patching file test/data/absolutepath.zip
patching file test/entry_test.rb
Applied patch CVE-2018-1000544_part1.patch (forced; needs refresh)

si dovrebbero ispezionare i file *.rej (lib/zip/entry.rb.rej in questo esempio) e adattare lib/zip/entry.rb in modo da includere la modifica voluta.

Se la modifica è stata incorporata dagli autori a monte, si può rimuoverla dalla propria patch. Ad esempio:

$ quilt refresh 
Diff failed on file 'test/data/absolutepath.zip', aborting
# In questo caso la modifica a absolutepath.zip è già stata fatta dagli autori originali a monte.

# Rimuovere perciò il file dalla patch:
$ quilt remove test/data/absolutepath.zip 
File test/data/absolutepath.zip removed from patch CVE-2018-1000544_part1.patch
$ quilt refresh 

Aggiornare i commenti nelle intestazioni della patch in cima allo stack

quilt header -e

Ora che sono state salvate le modifiche, rimuovere tutte le patch e riportare i sorgenti nello stato originale

quilt pop -a


CategoryPackaging