Come creare un repository locale usando apt-mirror e mirrorkit?


9

Avere un repository locale può essere molto utile. È possibile utilizzare rsyncper creare un mirror del repository, ma ciò comporta il download di tutte le versioni, anche di quelle più vecchie, e includerebbe file per architetture che potrebbero non essere necessarie.

apt-mirrorconsente di scegliere selettivamente parti del repository. mirrorkitfornisce un front-end per apt-mirror.

Qual è il modo migliore per creare un mirror del repository locale per parti selezionate degli archivi Ubuntu?

Ad esempio, si potrebbe desiderare di includere:

  • Principale, Limitato, Universo, Multiverso, Tutti Ubuntu e Lubuntu ma escludono altri derivati, come Kubuntu e Xubuntu.

  • Solo AMD64 e i386 ma escludono altre architetture.

  • Solo Trusty Tahr, ma non Preciso Penguin o Utopic Unicorn.

Si potrebbe desiderare di configurare il processo in modo che venga scaricato da un mirror locale, anziché dagli archivi principali.

Come posso creare un repository locale usando apt-mirrore mirrorkitper un'architettura selezionata, una versione o una variante di Ubuntu?


Escludere Kubuntu? Intendi escludere gli ISO di Kubuntu o escludere qualsiasi pacchetto utilizzato da Kubuntu?
muru,

Escludere gli ISO di Kubuntu e Xubuntu, ad esempio. Forse ce ne sono moltissimi (Precise Kubuntu ARM, Precise Kubuntu i386, Quantal Kubuntu ARM, Quantal Kubuntu i386 ...) e il download del mirror iniziale potrebbe finire più rapidamente senza quegli ISO. Ma se sono solo pochi gigabyte, forse non importa così tanto.
user75798

1
Gli ISO sono ospitati separatamente dai pacchetti. Quindi puoi usare apt-mirror come faresti normalmente per rispecchiare i repository di pacchetti e usare qualche altro strumento per gli ISO. La domanda diventa quindi trovare i filtri di esclusione appropriati per quello strumento (ad esempio rsync).
muru,

"puoi usare apt-mirror come faresti normalmente" Mi dispiace, non so come farlo. Questo è esattamente ciò che vorrei essere spiegato.
user75798,

Risposte:


9

Il repository CD e il repository software sono due componenti distinti (hanno persino pagine separate del Launchpad: cdmirror e archivemirrors ). Pertanto, rispecchiarli sono due compiti distinti. Inoltre, mentre le varie versioni hanno diverse cartelle nel repository CD, condividono un repository software. Quindi puoi specchiare selettivamente le immagini per gusto, ma non il software. Per il repository software, è possibile eseguire il mirroring selettivo in base a:

  • rilasciare ( trusty, preciseecc)
  • Architettura ( amd64, i386ecc)
  • tipo di pacchetto (binario [ deb] vs source [ deb-src])
  • canali ( trusty, trusty-updates, trusty-backports, etc.)
  • sezioni ( main, multiverseecc)

Per eseguire il mirroring del repository software, utilizzare apt-mirror.

apt-mirrorè configurato usando /etc/apt/mirror.list. Ha un formato molto simile a sources.list. Il file di configurazione installato dal pacchetto ha alcune opzioni commentate che elencano i loro valori predefiniti. Se lo desideri, puoi decommentarli e modificarli.

Per eseguire il mirroring di un repository, è necessario aggiungere una riga mirror.listcome si farebbe per sources.list:

deb http://us.archive.ubuntu.com/ubuntu trusty main multiverse restricted universe

L'impostazione predefinita è il mirroring solo dell'architettura dell'host, quindi se si utilizza Ubuntu a 64 bit, amd64verrà eseguito solo il mirroring. Devi aggiungere un'altra riga del modulo:

deb-i386 http://us.archive.ubuntu.com/ubuntu trusty main multiverse restricted universe

E per i pacchetti sorgente:

deb-src http://us.archive.ubuntu.com/ubuntu trusty main multiverse restricted universe

Se stai cercando un mirror ragionevolmente completo, queste linee sarebbero il minimo (consiglierei anche il -updatescanale):

deb http://us.archive.ubuntu.com/ubuntu trusty main multiverse restricted universe
deb http://us.archive.ubuntu.com/ubuntu trusty-security main multiverse restricted universe
deb-i386 http://us.archive.ubuntu.com/ubuntu trusty main multiverse restricted universe
deb-i386 http://us.archive.ubuntu.com/ubuntu trusty-security main multiverse restricted universe

Infine, è necessario aggiungere una cleanriga in modo che i pacchetti non più disponibili nel repository vengano filtrati per la rimozione:

clean http://us.archive.ubuntu.com/ubuntu

Supponi che le tue variabili siano così (i valori predefiniti):

set base_path    /var/spool/apt-mirror
set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set cleanscript $var_path/clean.sh

Poi:

  • Il repository verrà eseguito il mirroring di $mirror_path/parent-hostname/directory(quindi /var/spool/apt-mirror/mirror/us.archive.ubuntu.com/ubuntu)
  • Lo clean.shsarà (che sarà un insieme di rmcomandi per eliminare pacchetti e directory obsoleti) /var/spool/apt-mirror/var/clean.sh.
  • I registri andranno a /var/spool/apt-mirror/var.

Il apt-mirrorpacchetto installa un cron job ( /etc/cron.d/apt-mirror), che dovresti modificare per abilitare (decommentando la riga che contiene /usr/bin/apt-mirror). Dovresti anche aggiungere un cron job per l'esecuzione clean.sh(lo eseguo settimanalmente).

Ovviamente, dovresti sostituirlo http://us.archive.ubuntu.com./ubuntucon qualunque specchio tu preferisca.


1
È davvero deb-amd64o deb arch=amd64? Posso trovarlo solo in manpage
Anwar,

1
@Anwar il primo. Quest'ultimo è per sources.list, che ha un formato simile ma non identico. Vedi manpages.ubuntu.com/manpages/trusty/en/man1/apt-mirror.1.html , dove si deb-powerpctrova nell'esempio.
muru,

Oh! Non avevo esperienza con apt-mirror. Ho pensato che fosse per sources.list. Grazie
Anwar,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.