Dpkg-sig: Firma dei packages .deb: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
mNessun oggetto della modifica
Riga 1: Riga 1:
Per poter firmare i nostri package necessitiamo di sue strumenti per poter firmare i nostri package necessitiamo di due strumenti '''gpg''' e '''dpkg-sig'''.
Spesso abbiamo la necessit� di installare la nuova versione di un pacchetto di cui proprio non possiamo fare a meno, che per� non � disponibile per il rilascio di Debian che abbiamo installato.


Il primo dovrebbe essere già installato di default con la nostra debian, per il secondo:
Il caso pi� frequente � probabilmente quello di un' installazione di Testing (Etch) con la necessit� di installare anche pacchetti presenti solo in Unstable o in Experimental, oppure di voler usare un repository con pacchetti particolari, ma compilati per una release di Debian diversa dalla nostra.


APT nostro fido alleato anche in questi frangenti, permettendoci di utilizzare fonti per pacchetti di releases diverse (e soddisfarne le dipendenze) senza costringerci ad un upgrade dell' intera distribuzione e senza dover impazzire per risolvere conflitti e inconsistenze.
In questo how-to mostrer come utilizzare pacchetti Debian provenienti da Testing, Unstable, Experimental, Marillat (multimedia/video) e Rarewares.org (multimedia/audio), ma le istruzioni sono facilmente riportabili anche ad altre situazioni (unstable + experimental, stable + testing, stable + unstable, stable + testing + unstable, ecc...).
Assicuriamoci di essere l' utente root e procediamo.
Per prima cosa editiamo il file '''/etc/apt/sources.list''' ed inseriamo gli archivi dei pacchetti Debian che utilizzeremo:
<pre>
<pre>
# apt-get install dpkg-sig
### Debian Ufficiale -- Testing
</pre>
deb http://ftp.it.debian.org/debian/ testing main non-free contrib
 
### Debian Ufficiale -- Testing Sicurezza
deb http://security.debian.org/ testing/updates main contrib non-free


fatto questo generiamo una nuova coppia di chiavi , da usare solo per firmare i packages:
### Debian Ufficiale -- Sid
deb http://ftp.it.debian.org/debian/ unstable main non-free contrib


<pre>
###  Debian Ufficiale -- Experimental
$ gpg --gen-key
deb http://ftp.debian.org/debian/ ../project/experimental main
</pre>


* rispondiamo 1 alla prima domanda ovvero DSA e ElGamal, diamo invio
### Multimedia -- Audio -- Rarewares
* come dimensione lasciamo pure 1024, diamo invio
deb http://www.rarewares.org/debian/packages/unstable ./
* mettiamo 0 come scadenza, diamo invio
* rispondiamo s, diamo invio
* ora ci verrà chiesto Nome e Cognome:


<pre>
### Multimedia -- Video -- Marillat
Nome e Cognome: denis pecci
deb ftp://ftp.nerim.net/debian-marillat/ etch main
deb ftp://ftp.nerim.net/debian-marillat/ sid main
</pre>
</pre>


inseriamo i nostri dati e diamo invio
A questo punto dobbiamo preparare due files normalmente non presenti sulla nostra debianbox: si tratta dei file '''preferences''' e '''apt.conf'''.
 
Questi due file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo su come comportarsi in caso di conflitti e altri problemi.
* ora ci viene chiesto l'indirizzo email:


Creiamo il file preferences:
<pre>
<pre>
Indirizzo di Email: debian@nextdeb.net
# touch /etc/apt/preferences
</pre>
</pre>
editiamolo col nostro editor di fiducia e inseriamo queste direttive:
<pre>
Package: *
Pin: release o=Unofficial Multimedia Packages
Pin-Priority: 950


inseriamolo e diamo invio
Package: *
Pin: release o=xmixahlx
Pin-Priority: 900


* ed ora inseriamno il commento per la coppia di chiavi:
Package: *
Pin: release a=testing
Pin-Priority: 850


<pre>
Package: *
Commento: NextDeb Team Packager
Pin: release a=unstable
Pin-Priority: 800
 
Package: *
Pin: release a=experimental
Pin-Priority: 750
</pre>
</pre>


diamo invio
Il pinning pu� essere orientato ad un archivio, un'origine, la versione di un pacchetto, un componente, ecc...


