Apt

Apt stellt die nächste Generation der Debian GNU/Linux-Paketverwaltung dar. Die „Backends“, also die Programme im Hintergrund, welche die eigentliche Arbeit verrichten, sind zum großen Teil fertiggestellt. Die „Frontends“, Programme mit einer Benutzeroberfläche, befinden sich noch in der Entwicklung.

Zunächst werden wir Ihnen zeigen, wie Sie Apt konfigurieren und mit Hilfe der Kommandozeile Pakete verwalten. Später stellen wir Ihnen einige der Frontends zu Apt vor.

Apt konfigurieren

Wenn Sie Apt bereits über das Programm dselect als Installationsmethode benutzt haben, so haben Sie wahrscheinlich bereits Apt auf Ihre Bedürfnisse angepaßt. Hier noch einige weitergehende Informationen zu Apt:

Apt steht für „A Package Tool“, ein Programm also, welches den Systemadministrator (also Sie :-) ) bei der Installation und Verwaltung von Programmen unterstützen soll. Der erste Schritt zur Benutzung von Apt ist die Anpassung der Konfigurationsdatei /etc/apt/sources.list . In dieser Datei befinden sich die Informationen, von welcher Quelle die Pakete geholt werden sollen. Apt unterstützt eine große Zahl verschiedener Installationsquellen. Momentan sind dies: cdrom, file, http und ftp. Jede dieser Quellen wird in einer einzelnen Zeile in der Datei beschrieben. Dabei wird auch die Reihenfolge berücksichtigt, weiter oben stehende Einträge haben eine höhere Priorität. Das Format der Einträge läßt sich wie folgt beschreiben:

deb uri distribution [component1] [component2] [...]

Ein Eintrag könnte also wie folgt aussehen:

deb ftp://ftp.debian.org/debian stable main

In der ersten Spalte findet sich der Hinweis auf die Art der Quelle. Mögliche Werte sind hier deb für Debian Pakete im Binärformat (dies ist der gebräuchliste Wert) oder aber deb-src für Pakete die im Quellcode vorliegen. Einträge der letztere Art benötigt man beispielsweise um ein Paket aus den Quellpaketen neu zu übersetzen.

Das Feld uri beschreibt die Installationsquelle und den Pfad zum „root-“Verzeichnis der Debian Distribution. Auf einer CD-ROM ist der Pfad im Normalfall das Verzeichnis /debian .

Mit dem Feld distribution stellen Sie die gewünschte Version ein, die Sie installieren möchten. Normalerweise wird man sich zwischen stable für die aktuelle, stabile Version oder für unstable, die Entwicklerversion, entscheiden. Wie schon am Anfang dieses Buches beschrieben, bekommt jede Debian-Version einen Namen. Sie können auch diesen Namen hier einsetzen, also slink für die Version 2.1 oder potato für die Version 2.2 .

Die Felder „component“ werden mit den einzelnen Bereichen der Distribution gefüllt. Hier können beispielsweise: main, contrib, non-free, non-US stehen. Zulässig sind ein oder mehrere Einträge, die durch Leerzeichen voneinander getrennt werden.

Nun noch einige genauere Informationen zu den Installationsquellen:

Hier nun einige Beispiele. Denken Sie daran, daß Sie durchaus mehrere dieser Einträge in der Konfigurationsdatei gleichzeitig verwenden können.

deb http://www.debian.org/archive stable main contrib

Ein solcher Eintrag benutzt das Archiv auf http://www.debian.org mit den Bereichen stable/main und stable/contrib.

Folgender Eintrag holt die Dateien via FTP aus dem Verzeichnis /debian , es wird die noch nicht fertige „unstable“ Version von Debian GNU/Linux benutzt und auf die Bereiche main, contrib und non-free zugegriffen:

deb ftp://ftp.debian.org/debian unstable main contrib non-free

Nochmal ein ähnlicher Eintrag, diesmal für die stabile Version und lediglich den Bereich main.

deb ftp://ftp.debian.org/debian stable main

Wenn Sie die beiden vorhergehenden Zeilen in Ihrer Konfiguration einsetzen, werden beide Zeilen in einem FTP-Zugriff bearbeitet.

deb file:/home/vincent/debian stable main contrib non-free

Ein solcher Eintrag benutzt eine lokale Kopie der Daten auf der Festplatte. Dies kann auch ein per NFS gemountetes Verzeichnis sein.

apt-setup

Mit apt-setup können Sie über eine Benutzeroberfläche die Einträge in der Datei /etc/apt/sources.list ergänzen. apt-setup kann hierzu die Methoden „http“, „ftp“ und „filesystem“ benutzen, für die Methode „cdrom“ wird auf das Programm apt-cdrom zurückgegriffen. Ein weiteren Menüpunkt („edit sources list by hand“) ruft einen Editor (vi) auf, Sie können dann weitere Einträge von Hand aufnehmen. Nach Verlassen des Editors wird versucht, von den angegebenen Quellen die Package-Dateien zu lesen.

Als einzige Option kann beim Starten der Wert „probe“ übergeben werden. Dies führt dazu, daß eine eingelegte CD-ROM sofort eingelesen wird.

apt-cdrom

Dieses Kommando wird von apt-setup zur Integration von neuen CD-ROMs verwendet, kann aber auch eigenständig eingesetzt werden.

Im einfachsten Fall führt das Kommando apt-cdrom add dazu das die eingelegte CD mit den entsprechenden Werten in die Datei sources.list aufgenommen wird. Hierzu ist ein entsprechender Eintrag in der Datei /etc/fstab notwendig. Ein solcher Eintrag wird bereits bei der Installation angelegt und muss normalerweise nur bei Veränderungen an der Hardware angepasst werden.

Wird apt-cdrom ohne weitere Angaben aufgerufen, so werden Informationen über weitere Optionen ausgegeben.


apt 0.5.4 for linux i386 compiled on Aug 19 2001 01:02:40
Usage: apt-cdrom [options] command

apt-cdrom is a tool to add CDROM's to APT's source list. The
CDROM mount point and device information is taken from apt.conf
and /etc/fstab.

Commands:
   add - Add a CDROM
   ident - Report the identity of a CDROM

Options:
  -h   This help text
  -d   CD-ROM mount point
  -r   Rename a recognized CD-ROM
  -m   No mounting
  -f   Fast mode, don't check package files
  -a   Thorough scan mode
  -c=? Read this configuration file
  -o=? Set an arbitary configuration option, eg -o dir::cache=/tmp
See fstab(5)


apt-get

apt-get ist die eigentliche Benutzerschnittstelle zur Verwaltung von Paketen. Dieses Programm ohne grafische Benutzeroberfläche ist recht einfach zu bedienen. Grafische Alternativen befinden sich in der Entwicklung, dazu später mehr.

Status-Report

Bevor apt-get die gewünschten Aktionen, wie zum Beispiel das Löschen oder die Installation einzelner Pakete, ausführt die das System verändern, werden Sie über den zukünftigen Zustand des Systems informiert. Es werden folgende Informationen angezeigt: die Anzahl der Pakete, die aktualisiert werden (neuere Version), die Anzahl der Pakete, die nicht verändert werden (kept back), die Anzahl der zu löschenden Pakete sowie die Anzahl der neu zu installierenden Pakete.

Zusätzlich werden, wenn Sie die Option install benutzen, die Pakete ausgewählt und angezeigt, die aufgrund der Abhängigkeiten der zu installierenden Pakete benötigt werden.


     The following extra packages will be installed:
       libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl
       mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base
       bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy
       squake pgp-i python-base debmake ldso perl libreadlineg2
       ssh
Sollte es notwendig sein, Pakete zu löschen, oder Sie haben selber entschieden, Pakete zu entfernen, so werden auch diese gesondert angezeigt.

     The following packages will be REMOVED:
       xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix
       xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel
       xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid
       nas xpilot xfig
Sehen Sie sich diese Liste in jedem Fall aufmerksam an. So stellen Sie sicher, daß keine Pakete gelöscht werden, die Sie noch benötigen.

