Gibt es eine einfache Möglichkeit, apt-get so zu konfigurieren, dass Downloads mithilfe eines LAN-Apt-Mirror (sofern verfügbar) optimiert werden?

Gibt es eine einfache Möglichkeit, apt-get so zu konfigurieren, dass Downloads mithilfe eines LAN-Apt-Mirror (sofern verfügbar) optimiert werden?

Ich habe einen Laptop und eine lokale Kopie mehrerer Repositories auf einer externen Festplatte, die an meinen Router angeschlossen ist. Mein Router bietet Zugriff auf diese Dateien (mit Anmeldeinformationen) als Samba-Freigaben und/oder FTP-Server.

Ich möchte apt-get so konfigurieren, dass diese Repositories überprüft werden, wenn sie verfügbar sind, und Updates von ihnen heruntergeladen werden, um den Vorgang nach Möglichkeit zu beschleunigen.

Um es klarer zu sagen: Ich möchte, dass apt-get sowohl die regulären Repositories im Internet als auch mein lokales überprüft, wenn mein Laptop mit meinem WLAN verbunden ist. Wenn Dateien in den externen Repositories neuer sind als die in meinem lokalen Mirror oder wenn der Mirror nicht verfügbar ist, soll apt-get die Dateien aus dem Internet herunterladen.

Antwort1

So richten Sie Ihr eigenes Repository ein:

  1. Installierendpkg-dev
  2. Legen Sie die Pakete in ein Verzeichnis
  3. Erstellen Sie ein Skript, das die Pakete scannt und eine apt-get updatelesbare Datei erstellt
  4. Fügen Sie eine Zeile hinzu, die sources.listauf Ihr Repository verweist

Installierendpkg-dev

Öffnen Sie ein Terminal:

sudo apt-get install dpkg-dev

Das Verzeichnis

Erstellen Sie ein Verzeichnis, in dem Sie Ihre Pakete speichern. Für dieses Beispiel verwenden wir /usr/local/lan-repo.

sudo mkdir -p /usr/local/lan-repo

Verschieben Sie jetzt alle Ihre Pakete in dieses neue Verzeichnis.

Bereits heruntergeladene Pakete sind auf Ihrem System normalerweise in gespeichert /var/cache/apt/archives. Wenn Sie installiert haben, apt-cachersind höchstwahrscheinlich weitere Pakete in diesem apt-cacher/packagesVerzeichnis gespeichert.

Erstellen Sie ein Skript mit dem Namenupdate-lan-repo

Es ist ein sehr einfaches dreizeiliges Skript:

#! /bin/bash
cd /usr/local/lan-repo
sudo dpkg-scanpackages . /dev/null | gzip -9c > packages.gz

Kopieren Sie das Obige, fügen Sie es in Ihren bevorzugten Texteditor ein und speichern Sie es unter update-lan-repo. ~/bin( ~bedeutet das Home-Verzeichnis. Wenn ~/bines noch nicht existiert, erstellen Sie es. Ubuntu fügt dieses Verzeichnis automatisch in Ihren PATH ein. Dies macht es zu einem guten Ort, um persönliche Skripte abzulegen.)

Jetzt machen wir das Skript ausführbar:

chmod u+x ~/bin/update-lan-repo

So funktioniert das Skript:

dpkg-scanpackagessieht sich alle Pakete in an lan-repo, und die Ausgabe wird komprimiert und in die Datei geschrieben packages.gz, die apt-get updategelesen werden kann (siehe unten für eine Referenz, die dies ausführlich erklärt). /dev/nullist eine leere Datei - das heißt - es ist ein Behelf für eine Override-Datei, die einige zusätzliche Informationen über die Pakete enthält, die in unserem Fall nicht wirklich benötigt werden. Siehedeb-override(5)wenn Sie mehr darüber erfahren möchten.

Wir müssen Ihr lokales Repository zu Ihrer Datei „sources.list“ hinzufügen.

echo "deb file:/usr/local/lan-repo ./" >> /etc/apt/sources.list

und das war’s, Sie sind fertig.

CD/DVD-Option

Sie können das Verzeichnis mit der .deb-Datei auf einer CD/DVD speichern und diese auch als Repository verwenden (gut für die gemeinsame Nutzung zwischen Computern). So verwenden Sie die CD als Repository:

Führen Sie einfach den Befehl aus:

sudo apt-cdrom add

Verwenden des neuen Repository.

Führen Sie dann jedes Mal, wenn Sie ein neues Debian-Paket im Verzeichnis lan-repo speichern, Folgendes aus:

sudo update-lan-repo
sudo apt-get update

Jetzt können Ihre lokalen Pakete mit Synaptic, Aptitude und den Apt-Befehlen bearbeitet werden: apt-get, apt-cache, usw. Wenn Sie versuchen, apt-get install auszuführen, werden alle Abhängigkeiten für Sie aufgelöst, sofern sie erfüllt werden können.

Antwort2

Ich habe es endlich geschafft, das Problem zu lösen, und es funktioniert ziemlich gut. Daher möchte ich es mit Leuten teilen, die etwas Ähnliches implementieren möchten.

Mein erstes Problem war, dass mein System Multi-Arch unterstützt, daher sollten die gespiegelten Repositories sowohl i386- als auch amd64-Pakete enthalten (ich habe die Quellen nicht gespiegelt), um Downloadfehler zu vermeiden. Dies geschieht in/etc/apt/mirror.listwie dieses Beispiel zeigt:

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

MeinBasispfadin dieser Datei definiert ist/mnt/apt-mirrors, und ich führe ein Skript aus, das eine externe Festplatte, die an den USB-Port meines Routers angeschlossen ist, als Samba-Freigabe mountet (Sie können das Skript hier sehen: So verwenden Sie apt-mirror zum Speichern von Dateien auf einer an einen LAN-Router angeschlossenen Festplatte

Ich wollte von anderen Computern im LAN auf die gespiegelten Repositories zugreifen, daher besteht der andere Teil der Lösung darin, die FTP-Repositories-Definitionen hinzuzufügenam AnfangIn/etc/apt/sources.list. Dieses Setup machtapt-getum beim Herunterladen von Dateien zuerst die FTP-Repositorys zu verwenden und dann die in/etc/apt/sources.list.d, vorausgesetzt, die gespiegelten sind auf dem neuesten Stand.

Die lokalen Repositories werden wie folgt definiert:

deb [arch=amd64,i386] ftp://user:password@lan-resource/apt-mirrors/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse

wo Sie ersetzenBenutzermit dem Benutzernamen, der Zugriff auf den FTP-Server hat,:Passwortmit seinem Passwort, falls zur Verbindung erforderlich (andernfalls entfernen), undLAN-Ressourcemit der Adresse des FTP-Servers in Ihrem LAN (ich habe beschlossen, zu bearbeiten/etc/hostsum die Wiederholung hartcodierter IP-Adressen zu vermeiden, habe ich 192.168.0.1 alslanftpserverin diesem Feld zu verwenden).

verwandte Informationen