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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
mNessun oggetto della modifica
Riga 1: Riga 1:
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.
Per poter firmare i nostri packages necessitiamo di due strumenti: '''gpg''' e '''dpkg-sig'''.


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.
Il primo dovrebbe essere già installato di default con la nostra Debian, per il secondo:


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.
<pre>
# apt-get install dpkg-sig
</pre>


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...).
fatto questo generiamo una nuova coppia di chiavi , da usare solo per firmare i packages:


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>
### Debian Ufficiale -- Testing
$ gpg --gen-key
deb http://ftp.it.debian.org/debian/ testing main non-free contrib
</pre>


### Debian Ufficiale -- Testing Sicurezza
* rispondiamo 1 alla prima domanda ovvero DSA e ElGamal, diamo invio
deb http://security.debian.org/ testing/updates main contrib non-free
* come dimensione lasciamo pure 1024, diamo invio
* mettiamo 0 come scadenza, diamo invio
* rispondiamo s, diamo invio
* ora ci verrà chiesto Nome e Cognome:


### Debian Ufficiale -- Sid
<pre>
deb http://ftp.it.debian.org/debian/ unstable main non-free contrib
Nome e Cognome: denis pecci
</pre>


###  Debian Ufficiale -- Experimental
inseriamo i nostri dati e diamo invio
deb http://ftp.debian.org/debian/ ../project/experimental main


### Multimedia -- Audio -- Rarewares
* ora ci viene chiesto l'indirizzo email:
deb http://www.rarewares.org/debian/packages/unstable ./


### Multimedia -- Video -- Marillat
deb ftp://ftp.nerim.net/debian-marillat/ etch main
deb ftp://ftp.nerim.net/debian-marillat/ sid main
</pre>
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.
Creiamo il file preferences:
<pre>
<pre>
# touch /etc/apt/preferences
Indirizzo di Email: debian@nextdeb.net
</pre>
</pre>
editiamolo col nostro editor di fiducia e inseriamo queste direttive:
<pre>
Package: *
Pin: release o=Unofficial Multimedia Packages
Pin-Priority: 950


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


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


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


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


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


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).
Ecco fatto, ora abbiamo la nostra coppia di chiavi per firmare i pacchetti, esportiamole sul nostro keyserver preferito.


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


<pre>
<pre>
# cd /var/lib/apt/lists
# dpkg-sig --sign nostronick nomepackages.deb
# 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>


Dove:
{{Box|Esempio|
* '''Archive''' = � l' archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc...);
<pre>
* '''Component''' = indica il tipo di componente (ad es.: main, contrib, non-free);
# dpkg-sig --sign debian cwcdr_2.0.1-4_all.deb
* '''Origin''' = specifica il proprietario del repository;
Processing cwcdr_2.0.1-4_all.deb...
* '''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
dell'utente: "denis pecci (NextDeb Team Packager) <debian@nextdeb.net>"
chiave DSA di 1024 bit, ID 73E02514, creata il 2004-11-26


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


editiamolo inserendo quanto segue:
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:


<pre>
<pre>
APT::Default-Release "testing";
# gpg --verify nome package
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>


Facciamo l' update del database dei pacchetti:
{{Box|Esempio|
 
<pre>
<pre>
# apt-get update
# gpg --verify cwcdr_2.0.1-4_all.deb
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>
}}


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


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


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


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


Happy debian!


----
----


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

Versione delle 01:14, 3 gen 2010

Per poter firmare i nostri packages necessitiamo di due strumenti: gpg e dpkg-sig.

Il primo dovrebbe essere già installato di default con la nostra Debian, per il secondo:

# apt-get install dpkg-sig

fatto questo generiamo una nuova coppia di chiavi , da usare solo per firmare i packages:

$ gpg --gen-key
  • rispondiamo 1 alla prima domanda ovvero DSA e ElGamal, diamo invio
  • come dimensione lasciamo pure 1024, diamo invio
  • mettiamo 0 come scadenza, diamo invio
  • rispondiamo s, diamo invio
  • ora ci verrà chiesto Nome e Cognome:
Nome e Cognome: denis pecci

inseriamo i nostri dati e diamo invio

  • ora ci viene chiesto l'indirizzo email:
Indirizzo di Email: debian@nextdeb.net

inseriamolo e diamo invio

  • ed ora inseriamo il commento per la coppia di chiavi:
Commento: NextDeb Team Packager

diamo invio

  • ora premiamo 'o' e invio
  • 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.

Per firmare i nostri packages procediamo in questo modo:

# dpkg-sig --sign nostronick nomepackages.deb
Info.png Esempio
# dpkg-sig --sign debian cwcdr_2.0.1-4_all.deb
Processing cwcdr_2.0.1-4_all.deb...

Ti serve una passphrase per sbloccare la chiave segreta
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


Ecco fatto, ora abbiamo firmato in maniera inequivocabile il nostro pacchetto. Per controllare la firma possiamo usare sia dpkg-sig che gpg. Con gpg basta usare il seguente comando:

# gpg --verify nome package
Info.png Esempio
# gpg --verify cwcdr_2.0.1-4_all.deb 
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


mentre con dpkg-sig:

# dpkg-sig -v -l nome package
Info.png Esempio
# dpkg-sig -v -l cwcdr_2.0.1-4_all.deb 
Processing wcdr_2.0.1-4_all.deb... 
debian


come potete vedere quest'ultima maniera mostra solo il nick del firmante del package.



Autore: debian