Wenn Sie Pakete neu installieren, werden Sie auch darüber informiert:

     The following NEW packages will installed:
       zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base
Dies dient nur zu Ihrer Information, diese Pakete sind bisher nicht auf Ihrem System installiert.

Bei der Auswahl der Pakete haben Sie die Möglichkeit, einzelne Pakete in der aktuellen Version zu behalten, diese werden nicht aktualisiert (kept back).

     The following packages have been kept back
       compface man-db tetex-base msql libpaper svgalib1
       gs snmp arena lynx xpat2 groff xscreensaver
Immer wenn Sie Ihr System mit der Option upgrade aktualisieren, kann es passieren, daß einzelne Pakete nicht aktualisiert werden können, weil sie auf Paketen basieren, die noch nicht in der benötigten Version verfügbar sind, oder aber es gibt Konflikte mit bereits installierten Paketen. In diesem Fall werden die Pakete im aktuellen Zustand gehalten. Sie können apt-get install benutzen, um diese Pakete trotzdem zu aktualisieren.


     The following held packages will be changed:
       cvs
Wenn Sie ein auf „hold“ gesetztes Paket aktualisieren, bekommen Sie die Meldung, daß dieses Paket verändert (changed) wird. Außer bei apt-get install kann Ihnen diese Meldung auch bei apt-get dist-upgrade begegnen.

Abschließend finden Sie noch eine Zusammenfassung über die Anzahl der betroffenen Pakete. Weiterhin wird angezeigt, welches Datenvolumen übertragen werden muß und wieviel Festplattenplatz zusätzlich benötigt wird (oder auch frei wird).

     206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.
     12 packages not fully installed or removed.
     Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.
Die erste Zeile ist eine knappe Zusammenfassung in Zahlen zu den bereits vorher ausgegebenen Informationen. In der zweiten Zeile finden Sie die nicht installierten Pakete, die bereits entpackt, aber nicht konfiguriert wurden. In der dritten Zeile finden Sie die Informationen über den benötigten Platz und die zu übertragenden Daten. Hierbei steht die erste Zahl für die tatsächlich noch zu übertragenden Daten und die zweite für den Gesamtwert. Wenn bereits Pakete bei einer vorherigen Installation übertragen wurden, aber nicht installiert werden konnten, so werden diese gespeichert und nicht noch einmal übertragen.

Wenn Sie nun mit der Installation beginnen (dies müssen Sie bei apt-get install mit einem y anstoßen), werden die Pakete von dem ausgewählten Medium gelesen und installiert.

Status-Anzeige

Während des Downloads von Archiven und Paketdateien zeigt apt-get eine Reihe von Informationen an:

