User Tools

Site Tools


doc:appunti:linux:sa:debian_repository

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:debian_repository [2010/04/07 12:24] niccolodoc:appunti:linux:sa:debian_repository [2010/04/07 19:48] (current) niccolo
Line 2: Line 2:
  
 ===== Using reprepro ===== ===== Using reprepro =====
 +
 +Vedere gli articoli **[[http://www.debian-administration.org/articles/286|Setting up your own APT repository with upload support]]** e **[[http://www.jejik.com/articles/2006/09/setting_up_and_managing_an_apt_repository_with_reprepro/|Setting up and managing an APT repository with reprepro]]**.
  
 Il programma **reprepro** consente di gestire agevolmente un repository per diverse suite (//stable//, //testing//, ecc.) e diverse architetture (//source//, //i386//, //amd64//, ecc.). Il programma **reprepro** consente di gestire agevolmente un repository per diverse suite (//stable//, //testing//, ecc.) e diverse architetture (//source//, //i386//, //amd64//, ecc.).
 +
 +Se si gestisce più di una suite i **nomi dei pacchetti** e il **numero di versione** devono essere accuratamente scelti.
 +
 +In generale conviene che nel numero di versione sia compresa anche la suite, in modo che i file **''.diff.gz''**, **''.dsc''**, **''.changes''** e **''.deb''** possano coesistere nella directory ''pool/'' quando sono compilati dalla stessa versione di sorgente, ma per suite differenti. Ad esempio:
 +
 +<code>
 +libgdal-perl_1.6.3-3~gfossit50+1_i386.deb
 +libgdal-perl_1.6.3-3~gfossit60+1_i386.deb
 +</code>
 +
 +sono due pacchetti generati dallo stesso sorgente **''gdal_1.6.3.orig.tar.gz''**, entrambi per architettura //i386//, ma compilati il primo su Debian Lenny (v.5.0) e il secondo su Debian Squeeze (presumibilmente v.6.0).
 +
 +Altrimenti si corre il rischio di non poter aggiungere il file al repository, per via dell'errore:
 +
 +<code>
 +File "pool/main/p/proj/proj-bin_4.7.0-1_i386.deb" is already registered with other md5sum!
 +</code>
  
 ==== Inizializzazione ==== ==== Inizializzazione ====
Line 50: Line 69:
 **ATTENZIONE:** in tutti i comandi che seguono sono state omesse le opzioni **''%%--ask-passphrase -Vb .%%''** in quanto presenti nel file di configurazione ''conf/options''. **ATTENZIONE:** in tutti i comandi che seguono sono state omesse le opzioni **''%%--ask-passphrase -Vb .%%''** in quanto presenti nel file di configurazione ''conf/options''.
  
-Per **aggiunge un singolo pacchetto** .deb ad una suite:+**Per aggiunge un singolo pacchetto** .deb ad una suite:
  
 <code> <code>
Line 58: Line 77:
 La release viene firmata con chiave GPG creando il file ''dists/<codename>/Release.gpg''. La release viene firmata con chiave GPG creando il file ''dists/<codename>/Release.gpg''.
  
-Per **aggiungere tutti i pacchetti** risultanti da un ''dpkg-buildpackage'' ad una suite, si utilizza il file **''.changes''**. Generalmente questo comprende i pacchetti per la specifica architettura (es. **''i386''**), i **''source''** e gli **''all''**:+**Per aggiungere tutti i pacchetti** risultanti da un ''dpkg-buildpackage'' ad una suite, si utilizza il file **''.changes''**. Generalmente questo comprende i pacchetti per la specifica architettura (es. **''i386''**), i **''source''** e gli **''all''**:
  
 <code> <code>
Line 70: Line 89:
 Se ''reprepro'' non riesce a trovare il file ''.orig.tar.gz'' può essere necessario il parametro **''%%--ignore=missingfile%%''**. Se ''reprepro'' non riesce a trovare il file ''.orig.tar.gz'' può essere necessario il parametro **''%%--ignore=missingfile%%''**.
  
-Per **vedere la versione di un pacchetto** contenuto in una suite:+**Per elencare tutti i pacchetti presenti** in una suite (si usa il trucco di chiedere che abbiano //Section// diversa da un valore fasullo): 
 + 
 +<code> 
 +reprepro listfilter lenny "Section (!= none)" 
 +</code> 
 + 
 +**Per elencare tutti i file presenti** nel database degli md5sum (dovrebbero essere tutti i file presenti in ''pool/''): 
 + 
 +<code> 
 +reprepro _listmd5sums 
 +</code> 
 + 
 +**Per vedere la versione di un pacchetto** contenuto in una suite:
  
 <code> <code>
Line 76: Line 107:
 </code> </code>
  
-Per **rimuovere un pacchetto** da una suite (vengono tolte le versioni per tutte le architetture, compresa //source// e vengono rimossi i rispettivi file dalla directory ''pool/''):+**Per rimuovere un pacchetto** da una suite (vengono tolte le versioni per tutte le architetture, compresa //source// e vengono rimossi i rispettivi file dalla directory ''pool/''):
  
 <code> <code>
Line 84: Line 115:
 Se si toglie a mano un file da ''pool/'' bisogna correggere l'inconsistenza con ''_forget'', vedi sotto. Se si toglie a mano un file da ''pool/'' bisogna correggere l'inconsistenza con ''_forget'', vedi sotto.
  
-Per **rigenerare tutti gli indici** (normalmente non è necessario se le operazioni di inclusione e rimozione dei pacchetti sono state effettuate correttamente):+**Per rigenerare tutti gli indici** (normalmente non è necessario se le operazioni di inclusione e rimozione dei pacchetti sono state effettuate correttamente):
  
 <code> <code>
Line 90: Line 121:
 </code> </code>
  
-Per **verificare la consistenza** del repository:+**Per verificare la consistenza** del repository:
  
 <code> <code>
-reprepro -b . check squeeze +reprepro check lenny 
-reprepro -b . checkpool+reprepro checkpool
 </code> </code>
  
-Per **risolvere un Missing file** (file che esiste nal database, ma non in ''pool/''), si consulta l'elenco completo e poi si rimuove la entry sbagliata:+**Per risolvere un Missing file pool/...**. Se il file manca dalla directory ''pool/'' ed è elencato nel database degli md5sum:
  
 <code> <code>
-reprepro _listmd5sums 
 reprepro _forget pool/main/libg/libgdal-grass/libgdal-grass_1.6.3-1.diff.gz reprepro _forget pool/main/libg/libgdal-grass/libgdal-grass_1.6.3-1.diff.gz
 +</code>
 +
 +Se invece il file risulta necessario per la presenza di altri file, è necessario rimuovere gli altri file:
 +
 +<code>
 +reprepro check lenny
 +Checking lenny...
 +Missing file pool/main/libg/libgdal-grass/libgdal-grass_1.6.3-1.dsc
 +Files are missing for 'libgdal-grass'!
 +
 +reprepro list lenny libgdal-grass
 +lenny|main|source: libgdal-grass 1.6.3-1                                     
 +
 +reprepro remove lenny libgdal-grass
 +removing 'libgdal-grass' from 'lenny|main|source'...
 </code> </code>
  
doc/appunti/linux/sa/debian_repository.1270635892.txt.gz · Last modified: 2010/04/07 12:24 by niccolo