Creare un Repository Debian: differenze tra le versioni

→‎Uso in locale: allow-insecure per un repository locale non firmato
Nessun oggetto della modifica
(→‎Uso in locale: allow-insecure per un repository locale non firmato)
 
(27 versioni intermedie di 8 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili|Tutte le versioni di Debian|}}
{{Repository
=Introduzione=
|precedente=Immagini iso Debian da usare come repository
La creazione di un repository Debian personale può essere utile nel caso si vogliano rendere disponibili per l'installazione tramite l'[[Introduzione all'Apt System|APT System]] i pacchetti <code>.deb</code> creati da noi. Il repository così creato può essere utilizzato all'interno della nostra LAN, oppure reso accessibile a un gran numero di utenti tramite Internet.
|successivo=Gestione di un repository con debarchiver
}}
{{Versioni compatibili|Squeeze|Wheezy|Jessie}}
== Introduzione ==
La creazione di un repository Debian personale può essere utile nel caso si vogliano rendere disponibili per l'installazione tramite l'[[Introduzione all'APT System|APT System]] i pacchetti <code>.deb</code> creati da noi. Il repository così creato può essere utilizzato all'interno della nostra LAN, oppure reso accessibile a un gran numero di utenti tramite Internet.


Esistono fondamentalmente due diversi approcci alla creazione di un repository:  
Esistono fondamentalmente due diversi approcci alla creazione di un repository:  
Riga 9: Riga 13:
In questa guida vedremo come realizzare il secondo tipo di repository.
In questa guida vedremo come realizzare il secondo tipo di repository.


=Repository semplice=
== Repository semplice ==
==La Struttura==
=== La Struttura ===
Per prima cosa dovremo scegliere dove risiederà fisicamente il nostro repository. Una buona scelta può essere una directory all'interno della nostra home, come anche una directory all'interno di <code>/usr/share</code>. In questa guida creeremo il repository nella nostra home, ma sentitevi liberi di posizionarlo dove più vi aggrada.
Per prima cosa dovremo scegliere dove risiederà fisicamente il nostro repository. Una buona scelta può essere una directory all'interno della nostra home, come anche una directory all'interno di <code>/usr/share</code>. In questa guida creeremo il repository nella nostra home, ma sentitevi liberi di posizionarlo dove più vi aggrada.
<pre>
<pre>
Riga 27: Riga 31:
</pre>
</pre>


==I file di indice==
=== I file di indice ===
Ultimata la creazione della struttura del repository e popolati binary e source (se abbiamo anche le versioni sorgenti) con i nostri pacchetti, dobbiamo creare i relativi file di indice. Questi file vengono scaricati da APT quando impartiamo il comando <code>'''apt-get update'''</code> e contengono la lista di tutti i pacchetti presenti in un repository. Quando effettuiamo la ricerca di un pacchetto o quando desideriamo installarlo, APT consulta questi file per stabilire in quale repository esso è contenuto.
Ultimata la creazione della struttura del repository e popolati binary e source (se abbiamo anche le versioni sorgenti) con i nostri pacchetti, dobbiamo creare i relativi file di indice. Questi file vengono scaricati da APT quando impartiamo il comando <code>'''apt-get update'''</code> e contengono la lista di tutti i pacchetti presenti in un repository. Quando effettuiamo la ricerca di un pacchetto o quando desideriamo installarlo, APT consulta questi file per stabilire in quale repository esso è contenuto.


Riga 57: Riga 61:
   apt apt-best apt-doc apt-utils libapt-pkg-dev libapt-pkg-doc
   apt apt-best apt-doc apt-utils libapt-pkg-dev libapt-pkg-doc
  Wrote 6 entries to output Packages file.
  Wrote 6 entries to output Packages file.
$ ls ~/debian/binary/ |grep Packages
Packages.gz
</pre>
Per la creazione del file indice <code>Packages.gz</code> in Wheezy:
<pre>
$ cd ~/debian
$ apt-ftparchive packages binary | gzip > binary/Packages.gz
$ ls ~/debian/binary/ |grep Packages
$ ls ~/debian/binary/ |grep Packages
Packages.gz
Packages.gz
Riga 68: Riga 79:
</pre>
</pre>


==I file di Release==
=== I file di Release ===
Se volete poter usare il pinning (''cfr.: [[APT uso avanzato: mixare releases diverse]]'') o permetterne l'uso agli utenti del vostro repository, una volta creati i file <code>Packages.gz</code> e <code>Sources.gz</code>, dovete necessariamente creare un file apposito in ciascuna directory del vostro repository.
Se volete poter usare il [[pinning]] o permetterne l'uso agli utenti del vostro repository, una volta creati i file <code>Packages.gz</code> e <code>Sources.gz</code>, dovete necessariamente creare un file apposito in ciascuna directory del vostro repository.


Questi file sono chiamati file <code>'''Release'''</code>, sono normali file di testo ed hanno una struttura del tipo:
Questi file sono chiamati file <code>'''Release'''</code>, sono normali file di testo ed hanno una struttura del tipo:
Riga 106: Riga 117:
</pre>
</pre>


==Uso del repository==
=== Uso del repository ===
===Uso in locale===
==== Uso in locale ====
Finalmente è venuto il momento di mettere alla prova il nostro repository.
Finalmente è venuto il momento di mettere alla prova il nostro repository.


Riga 114: Riga 125:
In questo esempio abbiamo creato il repository nella directory <code>~/debian</code> e cioè nella directory <code>debian</code> all'interno della nostra home. Dovremo quindi aggiungere al file <code>/etc/apt/sources.list</code> due linee così composte:  
In questo esempio abbiamo creato il repository nella directory <code>~/debian</code> e cioè nella directory <code>debian</code> all'interno della nostra home. Dovremo quindi aggiungere al file <code>/etc/apt/sources.list</code> due linee così composte:  
<pre>
<pre>
deb file:///home/utente/debian binary/
deb [allow-insecure=yes] file:///home/utente/debian binary/
deb-src file:///home/utente/debian source/
deb-src [allow-insecure=yes] file:///home/utente/debian source/
</pre>
</pre>
dove, alla parola ''utente'' dovete sostituire lo username dell'utente nella cui home risiede il repository.
dove, alla parola ''utente'' dovete sostituire lo username dell'utente nella cui home risiede il repository. L'uso di <code>allow-insecure=yes</code> permette l'uso di un repository non firmato e/o la cui chiave pubblica corrispondente non è stata aggiunta alle chiavi fidate di APT.


Una volta fatto questo lanciate:
Una volta fatto questo lanciate:
Riga 162: Riga 173:
Nelle ultime due linee possiamo notare come la provenienza del pacchetto sia '''Repository di esempio:unstable''' come indicato nel nostro file '''Release'''.
Nelle ultime due linee possiamo notare come la provenienza del pacchetto sia '''Repository di esempio:unstable''' come indicato nel nostro file '''Release'''.


=== Uso in rete (http) ===
==== Uso in rete (http) ====
Rendere disponibile in rete il repository che abbiamo appena creato è un'operazione estremamente semplice. Non dovremo fare altro che copiare la root del repository in una directory accessibile al nostro server web ed indicare l'[[URI]] corretto nei file <code>/etc/apt/sources.list</code> delle macchine che dovranno accedere ad esso.
Rendere disponibile in rete il repository che abbiamo appena creato è un'operazione estremamente semplice. Non dovremo fare altro che copiare la root del repository in una directory accessibile al nostro server web ed indicare l'[[URI]] corretto nei file <code>/etc/apt/sources.list</code> delle macchine che dovranno accedere ad esso.


Riga 192: Riga 203:
Per il test e l'ordine con cui i pacchetti vengono installati da APT, vi rimando alla lettura del [[#Uso_in_locale|paragrafo precedente]]
Per il test e l'ordine con cui i pacchetti vengono installati da APT, vi rimando alla lettura del [[#Uso_in_locale|paragrafo precedente]]


= Procedura automatizzata =
== Repository ufficiale ==
Per automatizzare il processo di creazione di un mirror, si può ricorrere a [[Debmirror: creiamo un mirror Debian|Debmirror]].
=== Configurazione repository ===
Per creare un repository ufficiale (fatto a regola d'arte, come quello di debian) per prima cosa installiamo il programma reprepro con il comando:
<pre># apt-get install reprepro</pre>
in seguito scegliamo il percorso dove creare il nostro repo (nella guida sarà indicato come ~/debian/) quindi creiamo la cartella e posizioniamovici dentro:
<pre>$ mkdir ~/debian/
$ cd ~/debian/</pre>
Ora dobbiamo creare un file di configurazione per reprepro quindi:
<pre>$ mkdir conf
$ cd conf</pre>
dentro creiamo un file chiamato distributions e riempiamolo nel seguente modo:
<pre>Origin: nomeMioRepo
Label: Etichetta nomeMioRepo
Suite: unstable
Codename: sid
Architectures: amd64
Components: main
Description: Unofficial Debian packages
SignWith: myKeyId
</pre>
{{Warningbox|Al posto di myKeyId bisogna insere l'id della chiave GPG creata appositamente per firmare i pacchetti.}}
ora riposizioniamoci nella cartella debian dando il comando:
<pre>cd ~/debian</pre>
facciamo creare i file necessari con:
<pre>reprepro check</pre>
per aggiungere un pacchetto al repo:
<pre>reprepro includedeb unstable /tmp/mypackage_1.1.1-1_all.deb</pre>
per rimuoverlo:
<pre>reprepro remove unstable mypackage</pre>
 
Provvedere a mettere online il repository rendendo accessibile da un server web la cartella debian escludendo le directory db e conf, quindi modificare il file <code>/etc/apt/sources.list</code> aggiungendo la seguente riga:
<pre>deb http://www.tuSito.do/debian/ sid main</pre>
{{Suggerimento|Per impedire l'accesso alle directory db e conf si potrebbe creare all'interno di ciascune di essa un file .htaccess contentente:<pre>deny from all</pre>}}


----
=== Creazione pacchetto chiave GPG ===
--[[Utente:Keltik|Keltik]] 09:20, Giu 26, 2005 (EDT)
Per prima cosa esportiamo la nostra chiave con
<pre>gpg --export myKeyId > myrepo-debian-key.gpg</pre>
In seguito creiamo il seguente alvero di directory (si ricorda che control e myrepo-debian-key.gpg sono files):
<pre>
├── DEBIAN
│   └── control
└── etc
    └── apt
        └── trusted.gpg.d
            └── myrepo-debian-key.gpg
</pre>
Inserire all'interno del file control:
<pre>Package: myrepo-archive-keyring
Version: 2014.4
Architecture: all
Maintainer: yourNick <mail@domain.do>
Depends: gpgv
Recommends: gnupg
Breaks: apt (<< 0.7.25.1)
Section: misc
Priority: important
Multi-Arch: foreign
Description: GnuPG archive keys of the archive archive
The archive project digitally signs its Release files. This package
contains the archive keys used for that.
</pre>
Il file myrepo-debian-key.gpg è il file precedentemente creato con GPG.
Posizionarsi all'esterno della directory pkg e lanciare i seguenti comandi:
<pre>
# chown -R root:root ./pkg
$ dpkg-deb -b ./pkg myrepo-archive-keyring_2014.4_all.deb
</pre>
Il pacchetto contiene la chiave per autenticare il repository.
{{Autori
|Autore=[[Utente:Keltik|Keltik]] 09:20, Giu 26, 2005 (EDT)
|Verificata_da=
: [[Utente:Tima|Tima]] 10:41, 16 mag 2013 (CEST)
: [[Utente:Marcomg|marcomg]] 17:50, 23 mag 2014 (CEST)
|Estesa_da=
: [[Utente:Marcomg|marcomg]]
|Numero_revisori=2
}}


[[Categoria:Server]][[Categoria:Repository]]
[[Categoria:Creare repository]]
3 581

contributi