Per apt-get
sein Debian zu aktualisieren ist eine feine Sache – vorallem dann,
wenn man es (dank Flatrate) über das Internet machen kann. Sollte man keine direkte
Verbindung mit dem Internet haben, so kann man über einen HTTP- oder FTP-Proxy die Pakete
dennoch herunterladen (lassen). Wie das geht soll hier mit wenigen Worten beschrieben
werden.
Die bisherige apt.conf
muß bearbeitet werden. Sie befindet sich im Verzeichnis
/etc/apt/
. Im Verzeichnis /usr/doc/apt/examples/
befindet sich die Datei
configure-index.gz
. In dieser sind Beispielscripte vorhanden, die dann »nur« noch
angepasst werden müssen.
Das folgende Script basiert auf dem Beispiel aus dieser Datei, ich habe es aber bereits
angepasst und werde mich im Folgenden auf dieses veränderte Script beziehen.
Da ich Probleme hatte, über einen FTP-Proxy mit dem Web eine Verbindung zu erstellen, habe
ich einfach das Update per HTTP vorgezogen.
Als »Vorarbeit« muß man eine Variable ändern. Diese lautet http_proxy
. Das Ändern
bzw. Setzen einer Umgebungsvariable wird mit dem Befehl export
erledigt. Mit
set
kann man sich den Inhalt der Umgebungsvariablen anzeigen lassen.
Bevor man die Variable ändert sollte man überprüfen, ob sie nicht eventuell schon einen Wert
hat. Dies kann man mit folgendem Aufruf machen:
set | grep http_proxy
Wenn als Ausgabe nichts erscheint, ist die Variable leer. Für die Verbindung mit dem HTTP-Proxy war in meinem Fall ein einloggen mit Username und Passwort erforderlich. Daher mußte ich beim Zuweisen der Variablen diese Werte mit übergeben. Ein Aufruf mit Username und Passwort würde wie folgt aussehen:
export http_proxy=http://username:password@192.168.99.1:3128
Natürlich muß die IP des Proxys und der dazugehörige Port ebenfalls mit angegeben werden.
Dies ist nach dem @
zu machen – ganz wie im Beispiel ersichtlich.
Die Angabe vom Usernamen und dem dazugehörigen Passwort im Klartext birgt natürlich
Sicherheitsrisiken. Ich habe die Variable daher nicht in die /etc/environment
eingetragen sondern immer per export
sozusagen »temporär« zugewiesen.
Nun aber zum eigentlichen Script:
// Pre-configure all packages before they are installed. // (Automatically added by debconf.) DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";}; /* In some instances involving filenames it is possible to set the default directory when the path is evaluated. This means you can use relative paths within the sub scope. The configuration directives are specified in a tree with {} designating a subscope relative to the tag before the {}. You can further specify a subscope using scope notation eg, APT::Architecture "i386"; This is prefixed with the current scope. Scope notation must be used if an option is specified on the command line with -o. */ // Options for the downloading routines Acquire { // HTTP method configuration http { Proxy "http://proxy:3128"; Timeout "120"; }; // FTP method configuration ftp { Proxy "ftp://proxy:3128"; /* Required script to perform proxy /* login. This example should work for tisfwtk */ ProxyLogin { "USER $(PROXY_USER)"; "PASS $(PROXY_PASS)"; "USER $(SITE_USER)@$(SITE):$(SITE_PORT)"; "PASS $(SITE_PASS)"; }; Timeout "120"; /* Passive mode control, proxy, non-proxy and per-host. Pasv mode is prefered if possible */ Passive "true"; }; };
Aus der Vorlage zum Script habe ich zunächst mal alle unnötigen Einträge gelöscht. Zwar
habe ich den FTP-Block noch im Script gelassen, aber solange in der sources.list
nur
HTTP-Quellen angegeben werden ist das relativ egal.
Geändert habe ich die Angabe des Proxyservers. In der /etc/hosts
habe ich einen
Eintrag für proxy
gemacht und dort die richtige IP zugewiesen. Dies hat den Vorteil,
dass man bei einer eventuellen Änderung der IP des Proxys sehr einfach für alle (!) Scripte
die Angabe der IP des Proxys ändern kann – eben über die hosts
-Datei.
Zurück zum Script. Da der HTTP-Proxy samt Username und Passwort in einer Umgebungsvariablen
definiert worden ist, sollte der Transfer jetzt ohne Probleme funktionieren. Ist das Script
nicht in der apt.conf
eingefügt worden, schlägt das Update fehl. Das Script ist also
defintiv notwendig!