* ora premiamo ''''o'''' e invio
Con '''"o="''' si specifica l' origine (la distribuzione) del pacchetto, con '''"a="''' l'archivio (sarge,sid, stable, ecc...).
* ora ci verrà richiesta la password per le chiavi, inseriamola e invio


Ecco fatto, ora abbiamo la nostra coppia di chiavi per firmare i pacchetti, esportiamole sul nostro keyserver preferito.
Questo dato � reperibile in modo inequivocabile attraverso APT, andando a sbirciare all'interno del file "Release" che � contenuto in tutti i repository ufficiali. Per archivi personali e/o non ufficiali, invece, non � sempre e necessariamente presente (purtroppo).


Per firmare i nostri packages procediamo in questo modo:
Vediamo alcuni esempi:


<pre>
<pre>
# dpkg-sig --sign nostronick nomepackages.deb
# cd /var/lib/apt/lists
# cat www.rarewares.org_debian_packages_unstable_._Release
Archive: unstable
Origin: xmixahlx                    
Label: xmixahlx_rarewares-unstable
Architecture: i386
 
# cat ftp.nerim.net_debian-marillat_dists_testing_main_binary-i386_Release
Archive: testing
Component: main
Origin: Unofficial Multimedia Packages
Label: Unofficial Multimedia Packages
Architecture: i386
</pre>
</pre>


{{Box|Esempio|
Dove:
<pre>
* '''Archive''' = � l' archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc...);
# dpkg-sig --sign debian cwcdr_2.0.1-4_all.deb
* '''Component''' = indica il tipo di componente (ad es.: main, contrib, non-free);
Processing cwcdr_2.0.1-4_all.deb...
* '''Origin''' = specifica il proprietario del repository;
* '''Label''' = identifica il repository: potete inserire descrizioni, ecc...;
* '''Architecture''' = l'architettura dei pacchetti contenuti nel repository (ad es.: i386, sparc, source, ecc...).  
 
Possiamo vedere che nel file Release � contenuto proprio il dato che stavamo cercando: Origin.


Ti serve una passphrase per sbloccare la chiave segreta
Ora creiamo il file apt-conf
dell'utente: "denis pecci (NextDeb Team Packager) <debian@nextdeb.net>"
chiave DSA di 1024 bit, ID 73E02514, creata il 2004-11-26


Signed deb cwcdr_2.0.1-4_all.deb
<pre>
# touch /etc/apt/apt.conf
</pre>
</pre>
}}


Ecco fatto, ora abbiamo firmato in maniera inequivocabile il nostro pacchetto. Per controllare la firma possiamo usare sia <tt>dpkg-sig</tt> che <tt>gpg</tt>. Con <tt>gpg</tt> basta usare il seguente comando:
editiamolo inserendo quanto segue:


<pre>
<pre>
# gpg --verify nome package
APT::Default-Release "testing";
APT::Cache-Limit 15000000;
Apt::Get::Purge;
APT::Clean-Installed;
APT::Get::Fix-Broken;
APT::Get::Fix-Missing;
APT::Get::Show-Upgraded "true";
</pre>
</pre>


{{Box|Esempio|
Facciamo l' update del database dei pacchetti:
 
<pre>
<pre>
# gpg --verify cwcdr_2.0.1-4_all.deb
# apt-get update
gpg: Firma fatta ven 26 nov 2004 11:23:33 CET usando DSA con ID 73E02514
gpg: Firma valida da "denis pecci (NextDeb Team Packager) <debian@nextdeb.net>"
gpg: controllo il trustdb
gpg: controllo al livello 0 firmato=0 ot(-/q/n/m/f/u)=0/0/0/0/0/2
</pre>
</pre>
}}


mentre con <tt>dpkg-sig</tt>:
D'ora in avanti avremo due possibilit� per installare un nuovo pacchetto: il metodo che usiamo di solito e cio�:


<pre>
<pre>
# dpkg-sig -v -l nome package
# apt-get install nome_pacchetto
</pre>
</pre>


{{Box|Esempio|
che utilizzer� pacchetti proveniente dalla versione impostata come '''Default-Release''' in '''apt.conf''', oppure il comando
 
<pre>
<pre>
# dpkg-sig -v -l cwcdr_2.0.1-4_all.deb
# apt-get install -t versione_di_debian nome_pacchetto
Processing wcdr_2.0.1-4_all.deb...
debian
</pre>
</pre>
}}


come potete vedere quest'ultima maniera mostra solo il nick del firmante del package.
che provveder� a installare il pacchetto da noi richiesto per la versione specificata (versione_debian), risolvendo automaticamente le dipendenze.


Happy debian!


----
----


Autore: debian
Autore: [[User:Keltik|Keltik]]<br>
[[Categoria:Apt-Dev]]
Revisione: [[User:Nest|Nest]] <br>
Verificato: [[Utente:TheNoise|~ The Noise]]
 
[[Categoria:Apt]]