jump to navigation

HOWTO – Creare un Repository Debian marzo 23, 2007

Posted by linuxiano in APT, Debian, Linux, Note su Linux.
trackback

La creazione di un repository Debian personale può essere utile nel caso si vogliano rendere disponibili per l’ installazione tramite l’ APT System i pacchetti *.deb creati da noi. In questa breve guida realizzeremo un repository semplice, ovvero che gestisce/supporta una sola architettura. E’ il più indicato per i piccoli repository, specie quelli personali, perchè richiede un minor lavoro lato-server.


Struttura:
Per prima cosa dovremo scegliere dove risiederà fisicamente il nostro repository. Una buona scelta può essere una directory all’ interno della nostra home. Da terminale digitiamo:

$ mkdir ~/debian

Ora dobbiamo creare le due sottodirectory binary e source che conterranno rispettivamente le versioni binarie e sorgenti dei nostri pacchetti:

$ mkdir ~/debian/binary
$ mkdir ~/debian/source

I file di indice:
Ultimata la creazione della struttura del repository, 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.
La creazione dei file di indice è ottenuta tramite due utilities: dpkg-scanpackages e dpkg-scansources. 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 scanpackages e 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.
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

*Inizio Esempio*
La struttura del repository di esempio è questa:

$ tree debian
debian
|– binary
| |– apt-best-0.3.deb
| |– apt-doc_0.5.28.6_all.deb
| |– apt-utils_0.5.28.6_i386.deb
| |– apt_0.5.28.6_i386.deb
| |– libapt-pkg-dev_0.5.28.6_i386.deb
| `– libapt-pkg-doc_0.5.28.6_all.deb
`– source
|– apt_0.5.28.6.dsc
`– apt_0.5.28.6.tar.gz

Procediamo con la creazione del file Packages.gz:

$ cd ~/debian
$ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz
apt apt-best apt-doc apt-utils libapt-pkg-dev libapt-pkg-doc
Wrote 6 entries to output Packages file.
$ ls ~/debian/binary/ |grep Packages

Packages.gz

e del file Sources.gz
$ cd ~/debian
$ dpkg-scansources source /dev/null | gzip -9c > source/Sources.gz
$ ls ~/debian/source/ |grep Sources
Sources.gz

*fine esempio*

I file di release:
Se volete poter usare il pinning 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.
Questi file sono chiamati file Release, sono normali file di testo ed hanno una struttura del tipo:

Archive: archivio
Component: componente
Origin: origine
Label: etichetta
Architecture: architettura

dove:

archivio = è 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);
origine = specifica il proprietario del repository;
etichetta = identifica il repository: potete inserire descrizioni, ecc…;
architettura = l’ architettura dei pacchetti contenuti nel repository (ad es.: i386, sparc, source, ecc…).

Vediamo i file Release per i repository di questa guida.

Per l’ archivio binary abbiamo:

$ cat ~/debian/binary/Release
Archive: unstable
Component: main
Origin: keltik
Label: Repository di esempio
Architecture: i386
e per quello source:
$ cat ~/debian/source/Release
Archive: unstable
Component: main
Origin: keltik
Label: Repository di esempio
Architecture: source

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 sources.list delle macchine che dovranno accedere ad esso.

Nel caso in cui stiamo usando Apache e la DocumentRoot sia /var/www sarà sufficiente impartire:

# cp -R /home/utente/debian/ /var/www/

Ora dobbiamo modificare i sources.list in modo che puntino a questo repository.
Poniamo che il server che mette a disposizione il repositry abbia il FQDN debian.prova.net. La sintassi da utilizzare nel sources.list è la seguente:

deb http://debian.prova.net/debian/ binary/
deb-src http://debian.prova.net/debian/ source/

Dobbiamo fare estrema attenzione ai slash (“/”) che se messi dove non servono, non fanno funzionare niente!!!
————————————————————————–
fonti: Debianizzati
————————————————————————–

Commenti»

1. cyberfra - maggio 12, 2007

se volessi generare un cd da questo repository da usare comodamente con apt-cdrom su macchine che non hanno connessioni internet?

2. linuxiano - maggio 13, 2007

non so se possa funzionare….. prova!🙂😉

3. Luciana - novembre 5, 2007

ciao. devo nodificare una distribuzione server di ubuntu 7.10. ho provato un sacco di guide ma mi frega sempre la creazione dei repository. mi serve mettere dei pacchetti extra sul cd in modo che vengano isntallati automaticamente quando infilo il cd nel lettore, al moemtno di installare tutto il sistema operativo. siccome è un lavoro che mi serve anche per la tesi, non è che gentilmente potresti darmi una mano? ah dimentcavo il tutto deve funzionare anche senza connessione a internet.
grazie
Luciana
ps ti lascio anche il mio indirizzo email, dovresti leggerlo da qualche parte🙂


Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: