Creare un Repository Debian: differenze tra le versioni

nessun oggetto della modifica
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 1: Riga 1:
{{Versioni compatibili|Tutte le versioni di Debian|}}
{{Versioni compatibili|Tutte le versioni di Debian|}}
=Introduzione=
=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 *.deb 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.
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:  
* '''Repository Automatico''': ha una struttura complessa, gestisce un pool di pacchetti e supporta architetture (i386, sparc, ecc...) multiple. A fronte di un maggior lavoro lato server permette un uso altamente automatizzato lato client;
* '''Repository Automatico''': ha una struttura complessa, gestisce un pool di pacchetti e supporta architetture (i386, sparc, ecc.) multiple. A fronte di un maggior lavoro lato server permette un uso altamente automatizzato lato client;
* '''Repository Semplice''': gestisce una sola architettura. È il più indicato per i piccoli repository, specie quelli personali, perché richiede un minor lavoro lato-server.
* '''Repository Semplice''': gestisce una sola architettura. È il più indicato per i piccoli repository, specie quelli personali, perché richiede un minor lavoro lato-server.


Riga 15: Riga 15:
$ mkdir ~/debian
$ mkdir ~/debian
</pre>
</pre>
Ora dobbiamo creare le due sottodirectory ''binary'' e ''source'' che conterranno rispettivamente le versioni binarie e sorgenti dei nostri pacchetti:
Ora dobbiamo creare le due sottodirectory <code>binary</code> e <code>source</code> che conterranno rispettivamente le versioni binarie e sorgenti dei nostri pacchetti:
<pre>
<pre>
$ mkdir ~/debian/binary
$ mkdir ~/debian/binary
Riga 28: Riga 28:


==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 '''apt-get update''' 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.


La creazione dei file di indice è ottenuta tramite due utility: '''dpkg-scanpackages''' e '''dpkg-scansources'''. Il funzionamento dei due programmi è identico, ma il primo esamina i file binari ed il secondo quelli sorgenti.
La creazione dei file di indice è ottenuta tramite due utility: <code>'''dpkg-scanpackages'''</code> e <code>'''dpkg-scansources'''</code>. Il funzionamento dei due programmi è identico, ma il primo esamina i file binari ed il secondo quelli sorgenti.


Entrambi gli strumenti restituiscono i loro risultati sullo standard output (stdout): questo significa che di default vedremo l'output a schermo. Per questo motivo è necessario reindirizzare il risultato di ''dpkg-scanpackages'' e ''dpkg-scansources'' su file appositi. Per convenzione questi file sono compressi in formato gzip e chiamati '''Packages.gz''' all'interno di ''binary'' e '''Sources.gz''' all'interno di ''source''.
Entrambi gli strumenti restituiscono i loro risultati sullo standard output (<code>stdout</code>): questo significa che di default vedremo l'output a schermo. Per questo motivo è necessario reindirizzare il risultato di <code>dpkg-scanpackages</code> e <code>dpkg-scansources</code> su file appositi. Per convenzione questi file sono compressi in formato <code>gzip</code> e chiamati <code>'''Packages.gz'''</code> all'interno di <code>binary</code> e <code>'''Sources.gz'''</code> all'interno di <code>source</code>.


Nell'esempio di questa guida il nostro repository contiene due pacchetti di tipo binario (apt e apt-best) ed un pacchetto di tipo sorgente (apt). Vedremo ora come creare i relativi file Packages.gz e Sources.gz
Nell'esempio di questa guida il nostro repository contiene due pacchetti di tipo binario (apt e apt-best) ed un pacchetto di tipo sorgente (apt). Vedremo ora come creare i relativi file <code>Packages.gz</code> e <code>Sources.gz</code>


La struttura del repository di esempio è questa:
La struttura del repository di esempio è questa:
Riga 51: Riga 51:
     `-- apt_0.5.28.6.tar.gz
     `-- apt_0.5.28.6.tar.gz
</pre>
</pre>
Procediamo con la creazione del file Packages.gz:
Procediamo con la creazione del file <code>Packages.gz</code>:
<pre>
<pre>
$ cd ~/debian
$ cd ~/debian
Riga 60: Riga 60:
Packages.gz
Packages.gz
</pre>
</pre>
e del file Sources.gz
e del file <code>Sources.gz</code>
<pre>
<pre>
$ cd ~/debian
$ cd ~/debian
Riga 69: Riga 69:


==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 Packages.gz e Sources.gz, dovete necessariamente creare un file apposito in ciascuna directory del vostro repository.
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.


Questi file sono chiamati file '''Release''', 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:
<pre>
<pre>
Archive: archivio
Archive: archivio
Riga 80: Riga 80:
</pre>
</pre>
dove:
dove:
* archivio = ''è l'archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc...);
* <code>archivio</code>: è l'archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc.);
* componente = ''indica il tipo di componente (ad es.: main, contrib, non-free);
* <code>componente</code>: indica il tipo di componente (ad es.: main, contrib, non-free);
* origine = ''specifica il proprietario del repository'';
* <code>origine</code>: specifica il proprietario del repository;
* etichetta = ''identifica il repository: potete inserire descrizioni, ecc...;
* <code>etichetta</code>: identifica il repository: potete inserire descrizioni, ecc.;
* architettura = ''l' architettura dei pacchetti contenuti nel repository (ad es.: i386, sparc, source, ecc...).
* <code>architettura</code>: l' architettura dei pacchetti contenuti nel repository (ad es.: i386, sparc, source, ecc.).
Vediamo i file Release per i repository di questa guida.
Vediamo i file Release per i repository di questa guida.


Riga 112: Riga 112:
Già fin d'ora possiamo utilizzarlo così com'è in locale sulla nostra macchina: tutto quello che dobbiamo fare consiste nell'aggiungere al nostro file <code>/etc/apt/sources.list</code> l'[[URI]] attraverso il quale reperire i pacchetti.
Già fin d'ora possiamo utilizzarlo così com'è in locale sulla nostra macchina: tutto quello che dobbiamo fare consiste nell'aggiungere al nostro file <code>/etc/apt/sources.list</code> l'[[URI]] attraverso il quale reperire i pacchetti.


In questo esempio abbiamo creato il repository nella directory ~/debian e cioè nella directory ''debian'' 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 file:///home/utente/debian binary/
Riga 128: Riga 128:
</pre>
</pre>


Se tutto ha funzionato dovremmo ottenere come risultato due diversi pacchetti: entrambi si chiamano apt, entrambi hanno numero di versione 0.5.28.6, ecc... Per capire se e quale proviene dal nostro repository dobbiamo andare a controllare la voce ''Filename:'''.
Se tutto ha funzionato dovremmo ottenere come risultato due diversi pacchetti: entrambi si chiamano apt, entrambi hanno numero di versione 0.5.28.6, ecc. Per capire se e quale proviene dal nostro repository dobbiamo andare a controllare la voce <code>Filename</code>.


Nel caso del pacchetto proveniente dal repository ufficiale di Debian avremo:
Nel caso del pacchetto proveniente dal repository ufficiale di Debian avremo:
Riga 165: Riga 165:
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.


Nel caso in cui stiamo usando Apache e la DocumentRoot sia /var/www sarà sufficiente impartire:
Nel caso in cui stiamo usando Apache e la DocumentRoot sia <code>/var/www</code> sarà sufficiente impartire:
<pre>
<pre>
# cp -R /home/utente/debian/ /var/www/
# cp -R /home/utente/debian/ /var/www/
Riga 182: Riga 182:
E: La linea x in /etc/apt/sources.list (dist parse) non è corretta
E: La linea x in /etc/apt/sources.list (dist parse) non è corretta
</pre>
</pre>
Se abbiamo invece scritto correttamente, quando lanceremo ''apt-get update'', vedremo APT dialogare con il nostro web server e reperire l'elenco dei nostri pacchetti:
Se abbiamo invece scritto correttamente, quando lanceremo <code>apt-get update</code>, vedremo APT dialogare con il nostro web server e reperire l'elenco dei nostri pacchetti:
<pre>
<pre>
# apt-get update
# apt-get update
1 508

contributi