sushi:/root# apt-get update
Get:1 ftp://linux frozen/main Packages [833kB]
Get:2 ftp://linux frozen/main Release [93B]
Get:3 ftp://linux frozen/contrib Packages [33.4kB]
Get:4 ftp://linux frozen/contrib Release [96B]
Get:5 ftp://linux frozen/non-free Packages [78.1kB]
Get:6 ftp://linux frozen/non-free Release [97B]
Get:7 ftp://linux stable/non-US Packages [8880B]
Get:8 ftp://linux stable/non-US Release [95B]
Fetched 953kB in 12s (74.1kB/s)
Reading Package Lists... Done
Building Dependency Tree... Done
Unmittelbar während des Downloads wird auch der Fortschritt angezeigt, inklusive der voraussichtlich benötigten Zeit für die Übertragung:

     11% [5 frozen/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s
In den mit Get: beginnenden Zeilen steht die benutzte Methode (hier ftp) und der benutzte Server. Den Servernamen können Sie in einem lokalen Netz auch verkürzt angeben, wie hier mit linux gezeigt. Weiterhin wird der Bereich (frozen und stable) angezeigt sowie die Verzeichnisse ( main, contrib usw.) und die Dateinamen mit der Dateigröße.

Bei der Installation von Paketen sieht der Vorgang ähnlich aus:

sushi:/root# apt-get install aptitude
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
  aptitude
0 packages upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
Need to get 148kB of archives. After unpacking 471kB will be used.
Get:1 ftp://ftp.debian.de potato/main aptitude 0.0.4a-3 [148kB]
Fetched 148kB in 5s (25.3kB/s)
Selecting previously deselected package aptitude.
(Reading database ... 22625 files and directories currently installed.)
Unpacking aptitude (from .../aptitude_0.0.4a-3_i386.deb) ...
Setting up aptitude (0.0.4a-3) ...
Hier wird, in der Zeile „Get:“, der Dateiname der zu installierenden Datei angezeigt und danach das Paket entpackt und installiert.

Optionen und Kommandos

apt-get benutzt folgende Syntax:

apt-get [options] [command] [package ...]

Die Optionen werden Sie sicher seltener benötigen, daher zuerst einige Worte zu den einzelnen Kommandos:

check

Bei jedem Start von apt (mit der Ausnahme, wenn Sie die Option update benutzen) wird eine Reihe von Prüfungen durchgeführt, um sicherzustellen, daß apt funktionsfähig und Ihr System in einem guten Zustand ist. Sie können diese Prüfungen auch zu jeder Zeit selber anstoßen:

sushi:/root# apt-get check
Reading Package Lists... Done
Building Dependency Tree... Done
Als erstes werden die Paketdateien anhand der Informationen in /etc/apt/sources.list eingelesen. Wenn Sie diesen Vorgang noch einmal wiederholen, werden Sie feststellen, daß der zweite Test deutlich schneller beendet ist, die Informationen werden von apt gecacht. Für Paketdateien, die nicht gefunden werden, wird ggf. eine Warnung ausgegeben, diese Pakete werden dann ignoriert.

Im zweiten Schritt wird eine detaillierte Analyse des Systems durchgeführt, inklusive aller Abhängigkeiten. Es werden von jedem installierten oder bereits entpackten, aber noch nicht konfiguriertem Paket die Abhängigkeiten geprüft. Wenn dabei ein Problem auftaucht, wird dies angezeigt und apt-get bricht die weitere Bearbeitung ab.
sushi:/root# apt-get check
Reading Package Lists... Done
Building Dependancy Tree... Done
You might want to run apt-get -f install' to correct these.
Sorry, but the following packages have unmet dependencies:
  9fonts: Depends: xlib6g but it is not installed
  uucp: Depends: mailx but it is not installed
  blast: Depends: xlib6g (>= 3.3-5) but it is not installed


  adduser: Depends: perl-base but it is not installed
  aumix: Depends: libgpmg1 but it is not installed
  debiandoc-sgml: Depends: sgml-base but it is not installed
  bash-builtins: Depends: bash (>= 2.01) but 2.0-3 is installed
  cthugha: Depends: svgalibg1 but it is not installed
           Depends: xlib6g (>= 3.3-5) but it is not installed
  libreadlineg2: Conflicts:libreadline2 (<< 2.1-2.1)
In diesem Beispiel gibt es eine ganze Reihe Probleme, einige Pakete sind gar nicht installiert, oder es sind falsche Versionen installiert. Für jedes einzelne Paket, bei dem ein Problem festgestellt wurde, wird eine Zeile ausgegeben, mit den Informationen, um welches Paket es sich handelt und welches Problem festgestellt wurde.

Es gibt zwei Möglichkeiten, wie es zu solchen Problemen kommen kann: Bei einem „Upgrade“ kann es passieren, daß ein benötigtes Paket fehlt, oder aber während der Installation eines Paketes ist ein Problem aufgetreten. Wenn letzteres aufgetreten ist, dann wurde das Paket zwar entpackt, aber nicht korrekt konfiguriert.

Beide Situationen können von apt in den meisten Fällen mit der Option -f selbst behoben werden. Wenn Sie dselect mit der Methode apt benutzen, wird immer die Option -f verwendet, um eine einfache Bedienung zu gewährleisten.

Trotzdem kann es passieren, daß bei einem schweren Problem apt nicht in der Lage ist, das Problem zu beheben. In diesem Fall müssen Sie von Hand mit dem Programm dpkg den Konflikt beseitigen. Sie können danach mit apt-get fortfahren.

update

aktualisiert die Übersicht der verfügbaren Pakete, liest also die Informationen aus den Dateien Packages.gz der jeweiligen Distribution ein. Sie sollten update immer ausführen, wenn Sie wissen, daß sich die Inhalte der Paketdateien beziehungsweise die verfügbaren Pakete auf dem Server geändert haben. Auf jeden Fall sollten Sie update vor dem Aufruf von upgrade oder dist-upgrade aufrufen.

upgrade

Um alle auf dem System installierten Pakete auf die aktuelle Version zu bringen, können Sie upgrade benutzen. Alle bereits installierten Pakete, von denen eine neuere Version verfügbar ist, werden aktualisiert. Es werden keine Pakete gelöscht, die bereits installiert sind (und in den neuen Paketdateien nicht mehr enthalten sind), oder Pakete installiert, die noch nicht auf dem System vorhanden sind. Pakete, die bereits installiert sind und es bei einem Upgrade erforderlich machen, den Status anderer Pakete zu verändern, werden nicht aktualisiert. apt-get update muß vorab ausgeführt werden, so daß sichergestellt ist, daß die Paketinformationen auf dem neuesten Stand sind.

dist-upgrade

ist eigentlich eine Ergänzung oder Erweiterung zu upgrade. Es wird hierbei dafür Sorge getragen, daß für das System wichtigere Pakete zuerst installiert werden. Hierbei werden in engen Grenzen auch Abhängigkeiten verändert, um ein Paket installieren zu können. Dies ist dann notwendig, wenn ein System komplett auf eine neue Version umgestellt werden soll und kein „sanfter“ Übergang gewährleistet werden kann.

dselect-upgrade

Mit dieser Option werden auch die Paketinformationen „recommends“ und „suggests“ ausgewertet. dies ist sonst nur mittels dselect möglich. Diese Vörschläge für weitere Pakete sind zur Funktion des gewünschten Paketes nicht zwingend erforderlich, können aber durchaus sinnvoll sein.

install

Diese Option benötigt noch einen oder mehrere Paketnamen. Jedes dieser Pakete (der Paketname, also beispielsweise sendmail, reicht hierbei aus) sowie die noch benötigten Pakete (diese werden automatisch ermittelt) werden auf Basis der Informationen in /etc/apt/sources.list geholt und installiert. Wenn Sie hinter den Namen des Paketes ein Minuszeichen (-) setzen, wird das Paket aus dem System entfernt, wenn es bereits installiert ist. Achten Sie darauf, daß das Minuszeichen direkt nach dem Paketnamen steht, ohne ein Leerzeichen dazwischen. Diese Funktion kann auch bei Konflikten bei der Installation einzelner Pakete sehr nützlich sein, Sie können so Pakete in einem Vorgang löschen und installieren. Die Option „install“ wählt immer die aktuellste verfügbare Version eines Paketes aus. Es kann jedoch sinnvoll sein auch Zugriff auf ältere Programmversionen zu haben. Hierzu kann aber der Version 0.5.3 von apt folgende Syntax verwendet werden: apt-get install sane/unstable. Durch einen Slash getrennt kann hinter dem Paketnamen die gewünschte Release eines Paketes angegeben werden.

remove

Diese Funktion ist identisch mit der vorherigen, nur mit dem Unterschied, daß die Pakete standardmäßig entfernt werden, statt sie zu installieren. Analog zu dem eben Beschriebenen können Sie hier in Pluszeichen (+) verwenden, um Pakete zu installieren.

check

dient lediglich zur Diagnose. Es wird überprüft, ob sich irgendwelche Unstimmigkeiten in den Paketen finden.

clean

Dies löscht das lokale Verzeichnis, in dem sich die zu installierenden Pakete befinden. Alles, mit Ausnahme der lock-Datei, wird aus /var/cache/apt/archives/ und /var/cache/apt/archives/partial/ gelöscht.

source

Dieses Kommando holt die notwendigen Dateien zur Erzeugung eines Binärpaketes. Es können so angepasste Pakete erzeugt werden oder aber Pakete auf einer anderen Architektur übersetzt werden. Wichtig ist hier bei ein entsprechender „deb-src“ Eintrag in der Datei sources.list. Um alle zu einem Paket gehörenden Dateien von einem Server zu holen, reicht das Kommando apt-get source paketname. Es werden die aktuellen Versionen der Dateien paketname.orig.tar.gz, paketname.dsc und paketname.diff.gz im aktuellen Verzeichnis gespeichert.

Um aus den Quellen direkt in Binärpaket zu erzeugen, kann die Option -b angegeben werden. Das komplette Kommando lautet dann apt-get source -b paketname. Wenn die benötigten Source Pakete bereits vorliegen, kann ds Binärpaket auch direkt mit dem Kommando dpkg-buildpackage -rfakeroot -us -uc erzeugt werden.

build-dep

Die meisten Softwarepakete benötigen bei der Übersetzung aus den Quellpaketen weiter Entwicklungspakete wie Librarys und Header Dateien. Diese werden häufig nicht mitgeliefert und liegen in gesonderten Paketen vor. Das Debian Paketsystem sieht sogenannte „build dependencies“ vor in denen alle Abhängigkeiten zur Erzeugung eines Paketes beschrieben sind.

Das Kommando apt-get build-dep paketname sorgt dafür das alle zur Übersetzung eines Paketes benötigten Dateien auf dem System vorhanden sind.

moo

Als kleine versteckte Option haben die Entwickler auch noch noch ein sogenanntes „Easter-Egg“ eingebaut:


fr@nigiri:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...


Soweit zu den Parametern. Sie können noch folgende Optionen benutzen um apt-get zu steuern.

-h

Zeigt die Hilfe zu apt-get an.

-m

Ignoriere eventuell fehlende Pakete

-d

Holt die gewünschten Pakete vom Server, ohne diese zu installieren.

-f

Behebt die defekten Abhängigkeiten zwischen den Paketen. apt-get -f install versucht, diese automatisch zu reparieren.

-s

Simulation, führt keine Aktionen aus.

-u

Zeigt auch die zu aktualisierenden Pakete an.

-y

Aktualisiert alle Pakete automatisch indem alle Fragen mit „Yes“ beantwortet werden.

Hier nun ein Beispiel aus der Praxis zur Benutzung von Apt:

Beachten Sie bitte, daß Pakete nur mit Superuser-Rechten (root) installiert werden können.

Zuallererst muß apt die Informationen über die verfügbaren Pakete erhalten, hierzu dient das Kommando apt-get update.


sushi:/root # apt-get update
Hit ftp://192.168.0.5 potato/main Packages
Hit ftp://192.168.0.5 potato/main Release
Get:1 ftp://192.168.0.5 potato/non-free Packages [78.6kB]
Get:2 ftp://192.168.0.5 potato/non-free Release [99B]
Fetched 68.5kB in 0s (104kB/s)
Reading Package Lists... Done
Building Dependency Tree... Done
Nachdem das System nun über den aktuellen Stand der Pakete informiert ist, können Sie weitere Pakete mittels Apt installieren, hier gezeigt am Beispiel von sane:


sushi:/root# apt-get install sane
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  libgimp1 libsane
The following NEW packages will be installed:
  libgimp1 libsane sane
0 packages upgraded, 3 newly installed, 0 to remove and 3 not upgraded.
Need to get 703kB of archives. After unpacking 1729kB will be used.
Do you want to continue? [Y/n]
Beachten Sie hierbei, daß automatisch die benötigten Pakete libgimp1 und libsane ausgewählt wurden. Insgesamt werden also drei Pakete installiert. Weiter unten erhalten Sie noch Informationen über den später benötigten Plattenplatz der Pakete sowie über die Größe der Pakete, die ja eventuell via FTP erst übertragen werden müssen. Wenn Sie mit den Angaben so einverstanden sind, bestätigen Sie dies mit der Eingabetaste, oder drücken Sie die Taste n und danach die Eingabetaste, um den Vorgang zu beenden.

Wenn mehrere Pakete gleichzeitig installiert werden sollen, so können diese einfach hintereinander auf der Kommandozeile angegeben werden.

apt - Offline nutzen

Normalerweise wird apt mit einem direkten Zugriff zu einem Archiv benutzt, sei es daß die Daten auf einer lokalen Festplatte liegen oder von einer CD-ROM kommen oder über ein Netzwerk installiert werden sollen. Trotzdem kann es sinnvoll sein, wenn Sie keine aktuellen CDs zur Hand haben oder Ihnen der Download der Dateien zu langwierig ist, die Daten auf einem anderen Medium, zum Beispiel ein ZIP, von einem Rechner mit den aktuellen Paketen zu kopieren und zu installieren.

Problematisch ist dabei, daß ein solches Medium nicht ausreicht, um eine komplette Debian-Distribution aufzunehmen. Aber es reicht ja auch aus, nur die benötigten Pakete zu kopieren. Sie müssen also mittels apt eine Liste der benötigten Pakete erstellen und diese auf dem Rechner mit einer schnellen Anbindung ans Netz downloaden. Für den Download der Dateien ist das Programm wget gut geeignet.

Weiterhin müssen Sie apt dazu bringen, die Paketdateien von dem neuen Medium zu lesen. Dieses sollte mit einem Dateisystem formatiert sein, welches mit langen Dateinamen umgehen kann; dies wären zum Beispiel: ext2, vfat oder fat32.

Die Konfigurationsdatei

In der Konfigurationsdatei teilen Sie apt mit, daß die Debian-Pakete auf dem Medium zu speichern sind und daß dort auch die Konfigurationsdateien zu finden sind. Die Datei sources.list sollte den Server enthalten, von dem die Pakete geholt werden sollen. Die Datei status ist eine Kopie der Datei /var/lib/dpkg/status von Ihrem Zielrechner.

Die Datei apt.conf enthält die nötigen Informationen, um das Medium zu benutzen:

      APT
      {
        /* nur notwendig, wenn die beiden Rechner nicht die gleiche Architektur haben */
        Architecture "i386";

        Get::Download-Only "true";
      };

      Dir
      {
        /* die status-Datei auf dem Medium nutzen. */
        State "/medium/";
        State::status "status";

        /* auf dem Medium cachen */
        Cache::archives "/medium/archives/";

        /* da ist auch die Datei sources.list */
        Etc "/medium/";
      };
Auf Ihrem Zielrechner mounten Sie zuerst das Medium und kopieren die Datei /var/lib/dpkg/status dorthin. Erzeugen Sie dann die Verzeichnisse, die oben in der Struktur gezeigt sind (archives/partial/ und lists/partial/).

Die weiteren Schritte können Sie auf dem zweiten Rechner durchführen. Passen Sie die Datei sources.list an. Dann führen Sie folgendes auf diesem Rechner aus:

       export APT_CONFIG="/medium/apt.conf"
       apt-get update
       apt-get dist-upgrade
Sie können auch alle anderen apt-Optionen oder auch gnome-apt benutzen.

Wenn alle Dateien auf das Medium übertragen wurden, können Sie diese zu Ihrem Zielrechner transportieren und die Pakete wie folgt installieren:

        export APT_CONFIG="/medium/apt.conf"
        apt-get check
        apt-get --no-d -o dir::etc::status=/var/lib/dpkg/status dist-upgrade
Bitte beachten Sie, daß hierbei wieder die lokale status-Datei benutzt wird!

Kopieren der Dateien mit wget

Wenn Sie nicht die Möglichkeit haben, die Dateien auf einem Rechner mit apt aus dem Netz zu kopieren, können Sie alternativ auch das Programm wget benutzen. Dieses ist nicht Teil der Debian GNU/Linux-Basisinstallation, Sie müssen also zunächst das Paket installieren.

wget dient zum Kopieren von Webseiten inklusive der dazugehörigen Grafiken und eventueller weiterer mit dieser Seite verlinkten Seiten. Wir werden wget aber zum gezielten Kopieren der benötigten Debian-Pakete von einem Server benutzen.

Sie können die Pakete mittels wget kopieren, indem Sie apt-get mit der Option -*-print-uris dazu benutzen, um eine Liste der benötigten Pakete mit der kompletten URL für wget zu erzeugen.

Entgegen dem eben vorgestellten Beispiel brauchen Sie hier keine extra Konfigurationsdateien (außer natürlich der Datei /etc/apt/sources.list, welche von apt benötigt wird). Führen Sie die folgenden Kommandos auf dem Rechner aus, auf dem die Pakete später installiert werden sollen.

       apt-get dist-upgrade
       apt-get -qq --print-uris dist-upgrade > uris
       awk '{print "wget -O " $2 " " $1}' < uris > /medium/wget-script
Drücken Sie „n“ nach dem ersten Kommando und prüfen Sie, daß die Auswahl korrekt ist. Die benötigten Pakete wurden nun zur späteren Installation markiert. In der zweiten Zeile wird mit apt-get und den entsprechenden Optionen eine Liste der zu installierenden Pakete erzeugt und in die Datei uris geschrieben. Das letzte Kommando ergänzt die Liste der Pakete um die nötigen Aufrufe des Kommandos wget.

Die Datei /medium/wget-script enthält nun eine Liste mit Kommandos, welche die benötigten Pakete aus dem Netz holen. Sie können dieses jetzt auf dem Medium ausführen:

        cd /medium
        sh -x ./wget-script
Hierbei ist es unerheblich, ob das Transportmedium sich noch in dem Rechner befindet, auf dem die Pakete installiert werden sollen (was keinen Sinn machen würde, Sie könnten sich den Umweg über wget dann sparen), oder ob Sie das Medium in einem Rechner mit einer besseren Netzanbindung anmelden und dort das Script ausführen. Die Pakete werden lediglich auf das Medium übertragen und nicht installiert.

Wenn alle Dateien übertragen wurden, können Sie das Medium zu Ihrem Zielrechner transportieren und die Pakete mit folgendem Kommando installieren:

        apt-get -o dir::cache::archives="/medium/" dist-upgrade

apt-cache

Mit apt-cache können die verschiedensten Abfragen zu den bekannten Paketen (also auch zu den noch nicht installierten) erstellt werden. Dies beschränkt sich nicht nur auf Paketnamen oder die zu einem Paket gehörenden Dateinamen sondern es können auch Informationen zu den Metadaten erfragt werden.

Wenn Sie nicht die Option -h oder --help benutzen muß mindestens eines der folgenden Kommandos angegeben werden.

add

fügt die angegebene Package-Datei dem Package-Cache hinzu.

gencaches

diese Option bewirkt das gleiche wie apt-get check. Es werden die Source und Package Caches aus den Informationen in /etc/apt/sources.list und /var/lib/dpkg/status erstellt.

showpkg

diese Option zeigt Informationen über die weiterhin auf der Kommandozeile angegebenen Pakete. Es werden die verfügbaren Versionen der Pakete sowie die gesammten Abhängigkeiten dieser Pakete angezeigt. Hierbei wird zwischen sogenannten „forward“-Dependencies und „reverse“-Dependencies unterschieden. Forward-Dependencies (dies sind die im normalen Sprachgebrauch verwendeten Abhängigkeiten) beziehen sich auf die Pakete die das angefragte Paket benötigt um einwandfrei zu funktionieren. Reverse-Dependecies beschreiben die Pakete die das angefragte Paket benötigen um zu funktionieren. Ein Beispiel: apt-cache showpkg bash gibt folgendes Ergebnis aus:


Package: bash
Versions: 
2.05a-12(/var/lib/apt/lists/192.168.1.1_home_ftp_debian_dists_sid_
main_binary-i386_Packages)(/var/lib/dpkg/status)
2.05a-11(/var/lib/apt/lists/192.168.1.1_home_ftp_debian_dists_woody_
main_binary-i386_Packages)

Reverse Depends: 
  kernel-patch-ltt,bash 2.0
  kernel-patch-lkcd,bash 2.0
  kernel-patch-kdb,bash 2.0
  kernel-patch-acl,bash 2.0
  horde2,bash
  cron-apt,bash 2.03-6
  common-lisp-controller,bash 2.04-9
  cdcontrol,bash 2.0
  bash-doc,bash 2.03-1
  bash-builtins,bash 2.05a-12
  base-files,bash 2.03-3
  txt2regex,bash 2.04
  openmosix,bash 2.0
  mosix,bash 2.0
  mkrboot,bash
  mason,bash
  kernel-patch-ulog,bash 2.0
  kernel-patch-ttl,bash 2.0
  kernel-patch-ltt,bash 2.0
  kernel-patch-kiobuf-bigmem,bash 2.0
  kernel-patch-kiobuf,bash 2.0
  kernel-patch-kdb,bash 2.0
  kernel-patch-irc,bash 2.0
  kernel-patch-badram,bash 2.0
  htmlheadline,bash 2.04-1
  horde,bash 2.03-6
  gopherweblink,bash
  gibraltar-bootsupport,bash
  foomatic-bin,bash 2.05
  diffmon,bash 2.0
  cron-apt,bash 2.03-6
  common-lisp-controller,bash 2.04-9
  colorgcc,bash
  cdcontrol,bash 2.0
  bug,bash 2.04-1
  bash-doc,bash 2.03-1
  bash-builtins,bash 2.05a-11
  base-files,bash 2.03-3
Dependencies: 
2.05a-12 - base-files (2 2.1.12) libc6 (2 2.2.4-4) libncurses5 (2 5.2.20020112a-1) grep-dctrl (0 (null)) bash-completion (0 (null)) bash-doc (1 2.05-1) bash-completion (0 (null)) 
2.05a-11 - base-files (2 2.1.12) libc6 (2 2.2.4-4) libncurses5 (2 5.2.20020112a-1) bash-completion (0 (null)) bash-doc (1 2.05-1) bash-completion (0 (null)) 
Provides: 
2.05a-12 - 
2.05a-11 - 
Reverse Provides: 

Es müssen also, damit dieses Paket funktioniert, mindestens die unter „Dependencies:“ aufgeführten Pakete installiert sein. Eine weitere wichtige Information sind die „Reverse Depends:“. Dies sind Pakete die von diesem Paket (bash) abhängen.

stats

Es wird eine Statistik über den aktuellen Cache ausgegeben. Es sind keine weiteren Argumente notwendig. Folgende Informationen werden ausgegeben:


fr@sushi:~$ apt-cache stat
Total Package Names : 8953 (358k)
  Normal Packages: 6872
  Pure Virtual Packages: 259
  Single Virtual Packages: 176
  Mixed Virtual Packages: 115
  Missing: 1531
Total Distinct Versions: 9133 (438k)
Total Dependencies: 47613 (1143k)
Total Ver/File relations: 19322 (309k)
Total Provides Mappings: 1889 (37.8k)
Total Globbed Strings: 110 (1273)
Total Dependency Version space: 179k
Total Slack space: 86.3k
Total Space Accounted for: 2374k

Total Package Names Anzahl der Paketnamen die im Cache gefunden wurden

Normal Packages Dies sind Pakete deren Namen in einer Abhängigkeit zu einem anderen Paket stehen, hierunter fällt eine große Zahl der Pakete.

Pure Virtual Packages Anzahl der „virtuellen“ Paketnamen im Cache. Dies sind Pakete die ein Paket zur Verfügung stellen, deren Name aber nicht mit diesem zu tun hat, als Beispiel sein hier mail-transport-agent genannt, einige Pakete (beispielsweise exim, qmail und sendmail) stellen das Paket mail-transport-agent zur Verfügung, es gibt aber kein Paket mit dem Namen mail-transport-agent.

Single Virtual Packages Dies ist die Anzahl der Pakete die ein virtuelles Paket zur Verfügung stellen, dies aber nur einmalig im Cache auftaucht. Das virtuelle Paket X11-text-viewer wird beispielsweise nur von xless zur Verfügung gestellt.

Mixed Virtual Packages Anzahl der Pakete die sowohl als virtuelle als auch als reale Pakete vorhanden sind. debconf ist als reales Paket vorhanden, wird aber auch von debconf-tiny zur Verfügung gestellt.

Missing Pakete die in einer Abhängigkeit benannt werden, aber nicht im Cache zu finden sind. Dies kann vorkommen wenn kein Zugriff auf eine komplette Debian Distribution gegeben ist oder wenn Pakete aus der Distribution entfernt wurden.

Total Distinct Versions Die Anzahl der Paketversionen im Cache. Diese ist im Normalfall gleich der Anzahl der gesamten Pakete. Wenn jedoch zwei Distributionen (beispielsweise „stable“ und „testing“) benutzt werden, kann es vorkommen das mehrere Versionen eines Paketes verfügbar sind. In diesem Fall kann die Zahl deutlich über der der gesamten Pakete liegen.

Total Dependencies Die Anzahl der gesamten Abhängigkeiten zwischen allen Paketen im Cache.

Total Ver/File relations

Total Provides Mappings

Total Globbed Strings

Total Dependency Version space

Total Slack space

Total Space Accounted for

dump

Zeigt eine kurze Information zu jedem Paket an, dies ist für den normalen Benutzer wenig sinnvoll und ist zur Fehlersuche für Entwickler gedacht.

dumpavail

Zeigt eine Liste der verfügbaren Pakete.

unmet

Zeigt eine Zusammanfassung aller nicht erfüllten Abhängigkeiten.

show

Hat einen ähnliche Effekt wie das Kommando dpkg --print-avail und zeigt die Paketinformationen für die angegebenen Pakete.

search

Führt eine Volltextsuche über alle verfügbaren Paketdateien durch. Es können Reguläre Ausdrücke benutzt werden. Es werden die Paketnamen und Beschreibungen nach dem Suchbegriff durchsucht und es wird der Paketname und die Kurzbeschreibung der entsprechenden Pakete ausgegeben. Wenn die Option --full angegeben wird, entspricht die Ausgabe der von show. Mit der Option --names-only wird die Paketbeschreibung nicht durchsucht, die Suche beschränkt sich auf den Paketnamen.

Mehrere Suchargumente können angegeben werden und werden dann über eine UND-Verknüpfung ausgewertet.

depends

Zeigt alle Abhängigkeiten eines Paketes an. Weiterhin werden alle anderen Pakete angezeigt die die geforderten Abhängigkeiten erfüllten können.


fr@wasabi@sushi:~$ apt-cache depends bash
bash
  Depends: base-files
  PreDepends: libc6
  PreDepends: libncurses5
  Suggests: grep-dctrl
  Conflicts: <bash-completion>
  Replaces: bash-doc
  Replaces: <bash-completion>


policy

Die Option policy zeigt zu einem Paket die installierte sowie die verfügbaren Versionen aus den erreichbaren Quellen an.


fr@nigiri:~$ apt-cache policy bash
bash:
  Installed: 2.05b-5
  Candidate: 2.05b-5
  Version Table:
 *** 2.05b-5 0
        500 ftp://ftp.freenet.de sid/main Packages
        100 /var/lib/dpkg/status
     2.05b-3 0
        500 ftp://ftp.freenet.de testing/main Packages
        500 ftp://ftp.freenet.de sarge/main Packages
     2.05a-11 0
        500 ftp://ftp.freenet.de woody/main Packages


pkgnames

Zeigt eine Liste aller Paketnamen. Optional kann eine Zeichenkette angegeben werden die als Suchprefix verwendet wird.

dotty

Dieser Option kann eine Liste von Paketnamen mitgegeben werden. Die Ausgabe erfolgt in einem Format welches vom Programm dotty aus dem Paket GraphVis (http://www.research.att.com/sw/tools/graphviz/) gelesen werden kann. So kann eine grafische Darstellung der Paketabhängigkeiten erstellt werden. Normalerweise werden alle Abhängigkeiten verfolgt, was zu sehr großen Dateien führen kann. Dies kann mit der Option APT::Cache::GivenOnly in der Datei /etc/apt/config deaktiviert werden.

apt-proxy

apt-proxy ist ein Cache der zusammen mit APT von allen Debian Systemen aus im Netz genutzt werden kann. Lokale Netzwerke verfügen normalerweise über eine höhere Bandbreite wie für das gesammte Netz nach aussen ins Internet zur Verfügung steht. Durch einen gemeinsam genutzten Cache können bereits auf einem System installierte Pakete auch allen anderen Systemen verfügbar gemacht werden, ohne das diese Pakete nochmals aus dem Internet geholt werden.

apt-proxy kann als Cache effizienter mit Debian Paketen umgehen wie beispielsweise Squid. Dies liegt zum einen daran das apt-proxy die Paketdateien auswertet und alte Versionen löscht die nicht mehr benötigt werden. Zum anderen verwendet apt-proxy zur Übertragung von Dateien das Programm rsync, so daß abgebrochene Downloads fortgesetzt werden können. Alternativ können auch die Protokolle HTTP und FTP zum Download genutzt werden.

Nach der Installation muss zunächst in der Datei apt-proxy.conf ein gut erreichbarer Debian Server eingetragen werden, von diesem werden dann alle Pakete geholt. Auf alle Clients die den APT Proxy benutzen sollen ist die Konfiguration so anzupassen das der Rechner auf dem apt-proxy installiert ist als Quelle verwendet wird. apt-proxy läuft auf dem Port 9999, die Einträge in der Datei sources.list auf den Clients müssen folgendes Format haben


deb http://SERVER:9999/main woody main contrib non-free
deb http://SERVER:9999/non-US woody/non-US main contrib non-free
deb-src http://SERVER:9999/main woody main contrib non-free
deb-src http://SERVER:9999/non-US woody/non-US main contrib non-free


Hierbei ist zu beachten das „SERVER“ durch den entsprechenden Rechnernamen/IP Nummer ersetzt wird. Nachdem diese Anpassungen vorgenommen worden sind, wird auf einem der Clients das Kommando apt-get update aufgerufen um auf dem Server die Verzeichnisse zu initialisieren und die Paketlisten verfügbar zu machen. Nun können alle Clients diesen zentralen Dienst transparent nutzen.

Wenn bereits auf dem Server ein Verzeichnis mit Debian Paketen vorliegt, so kann dies mittels apt-proxy-import in den Cache von apt-proxy integriert werden.

apt-move

apt-move ist ein Shell-Skript mit dem eine Anzahl von lokal vorliegenden Debian Paketen in eine Verzeichnisstruktur verschoben werden kann die wiederrum einem Debian Archiv entspricht. Die Dateien werden dabei in einer Verzeichnisstruktur unterhalb von $LOCALDIR/pool/... abgelegt, die Variable $LOCALDIR kann dabei in der Konfigurationsdatei festgelegt werden. Hauptsächlich wurde apt-move entwickelt um via apt-get aus dem Netz übertragene Dateien aus dem Datei-Cache in ein Debian-Archiv zu übernehmen, die Konfiguration kann jedoch so angepasst werden das jede beliebige Sammlung von Paketen (beispielsweise von CD-ROMs) dem Archiv hinzugefügt werden kann.

Weiterhin besteht die Möglichkeit mittels der Optionen sync und mirror eine Kopie, auch von Teilen, eines Debian Servers zu erstellen. Auch können überflüssige, veraltete Pakete gelöscht werden und es können lokale Packages.gz und Sources.gz Dateien erzeugt werden.

apt-move kennt eine ganze Reihe von Kommandos und Optionen:


$Id: apt-move,v 1.79 2002/10/23 22:16:33 herbert Exp $

Usage:    apt-move [-c conffile] [-d dist] [-fqt] COMMAND

Commands:
       get         - update your master files from local apt.
       getlocal    - alias of get.
       fsck        - fix broken repositories, use with caution.
       move        - move cache files into mirror tree.
       movefile    - move files specified on the command line.
       delete      - delete obsolete packages.
       packages    - create new local Packages files.
       update      - alias for 'get move delete packages'.
       local       - alias for 'move delete packages'.
       localupdate - alias for 'getlocal move delete packages'.
       mirror      - update your local mirror from remote rsync site.
       sync        - same as mirror, but only gets packages that
                     you currently have installed on your system.
       exclude     - prints a list of all packages EXCLUDED from the
                     mirror by the .exclude file (ignores -t).
       listbin     - prints lists of packages which can serve as the
                     input to mirrorbin.  Takes the arguments mirror,
                     sync, or repo.
       listsrc     - same as listbin, but lists source packages.
       mirrorbin   - same as mirror, but gets the packages specified
                     on stdin.
       mirrorsrc   - same as mirrorbin, but gets source packages.

Options:
  -c  Specify an alternative configuration file.
  -d  Override the DIST setting.
  -f  Override the MAXDELETE setting (use with caution).
  -q  Be quiet; suppress normal output.
  -t  Show what apt-move would do, but do not actually do anything.

See the apt-move(8) manpage for further details.


Bevor apt-move eingesetzt werden kann, ist die Konfigurationsdatei /etc/apt-move.conf anzupassen. Diese Datei ist, wie alle Konfigurationsdateien auf einem Debian System, recht gut kommentiert. Wichtig ist es die Optionen APTSITES (entsprechend den Einträgen in der Datei /etc/apt/sources.list), LOCALDIR und DIST anzupassen. Diese beschreiben die Server von denen die Dateien geholt werden sollen, die lokalen Bereich in dem die Pakete gespeichert werden sollen und die gewünschte Distribution.

Nach der Anpassung dieser drei Optionen wird apt-move zumindest keinen größeren Schaden anrichten.... ;-). Weitere Anpassungen können später noch vorgenommen werden, beispielsweise ist es sinnvoll nach einiger Zeit nicht mehr benötigte Dateien zu löschen, dies wird durch setzen der Option DELETE auf yes erreicht.

In jedem Fall sollten die ersten Versuche mit apt-move immer den Parameter -t beinhalten, dieser testet nur die Einstellungen und es werden keine Aktionen durchgeführt.

Sollen bestimmte Dateien (beispielsweise Kernel-Sourcen) ausgeschlossen werden, so können diese in einer Exclude-Datei festgelegt werden. Ein Beispiel für eine solche Datei findet sich unter /usr/share/doc/apt-move/examples/SAMPLE.exclude.

apt-ftparchive

apt-ftparchive erzeugt Index Dateien die von APT benutzt werden können um auf ein Paketverzeichnis zuzugreifen. Die Funktionalität ist vergleichbar mit der von dpkg-scanpackages und dpkg-scansources und kann diese Programme ersetzen.

Die wichtigsten Kombinationen sind:


 packages binarypath [overridefile [pathprefix]]
 sources srcpath [overridefile [pathprefix]]
 contents path
 generate config [groups]
 clean config


apt-show-source

Dieses Programm vergleicht die APT Listen mit Source Dateien sowie das dpkg Status File und zeigt auf von welchen Paketen höhere Versionsnummer wie bereits installiert verfügbar sind. Um festzustellen welche Version die Sourcen eines Programmes haben, müssen natürlich entsprechende Einträge in der sources.list vorhanden sein. Hierbei ist auch darauf zu achten welche Release (potato, woody usw.) in den jeweiligen Zeilen angegeben ist.


fr@wasabi:~$  apt-show-source -p bash
Sorry, no newer source package available for bash


In diesem Beispiel ist keine aktuellere Version dieses Pakete als Source Paket verfügbar. Zeigt jedoch die „deb-src“ Zeile auf eine ältere Release, so kann durchaus der Fall eintreten das das Source Paket auf einem älteren Stand ist.


fr@wasabi:~$  apt-show-source -p bash

Inst. Package (Version)                | Newest Source Package (Version)
-------------------------------------------------------------------------------
bash (2.05a-12)                        | bash (2.05a-11)


apt-show-versions

Dieses Kommando zeigt die aktuell installierten Pakete, die Version und die Release an. Mittels der Option -p kann nur ein bestimmtes Paket angegeben werden, -r erlaubt die Filterung mittels Wildcard. Die Option -u zeigt alle Pakete die aktualisiert werden können.


fr@surimi:~$ apt-show-versions -h
Apt-Show-Versions v.0.02 (c) Christoph Martin

Usage:
 apt-show-versions	   shows available versions of installed packages.
 
Options:
 -stf|--status-file=<file>  Use <file> as the dpkg status file instead
                            of /var/lib/dpkg/status
 -ld|list-dir=<directory>   Use <directory> as path to apt's list files instead
                            of /var/state/apt/lists/ or /var/lib/apt/lists/
 -p|--package=<package>     Print versions for <package>.
 -r|--regex                 Read package with -p as regex
 -u|--upgradeable           Print only upgradeable packages
 -a|--allversions           Print all available versions.
 -b|--brief                 Short output.
 -v|--verbose               Verbose messages.
 -h|--help                  Print this help.

fr@surimi:~$ apt-show-versions  -r -p kernel*
kernel-image-2.4.13-686: No available version
kernel-image-2.2.20-udma100-ext3/unstable upgradeable from 2.2.20-6 to 2.2.20-7
kernel-source-2.2.20/testing uptodate 2.2.20-5
kernel-image-2.4.5-686-smp: No available version
kernel-headers-2.2.20-udma100-ext3/unstable uptodate 2.2.20-7
kernel-package/unstable uptodate 8.004

auto-apt

auto-apt dient zur Installation von Programmen „bei Bedarf“. Dies kann beispielsweise bei der Softwareentwicklung oder auch schon beim einfachen übersetzen eines neuen Kernel sinnvoll sein. Mitunter fehlt auf frisch installierten Debian Systemen noch das Paket bin86 welches für das erzeugen eines Kernels benötigt wird. Um automatisch die fehlenden Pakete zu installieren wird einfach dem Aufruf von make das Kommando auto-apt vorangestellt: auto-apt make bzImage. Werden nun während des Durchlaufes fehlende Programme festgestellt, so ermittelt auto-apt zu welchem Paket diese gehören und installiert die fehlenden Pakete inklusive aller Abhängigkeiten.

apt-listchanges

In den meisten Debian Paketen sind sogenannte „changelog“ Dateien enthalten. In diesen dokumentiert der Betreuer eines Paketes die Änderungen zu vorhergehenden Version. Ein Blick in diese Dateien nach einem Update ist bei der Fehlersuche hilfreich wenn Probleme aufgetreten sind. Beispielsweise können in der neuen Version eines Paketes Dateien an einem anderen Ort liegen oder ein Dienst „horcht“ plötzlich auf einem anderen Port.

Da diese Änderungen erst nach der Installation bemerkt werden kann es zu unerwünschten Unterbrechungen im Betrieb kommen. Abhilfe schafft hier das Paket apt-listchanges. Dieses zeigt vor der Installation eines Paketes die Veränderungen die im Changelog dokumentiert sind an, der Administrator hat die Möglichkeit den Installationsvorgang an dieser Stelle abzubrechen.


fr@wasabi:~# apt-get install  libmng1

...

Reading changelogs... Done
libmng (1.0.3-4) unstable; urgency=low

  * Build with renamed version of lcms.

 -- Luis Arocha <data@debian.org>  Mon,  3 Jun 2002 18:27:19 +0100

apt-listchanges: Mailing changelogs to fr
Selecting previously deselected package liblcms1-dev.
(Reading database ... 115754 files and directories currently installed.)

...

apt-listchanges wird bei der Installation über Debconf konfiguriert, es kann dort eine E-Mailadresse angegeben werden an die die Changelog Informationen gesendet werden. Weiterhin kann bei der KOnfiguration gewählt werden ,ob nach dem Anzeigen des Changelogs die Installation fortgesetzt werden soll oder, (wie in diesem Beispiel, die Installation abgebrochen werden soll.

apt-config

MIttels apt-config läßt sich der Inhalt der Datei /etc/apt/config sowie die voreingestellten Werte anzeigen. Weiterhin lassen sich auch einzelne Werte mit diesem Tool setzen.

Die Optionen von apt-config lesen sich recht übersichtlich:


apt 0.5.4 for linux i386 compiled on Aug 19 2001 01:02:39
Usage: apt-config [options] command

apt-config is a simple tool to read the APT config file

Commands:
   shell - Shell mode
   dump - Show the configuration

Options:
  -h   This help text.
  -c=? Read this configuration file
  -o=? Set an arbitary configuration option, eg -o dir::cache=/tmp


apt-config sollte nicht als Kommando eingesetzt werden, es ist eigentlich als Systemkommando für die Verwendung innerhalb von Installations Skripten vorgesehen.

console-apt

Mit Console-Apt oder auch capt können Sie über eine textbasierte Oberfläche, ähnlich wie bei dselect, die Pakete auf Ihrem System verwalten.

Sie können capt auch als console-apt oder apt-find aufrufen (apt-find war der Vorgänger von capt). capt kann aber auch apt-get ersetzen. Hierzu wurden alle nötigen Kommandozeilenparameter, die von apt-get bekannt sind, auch in capt umgesetzt.

Mit diesen Parametern haben Sie also die Möglichkeit, alle Funktionen von apt-get nachzubilden. Doch capt kann natürlich noch mehr. Starten Sie capt ohne Parameter und Sie können nun capt über eine textbasierte Oberfläche bedienen. Die wichtigste Taste (zumindest am Anfang) ist das Fragezeichen (?), mit dem Sie eine Übersicht der Tastaturbelegung aufrufen können. Grundsätzlich ist die Bedienung von capt an die auch bei vielen anderen Programmen bekannten Konventionen angelehnt. Wenn Sie sich ein wenig mit more oder vi auskennen, werden Sie sich auch schnell in capt zurechtfinden.

Hier eine Übersicht der Tastaturbelegung von capt:

RETURN

Zeigt die Paketabhängigkeiten (dependencies) an.

d

Zeigt die Paketbeschreibung (description) an.

s

Ändert die Sortierung in der Anzeige. Sie können zwischen einer Sortierung nach Namen, nach Sektion und Namen, nach Archivgröße, nach installierter Größe und nach Status und Namen wählen.

/

Suchen nach Programmnamen.

r

Setzt die beim Suchen markierten Einträge zurück.

n

Springt zum nächsten Eintrag, der dem Suchbegriff entspricht.

+ oder SPACE

Markiert ein Paket zur Installation/Upgrade.

- oder TAB

Markiert ein Paket zum Löschen.

U

Aktualisiert alle älteren Pakete (Upgrade).

c oder BACKSPACE

Vervollständigt alle noch offenen Installations- oder Löschvorgänge, bei denen zuvor Probleme aufgetreten sind.

u

Aktualisiert die Liste der verfügbaren Pakete.

R

Liste den Cache für Apt neu ein.

j oder PFEIL-UNTEN

Bewegt den Auswahlbalken zum nächsten Eintrag.

k oder PFEIL-OBEN

Bewegt den Auswahlbalken zum vorherigen Eintrag.

^ oder g

Springt an den Anfang der Liste.

$ oder G

Springt ans Ende der Liste.

CTRL+F oder PAGE-UP

Springt eine Bildschirmlänge nach oben.

CTRL+B oder PAGE-DOWN

Springt eine Bildschirmlänge nach unten.

[

Scrollt in der Paketbeschreibung nach oben.

]

Scrollt in der Paketbeschreibung nach unten.

?

Ruft die Hilfeseiten auf.

q

Beendet das Programm beziehungsweise verläßt die Hilfeseite.

aptitude

aptitude verfolgt eine etwas andere Philosophie wie dselect. Es wird streng nach installierten, nicht installierten, virtuellen Paketen und Paketen mit einer neueren Version unterschieden. Innerhalb dieser vier Gruppen werden alle Pakete in einer Baumstruktur dargestellt, die auch die Verzeichnisstruktur innerhalb des Debian Archives darstellt, also beispielsweise: main/admin oder non-US/non-free.

Sie können einzelne Teile der Struktur aufklappen und in den einzelnen Bereichen Pakete auswählen.

Auch bei aptitude decken sich die meisten Tastaturbelegungen mit dselect beziehungsweise capt.

Die Bedeutung der verschiedenen Hintergrundfarben innerhalb des Programms:

schwarz

„Normalzustand“ eines Paketes. Beim nächsten Installationsdurchlauf wird dieses Paket nicht verändert. Fett geschriebene Pakete sind bereits installiert.

rot

Paket ist in einem unbrauchbaren Zustand oder kann nicht installiert werden.

blau

Paket wird mit einer neueren Programmversion aktualisiert.

weiß

Dieses Paket könnte aktualisiert werden, es wurde aber auf dem aktuellen Stand fixiert (hold).

grün

Paket wird installiert.

magenta

Paket wird gelöscht.

gnome-apt

Dieses Programm passt sich mit seiner GTK+-basierten Oberfläche perfekt in den aktuellen Debian GNOME Desktop ein. Auch mit gnome-apt können Sie alle wichtigen Aufgaben erfüllen, die bei der Paketverwaltung anfallen.

Sehen wir uns zunächst die Menüs der Reihe nach an.

„File“ – hier finden sich zwei Einträge zur Konfiguration des Programms sowie der Punkt „Quit“, welcher das Programm beendet. „General Preferences“ bietet die Möglichkeit, die Paketbeschreibung im Hauptfenster des Programms auszublenden („Show package details in main window“). Sie haben so mehr Platz, um die Paketliste mit den verschiedenen Kategorien anzeigen zu lassen. Weiterhin können Sie hier die Reihenfolge der Spalten in der Paketliste verändern.

Interessanter ist der zweite Eintrag „Sources“. Hier können Sie die Quellen angeben, von denen aus die Paketinformationen sowie die eigentlichen Debian-Pakete installiert werden sollen. An dieser Stelle können Sie zum ersten Mal Abschied vom Texteditor nehmen, um die Datei /etc/apt/sources.list zu bearbeiten.

Hinter der Schaltfläche „Add source“ verbirgt sich ein Assistent, der Sie durch die notwendigen Einstellungen führt. Ein Bild sagt wie so oft mehr als viele Worte, hier ein Beispiel für die Konfiguration einer neuen Installationsquelle:

Im ersten Dialog können Sie die gewünschte Version von Debian GNU/Linux auswählen. Normalerweise wird dies „stable“ für die stabile Version sein. Wenn Sie mit der Entwicklerversion experimentieren wollen, wählen Sie „unstable“, und wenn die Ihnen vorliegenden Pakete in kein Schema passen, steht Ihnen auch noch „other“ zur Auswahl.

Geben Sie hier nun die Adresse an, unter der die Pakete zu finden sind. Dies bezieht sich auf den Punkt im Verzeichnisbaum, an dem sich das Verzeichnis „dists“ befindet. Sie können auch einen bestehenden Eintrag aus der Liste wählen.

Wählen Sie hier nun eine oder mehrere Optionen aus. Sie bestimmen hier, aus welchen Bereichen der Distribution Pakete installiert werden sollen.

Die neue Quelle erscheint danach in der Liste und kann über „Remove source“ wieder entfernt werden oder über „Edit source“ nachträglich verändert werden. Allein diese Funktion wird einigen Nutzern so gut gefallen, daß Sie daraufhin nicht mehr auf gnome-apt verzichten wollen...

Hinter dem zweiten Menüpunkt „Actions“ finden Sie die eigentlichen Funktionen, die die notwendigen Aktionen auslösen, die Sie in der Paketliste eingestellt haben. „Update“ liest die Paketdateien neu ein und aktualisiert die Übersicht. Falls die Dateien nicht auf einem lokalen Medium vorliegen (CD-ROM oder Festplatte), werden diese per ftp oder http-Protokoll vom angegebenen Server geholt. „Complete run“ installiert die ausgewählten Pakete beziehungsweise entfernt die nicht mehr gewünschten Pakete aus dem System. „Mark upgrades“ entspricht einem apt-get upgrade und markiert alle neuen Pakete, so daß diese beim nächsten Anwählen von „Complete run“ aktualisiert werden. „Mark smart upgrade“ hingegen dient zur Aktualisierung eines Debian-Systems auf die nächste Version. Dies entspricht einem apt-get dist-upgrade.

„Package“ – hier ist der wichtigste Menüpunkt sicherlich „Search“. Hierunter verbirgt sich ein recht mächtiges Werkzeug, um aus der umfangreichen Liste einzelne Pakete zu finden.

Beachten Sie, daß hierbei nicht nur nach Namen von Paketen gesucht wird, sondern auch die Paketbeschreibungen sowie alle anderen verfügbaren Informationen durchsucht werden. Unix-Kundige erreichen sowas auch mit einem geschickten grep auf die passenden Dateien, aber hier steht Ihnen diese Funktion direkt zur Verfügung.

Die weiteren Einträge im Menü „Package“ ändern den Status eines Paketes, dies läßt sich aber auch mit einem Mausklick in der Paketliste in der passenden Spalte erreichen.

Das nächste Menü – „View“ – erlaubt Ihnen, auf vielfältige Weise die Anzeige der Paketliste zu verändern. Der erste Eintrag „Details“ entspricht der Anzeige der Paketinformationen im Hauptfenster und wird nur benötigt, falls Sie dieses in den Einstellungen für das Hauptfenster ausgeschaltet haben. Hinter dem Menüpunkt „Columns“ können Sie wählen, welche Spalten im Hauptfenster angezeigt werden sollen.

Am spannendsten sind die letzten beiden Einträge: hier können Sie sehr detailliert beeinflussen, in welcher Reihenfolge die Pakete in der Paketliste angezeigt werden sollen. Mittels „Group“ beeinflussen Sie die Anzeige der gesamten Pakete. Sie können hier zwischen einer alphabetischen Sortierung, nach Sektion, nach Priorität oder nach Status wählen. Die Sortierung nach Sektion wird Ihnen von dselect her bekannt vorkommen. Dabei werden die Pakete nach ihrer Zugehörigkeit, zum Beispiel „admin“ oder „x11“, angezeigt. Eine Sortierung nach Status wird Ihnen im allgemeinen lediglich die installierten und die noch nicht installierten Pakete anzeigen, also zwei Gruppen. Weiterhin lassen sich die Pakete nach Priorität anzeigen, hierbei wird unterschieden in „Extra“, „Important“, „No version available“, „Optional“, „Required“ sowie „Standard“

Der Menüpunkt „Order“ dient der Sortierung innerhalb der eben beschriebenen Gruppen, auch hier können Sie wieder zwischen den oben genannten vier Varianten wählen.

Die Einträge im Menü „Advanced“ sind momentan noch ohne Funktion, hier können Sie später Paketlisten im- und exportieren. Im Menü „Help“ verbergen sich allgemeine Informationen zu gnome-apt (Eintrag „About...“) sowie eine Übersicht über die Bedeutung der verwendeten Symbole:

Sie werden gnome-apt normalerweise zur Installation neuer Pakete auf Ihrem System einsetzen. Wählen Sie hierzu im Menü „Actions“ den Eintrag „Update“, um die Paketinformationen zu aktualisieren. Danach wählen Sie die gewünschten Pakete aus, hier am Beispiel von 2utf gezeigt.

Sie können natürlich noch weitere Pakete auswählen, dies soll lediglich ein einfaches Beispiel sein. Wenn Sie lediglich dieses eine neue Paket installieren möchten, wählen Sie nun aus dem Menü „Action“ den Eintrag „Complete run“ aus. Sie bekommen noch einmal angezeigt, welche Aktionen nun durchgeführt werden, mit einem Mausklick auf „OK“ wird das gewünschte Paket installiert.

Wenn Sie auch die Pakete, die seit der letzten Installation auf dem Server aktualisiert wurden, auf Ihrem System aktualisieren möchten, wählen Sie vor der Installation aus dem Menü „Action“ noch den Eintrag „Mark upgrades“ aus.