Niels Stargardt: >ich habe nicht ganz verstanden, was Du eigentlich vor hast. Wenn >Du die URLS benötigst um die Dateien bei einem anderen Rechner >herunterzuladen [...]
Ich habe vor, die Dateien bei einem anderen Rechner herunterzuladen und auf CD zu brennen, damit ich sie zur Verfügung habe, falls ich sie mal bei mir installieren möchte. >[...] solltest Du folgende Seite lesen >http://debiananwenderhandbuch.de/apt-offline.html Habe ich; nur taugt das nicht aus folgendem Grund: Dort wird apt-get --print-uris dist-upgrade verwendet. dist-upgrade (wie upgrade) erneuert nur Pakete, die bereits installiert sind, und installiert Pakete, die gebraucht werden, um noch offene Abhängigkeiten erneuerter Pakete zu befriedigen. Ich möchte jedoch etwas anderes: Ich möchte alle Pakete, die auf dem offiziellen CD-Satz zu finden sind, aktuell halten, gleichgültig, ob ich sie installiert habe oder nicht. Im Folgenden sei Rechner A der Rechner bei mir ohne Netzanschluss, der auf einen CD-Satz angewiesen ist, und Rechner B der mit Netzzugang. Auf ihm ist Ubuntu installiert; außerdem bin ich dort nicht Systemadministrator, d.h. ich habe keinen Einfluss darauf, welche Pakete dort installiert sind und in welcher Version sie das sind. Beispiel: Sei Paket B eines, das auf Empfehlung eines Debian-Security-Advisory auf neueste Version zu bringen ist. Dabei bestehe eine Abhängigkeit von einem Paket A. Führe ich auf Rechner B apt-get -qq -y --print-uris install B aus, bekomme ich zwei URIs: Das für die neueste Version von Paket B und das für Paket A, obwohl ich A ja gar nicht herunterladen muss, weil es nicht neu ist. Also behelfe ich mir folgendermaßen: Auf Rechner A erzeuge ich mir eine Datei verfuegbare.Packages: apt-cache dumpavail >verfuegbare.Packages Diese Datei transportiere ich mit einem Wechselmedium auf Rechner B, und erzeuge mit ihr (umbenannt in Packages) ein Pseudopaketarchiv ("pseudo" deshalb, weil in ihm nur die Paketindexdatei vorhanden ist, nicht aber die Pakete selbst): pseudoarchiv/ sarge/ unknown/ binary-i386/ Packages Dieses melde ich auf Rechner B in einer Datei sources.list an: deb file:/home/friedhlm/Debian-Update/pseudoarchiv sarge unknown deb http://ftp.uni-stuttgart.de/debian sarge main contrib non-free deb http://ftp-stud.fht-esslingen.de/debian sarge main contrib non-free deb http://ftp.de.debian.org/debian sarge main contrib non-free deb http://ftp2.de.debian.org/debian sarge main contrib non-free deb http://ftp.de.debian.org/debian sarge-proposed-updates main contrib non-free deb http://ftp2.de.debian.org/debian sarge-proposed-updates main contrib non-free deb http://security.debian.org/ sarge/updates main contrib non-free Der Effekt ist nun, dass apt-get -qq -y --print-uris install B als URI für Paket B eine Zeile ausgibt: 'http://security.debian.org/...' B_4.5.6_i386.deb 6789 012abcdef... und für Paket A: 'file:/home/friedhlm/...' A_1.2.3_i386.deb 12345 abcdef012... Weil in der sources.list die Zeile deb file:/home/friedhlm/... am Anfang steht, wird dieses Pseudoarchiv allen weiteren Paketquellen vorgezogen, und alle mit file:/... beginnenden URIs lassen erkennen, dass es sich dabei um Pakete handelt, die auf Rechner A auf einem der CDs verfügbar sind, und deshalb nicht aus dem Netz geladen werden müssen. Also kann ich diese Print-Uris-Ausgabe filtern, so dass die Zeilen übrigbleiben, die sich auf einen der in der sources.list angegebenen HTTP-Server beziehen, und anschließend mit wget diese Pakete herunterladen. Im Prinzip beantwortet das Anwenderhandbuch meine Frage ja schon: Der Vorschlag awk '{print "wget -O " $2 " " $1}' < uris > /medium/wget-script [...] sh -x ./wget-script zeigt, dass der Inhalt der AWK-Variablen $1 das URL in für das Shell quotierter Form sein muss. Dokumentiert gefunden habe ich das allerdings nirgendwo. Und folgende Frage ist noch offen: Ist garantiert, dass keines dieser URIs white Space - genauer: AWK-Field-Separator-Zeichen - enthält? Denn wenn doch white Space enhalten wäre, würde der AWK-Aufruf das URI und den lokalen Namen nicht richtig erkennen. -- Bitte in die Adressierung auch meinen |Please put my full name also into Vor- u. Nachnamen stellen z.B. |the recipient like Friedhelm Waitzmann <[EMAIL PROTECTED]>, (Friedhelm Waitzmann) [EMAIL PROTECTED], "Waitzmann, Friedhelm" <[EMAIL PROTECTED]> -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)

