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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(riformattato)
m (verificata)
 
(11 versioni intermedie di 6 utenti non mostrate)
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.
{{Versioni compatibili|Jessie|Stretch|Buster}}
__TOC__
== Introduzione ==
Per poter firmare i nostri [[pacchetto|pacchetti]] abbiamo bisogno 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 con [[privilegi di amministrazione]] è sufficiente:
 
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>
### Debian Ufficiale -- Testing
# apt install dpkg-sig
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
 
### Debian Ufficiale -- Sid
deb http://ftp.it.debian.org/debian/ unstable main non-free contrib
 
###  Debian Ufficiale -- Experimental
deb http://ftp.debian.org/debian/ ../project/experimental main
 
### Multimedia -- Audio -- Rarewares
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>
</pre>


A questo punto dobbiamo preparare due files normalmente non presenti sulla nostra debianbox: si tratta dei file '''preferences''' e '''apt.conf'''.
== Creare la coppia di chiavi ==
Questi due file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo su come comportarsi in caso di conflitti e altri problemi.
A questo punto possiamo generare una nuova coppia di chiavi, da usare solo per firmare i pacchetti:
 
Creiamo il file preferences:
<pre>
<pre>
# touch /etc/apt/preferences
$ gpg --gen-key
</pre>
</pre>
editiamolo col nostro editor di fiducia e inseriamo queste direttive:
Ci verrà chiesto il nome e l'indirizzo email. Tutte le altre configurazioni sono lasciate al default (a meno che non si usi l'opzione <code>--full-generate-key</code> al posto di <code>--gen-key</code>), che dovrebbe andare più che bene.
<pre>
Package: *
Pin: release o=Unofficial Multimedia Packages
Pin-Priority: 950


Package: *
Ora premiamo '''o''' per confermare le informazioni, e invio. Ci verrà richiesta la password per le chiavi, inseriamola e diamo invio nuovamente. Infine non resta che aspettare un po' per la generazione delle chiavi.
Pin: release o=xmixahlx
Pin-Priority: 900


Package: *
Ecco fatto, ora abbiamo la nostra coppia di chiavi per firmare i pacchetti, esportiamole sul nostro keyserver preferito.
Pin: release a=testing
Pin-Priority: 850


Package: *
== Firmare i pacchetti ==
Pin: release a=unstable
Per firmare i nostri pacchetti procediamo in questo modo:
Pin-Priority: 800
<pre>
 
# dpkg-sig --sign nostronick nomepackages.deb
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...
{{Suggerimento|Per scegliere la chiave si può aggiungere l'argomento -k seguito dall'identificativo della chiave.}}
 
Con '''"o="''' si specifica l' origine (la distribuzione) del pacchetto, con '''"a="''' l'archivio (sarge,sid, stable, ecc...).
 
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).
 
Vediamo alcuni esempi:


{{Box|Esempio|
<pre>
<pre>
# cd /var/lib/apt/lists
# dpkg-sig --sign debian cwcdr_2.0.1-4_all.deb
# cat www.rarewares.org_debian_packages_unstable_._Release
Processing cwcdr_2.0.1-4_all.deb...
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>
 
Dove:
* '''Archive''' = � l' archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc...);
* '''Component''' = indica il tipo di componente (ad es.: main, contrib, non-free);
* '''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.


Ora creiamo il file apt-conf
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


<pre>
Signed deb cwcdr_2.0.1-4_all.debcode>
# 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 <code>dpkg-sig</code> che <code>gpg</code>. Con <code>gpg</code> 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 <code>dpkg-sig</code>:


<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 di colui che ha firmato il pacchetto.
 
Happy debian!
 
----


Autore: [[User:Keltik|Keltik]]<br>
{{Autori
Revisione: [[User:Nest|Nest]] <br>
|Autore = [[Utente:Noise|Noise]]
Verificato: [[Utente:TheNoise|~ The Noise]]
}}


[[Categoria:Apt]]
[[Categoria:Apt]]
[[Categoria:Apt-Dev]]
[[Categoria:Creare e modificare pacchetti]]
[[Categoria:Crittografia]]

Versione attuale delle 08:36, 28 set 2019

Debian-swirl.png Versioni Compatibili

Debian 8 "jessie"
Debian 9 "stretch"
Debian 10 "buster"

Introduzione

Per poter firmare i nostri pacchetti abbiamo bisogno di due strumenti: gpg e dpkg-sig.

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

# apt install dpkg-sig

Creare la coppia di chiavi

A questo punto possiamo generare una nuova coppia di chiavi, da usare solo per firmare i pacchetti:

$ gpg --gen-key

Ci verrà chiesto il nome e l'indirizzo email. Tutte le altre configurazioni sono lasciate al default (a meno che non si usi l'opzione --full-generate-key al posto di --gen-key), che dovrebbe andare più che bene.

Ora premiamo o per confermare le informazioni, e invio. Ci verrà richiesta la password per le chiavi, inseriamola e diamo invio nuovamente. Infine non resta che aspettare un po' per la generazione delle chiavi.

Ecco fatto, ora abbiamo la nostra coppia di chiavi per firmare i pacchetti, esportiamole sul nostro keyserver preferito.

Firmare i pacchetti

Per firmare i nostri pacchetti procediamo in questo modo:

# dpkg-sig --sign nostronick nomepackages.deb
Bulb.png Suggerimento
Per scegliere la chiave si può aggiungere l'argomento -k seguito dall'identificativo della chiave.


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.debcode>


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 di colui che ha firmato il pacchetto.




Guida scritta da: Noise Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized