Vai al contenuto | Salta in fondo

Home

Main.LocalDebsRepository r1.4 - 23 Aug 2007 - 14:41 - FrancescoMinafra Fine pagina


Inizio pagina | Salta alle attività

Repository locale di pacchetti deb e database APT

Queste note riguardano sistemi GNU/Linux che fanno uso di sistemi di gestione dei pacchetti deb, ovvero le distribuzioni Debian e derivate. Mi sono deciso a scriverle perche' ogni volta che dovevo aggiungere un pacchetto creato localmente al mio repository, non mi ricordavo i comandi da dare ed ero costretto ad andare a prendere i giro per la rete le informazioni necessarie.

Vediamo quindi come mantenere un repository locale di pacchetti deb sulla nostra macchina, in modo che il sistema APT ne tenga conto nel suo database consultabile tramite strumenti come aptitude.

Supponiamo di aver appena compilato un kernel "alla maniera debian" seguendo le istruzioni della debian reference (cap.7).

La situazione dopo la compilazione e' la seguente:

fm@mfdirg:/usr/src$ ls -l
total 52324
lrwxrwxrwx  1 fm   src        19 2007-01-05 18:19 linux -> linux-source-2.6.18
-rw-r--r--  1 fm   src  11640154 2007-01-05 19:46 linux-image-2.6.18-7.tm290_rev.01_i386.deb
drwxr-sr-x 21 fm   src      4096 2007-01-05 19:46 linux-source-2.6.18
-rw-r--r--  1 root root 41873344 2006-12-04 16:02 linux-source-2.6.18.tar.bz2

ovvero abbiamo il pacchetto .deb del kernel appena compilato, la directory dei sorgenti, un link simbolico a tale directory, e il tarpalla dei sorgenti stessi.

Creiamo una directory che ospitera' i nostri pacchetti:

fm@mfdirg:/usr/src$ mkdir local-debs

si noti che ho potuto creare una directory al di sotto di /usr/src perche' ho preventivamente aggiunto l'utente 'fm' al gruppo 'src' eseguendo come utente root il comando:

#adduser fm src

Ora sposto nella dir creata i pacchetti deb creati localmente, ad esempio il nostro kernel:

fm@mfdirg:/usr/src$ mv linux-image-2.6.18-7.tm290_rev.01_i386.deb local-debs/

A questo punto occorre creare un indice dei pacchetti affinche' la nostra directory possa essere riconosciuta come un repository locale dal sistema APT.

fm@mfdirg:/usr/src$ dpkg-scanpackages local-debs/ /dev/null |gzip - > local-debs/Packages.gz
 ** Packages in archive but missing from override file: **
  linux-image-2.6.18-7.tm290

 Wrote 1 entries to output Packages file.
fm@mfdirg:/usr/src$ dpkg-scanpackages local-debs/ /dev/null > local-debs/Packages
 ** Packages in archive but missing from override file: **
  linux-image-2.6.18-7.tm290

 Wrote 1 entries to output Packages file.

eseguiamo due volte il comando perche' ci servono due copie del file Packages, di cui una gzippata.

Passo successivo e' quello di creare un indice dell'albero del repository locale:

fm@mfdirg:/usr/src$ apt-ftparchive release local-debs/ > local-debs/Release

occorre poi firmare con la nostra chiave gpg il file Release ottenuto:

fm@mfdirg:/usr/src$ gpg -abs -o local-debs/Release.gpg local-debs/Release

You need a passphrase to unlock the secret key for
user: "Francesco Minafra (Free your Mind, use GNU/Linux!) <hitcho@xlugbarix.org>"
1024-bit DSA key, ID 4F082F93, created 2002-12-08

Inserisci la passphrase:

ottenendo il file della firma Release.gpg

Notiamo che sia il file Release, che il file Release.gpg si trovano nella directory del repository locale dei pacchetti, cioe' nella directory /usr/src/local-debs.

Esportiamo dal keyring la nostra chiave gpg pubblica:

fm@mfdirg:~$ gpg -a -o hitcho.asc --export hitcho

e da utente root importiamola nel keyring delle chiavi dei repository APT fidati:

mfdirg:/home/fm# apt-key add hitcho.asc
OK

Inseriamo la riga seguente nel file /etc/apt/sources.list

deb file:/usr/src local-debs/

e possiamo ora eseguire la scansione dei repository:

mfdirg:~# aptitude update
...

e da questo momento in poi vedremo il nostro pacchetto del kernel nell'albero di quelli censiti da utility come aptitude.

Notiamo che alla fine dell'output del comando aptitude update si ottiene un messaggio di avvertimento del tipo:

W: Conflicting distribution: file: local-debs/ Release (expected local-debs but got )
W: You may want to run apt-get update to correct these problems

Si tratta solo di un warning dovuto al fatto che il file Release è stato creato senza specificare alcune informazioni come ad esempio il nome del repository. Per far sì che non compaia più il warning possiamo usare il seguente file di configurazione (apt-ftparchive.conf) quando eseguiamo il comando apt-ftparchive:

Dir {
        ArchiveDir "/usr/src/local-debs/";
};

Default {
        Packages::Compress ". gzip";
        Sources::Compress  ". gzip";
};

BinDirectory "local-debs" {
        Directory               "local-debs/";
        Packages                "local-debs/Packages";
        Architecture    "i386";
};

APT::FTPArchive {
        Release {
                Archive                 "local-debs";
                Origin                  "FM";
                Label                   "FM local";
                Suite                   "testing";
                Codename                "local-debs";
                Date                    "";
                Architectures   "i386";
                Components              "main";
                Description             "";
        };
};

e lo utilizzeremo con il comando:

fm@mfdirg:/usr/src$ apt-ftparchive -c apt-ftparchive.conf release local-debs/ > local-debs/Release

Stessa procedura va ripetuta ogni qualvolta si aggiungono manualmente pacchetti sotto la directory local-debs.

Bibliografia

Debian Reference

Secure Apt - Debian Wiki

-- FrancescoMinafra - 05 Jan 2007

Inizio pagina


Sei qui: Main > TipsAndTricks > LocalDebsRepository



Inizio pagina

Copyright © 2008 dei contributori. Tutto il materiale di questo sito è sotto copyright dei rispettivi autori.
Idee, richieste, problemi riguardanti LUGBari? Invia suggerimenti