1 508
contributi
S3v (discussione | contributi) 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 | 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 | * '''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 | 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 | 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 | * <code>archivio</code>: è l'archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc.); | ||
* componente | * <code>componente</code>: indica il tipo di componente (ad es.: main, contrib, non-free); | ||
* origine | * <code>origine</code>: specifica il proprietario del repository; | ||
* etichetta | * <code>etichetta</code>: identifica il repository: potete inserire descrizioni, ecc.; | ||
* architettura | * <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 | 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 | 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 | 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 |
contributi