[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ weiter ]


Die Debian GNU/Linux-FAQ
Kapitel 7 - Grundlagen des Debian-Paketverwaltungssystems


7.1 Was ist ein Debian-Paket?

Pakete beinhalten im Allgemeinen alle notwendigen Dateien, um eine Sammlung in Beziehung stehender Kommandos und Fähigkeiten zu implementieren. Es gibt zwei Arten von Debian-Paketen:

Für die Installation von Software benutzt das System die von den Paketbetreuern sorgfältig angegebenen Abhängigkeiten. Diese Abhängigkeiten sind in der control-Datei, die zu jedem Paket gehört, dokumentiert. Zum Beispiel beinhaltet das Paket des GNU C-Compilers (gcc) Abhängigkeiten (»depends«) zu dem Paket binutils, welches den Linker und den Assembler enthält. Wenn ein Benutzer versucht gcc zu installieren ohne zuerst binutils installiert zu haben, gibt das Paketverwaltungssystem (dpkg) die Fehlernachricht aus, dass es das Paket binutils benötige und stoppt die Installation von gcc. (Dennoch kann dieser Prüfmechanismus vom Benutzer abgestellt werden, siehe dpkg(8).) Siehe Was ist damit gemeint, ein Paket Depends, Recommends, Suggests, Conflicts, Replaces oder Provides ein anderes Paket?, Abschnitt 7.9 weiter unten.

Debian-Paketierungsprogramme können benutzt werden, um:


7.2 Was ist das Format eines binären Debian-Pakets?

Ein Debian-Paket oder eine Debian-Archivdatei beinhaltet ausführbare Dateien, Bibliotheken und Dokumentationen, die zu einem Programm oder einer Menge verwandter Programme gehören. Normalerweise hat eine Debian-Archivdatei die Dateiendung .deb.

Die Interna des binären Debian-Paketformats sind in der deb(5) Handbuchseite beschrieben. Dieses interne Format kann sich (zwischen zwei Debian GNU/Linux-Hauptreleases) ändern, benutzen Sie daher bitte immer dpkg-deb(1), um .deb-Dateien zu bearbeiten.


7.3 Warum sind Debian-Paketdateinamen so lang?

Die Debian-Binärpaketdateien gehorchen alle der folgenden Konvention: <foo>_<VersionsNummer>-<DebianRevisionsNummer>.deb

Bitte beachten Sie, dass foo für den Paketnamen steht. Sie können den Paketnamen der Debian-Archivdatei (.deb-Datei) auf eine der folgenden Arten herausfinden:

Die VVV-Komponente ist die Versionsnummer, die vom Original-Entwickler festgelegt worden ist. Hierfür sind keine Standards festgelegt. Die Versionsnummer kann verschiedene Formate, wie »19990513« und »1.3.8pre1«, gleichermaßen enthalten.

Die RRR-Komponente ist die Debian-Revisionsnummer, die von einem Debian-Entwickler (oder einem individuellen Benutzer, der sich entschieden hat das Paket selber zu bauen) festgelegt wurde. Diese Nummer entspricht dem Stand des Debian-Paketes. Eine neue Revisionsnummer zeigt manchmal Änderungen im Debian-Makefile (debian/rules), der Debian-Kontroll-Datei (debian/control), den Installations- oder Entfernungs-Skripten (debian/p*) oder in den Konfigurationsdateien die mit diesem Paket benutzt werden.


7.4 Was ist eine Debian-Kontroll-Datei?

Besonderheiten, die Debian-Kontroll-Dateien betreffend, können Sie im Debian-Richtlinien-Handbuch, Abschnitt 5, Welche andere Dokumentation gibt es auf einem und für ein Debian-System?, Abschnitt 12.1 sehen.

Folgend ist ein Auszug vom Debian-Paket »hello« zu sehen:

     Package: hello
     Priority: optional
     Section: devel
     Installed-Size: 45
     Maintainer: Adam Heath <doogie@debian.org>
     Architecture: i386
     Version: 1.3-16
     Depends: libc6 (>= 2.1)
     Description: The classic greeting, and a good example
      The GNU hello program produces a familiar, friendly greeting.  It
      allows nonprogrammers to use a classic computer science tool which
      would otherwise be unavailable to them.
      .
      Seriously, though: this is an example of how to do a Debian package.
      It is the Debian version of the GNU Project's `hello world' program
      (which is itself an example for the GNU Project).

Das »Package«-Feld zeigt den Paketnamen an. Dieser Name wird für die Nutzung des Paketes mit den Paketverwaltungswerkzeugen benutzt. Es kann vorkommen, dass das »Package«-Feld mit dem ersten Teil des Debian-Paketarchivdateinamen übereinstimmt, dies muss aber nicht so sein.

Das »Version«-Feld gibt beides an, an erster Stelle die Original-Entwickler-Versionsnummer und im zweiten Teil die Revisionsnummer des Debian-Paketes. Dieses Vorgehen wird unter Warum sind Debian-Paketdateinamen so lang?, Abschnitt 7.3 beschrieben.

Das »Architecture«-Feld gibt den Prozessor-Typ an, für den das Binärpaket kompiliert worden ist.

Das »Depends«-Feld enthält eine Liste von Paketen, die benötigt werden um dieses Paket erfolgreich installieren zu können.

Die »Installed-Size« (installierte Größe) gibt den geschätzten Festplattenverbrauch nach der Installation des Paketes an. Dieser Wert wird von den Oberflächen benutzt um zu prüfen, ob noch genug Festplattenplatz für die Installation vorhanden ist.

Die »Section«-Zeile gibt an, in welchem Bereich des Debian-FTP-Archives das Paket zu finden ist. Dies ist der Name des Unterverzeichnisses (mit einem der Hauptverzeichnisse, siehe Was haben all die Verzeichnisse in den Debian-FTP-Archiven zu bedeuten?, Abschnitt 6.7) in dem das Paket zu gespeichert ist.

Die »Priority«-Zeile zeigt, wie wichtig dieses Paket für die Installation ist. Hiermit kann halb intelligente Software wie "dselect" oder "console-apt" den Paketen Gruppen (z.B. der Gruppe der optionalen Software) zuordnen, siehe Was ist ein Essential-, Required-, Important-, Standard-, Optional- oder Extra-Paket?, Abschnitt 7.7.

Das »Maintainer«-Feld enthält die E-Mail-Adresse der Person, die momentan für die Paketbetreuung zuständig ist.

Das »Description«-Feld gibt ein Einweisung über die Funktionen des Paketes.

Für mehr Informationen über alle möglichen Felder, die ein Paket haben kann, sehen Sie sich bitte das Debian-Richtlinien-Handbuch, Abschnitt 5., Welche andere Dokumentation gibt es auf einem und für ein Debian-System?, Abschnitt 12.1 »Kontroll-Dateien und ihre Felder« an.


7.5 Was ist ein Debian »Conffile«?

»Conffiles« sind Listen von Konfigurationsdateien (meistens unter /etc zu finden). Diese Dateien werden vom Paketverwaltungswerkzeug bei einer Paketaktualisierung nicht überschrieben. Dies stellt sicher, dass eigene Einstellungen, die in diesen Dateien gemacht wurden, behalten werden. Dies ist notwendig um die Funktion des »Vor-Ort«-Austausches von Paketen auf laufenden Systemen zu ermöglichen.

Um herauszufinden, welche Dateien bei einem Update erhalten bleiben, benutzen Sie:

     dpkg --status package

und schauen unter »Conffiles:« nach.


7.6 Was sind die Debian »preinst«-, »postinst«-, »prerm«- und »postrm«-Skripte?

Diese Dateien sind ausführbare Skripte die automatisch vor bzw. nach einer Paketinstallation laufen. Genau wie die control-Datei sind diese Dateien Teil der Debian-Archivdatei.

Die individuellen Dateien sind:

preinst

Diese Skript wird ausgeführt, bevor das Paket aus der Debian-Archivdatei (».deb«-Datei) entpackt wird. Viele »preinst«-Skripte stoppen Dienste, die während bzw. nach der Installation aktualisiert werden. Nach der erfolgreichen Installation folgt die Ausführung des »postinst«-Skriptes.

postinst

Diese Skript stellt normalerweise die benötigte Konfiguration des foo-Paketes fertig, nachdem foo aus seiner Debian-Archivdatei (».deb«-Datei) entpackt worden ist. Oft fragen »postinst«-Skripte den Benutzer nach Eingaben und/oder warnen ihn, dass, wenn er die Standardwerte akzeptiert, er daran denken muss, das Paket neu zu konfigurieren, wenn es die Situation erfordert. Viele »postinst«-Skripte führen nach dem Installieren/Updaten, die für das Starten bzw. Neustarten der Dienste benötigten Kommandos aus.

prerm

Dieses Skript stoppt üblicherweise alle Dienste die mit dem Paket verknüpft sind. Es wird ausgeführt bevor alle Dateien des Paketes gelöscht werden.

postrm

Dieses Skript ändert Links die mit foo zu tun haben und/oder löscht Dateien die vom Paket angelegt worden sind. (Siehe: Was ist ein virtuelles Paket?, Abschnitt 7.8.)

Momentan können alle Steuerdateien in /var/lib/dpkg/info gefunden werden. Die relevanten Dateien für das Paket foo beginnen mit »foo« und haben die Dateierweiterungen »preinst«, »postinst«, usw. Die Datei foo.list enthält eine Liste der Dateien, die mit dem Paket foo installiert worden sind. (Beachten Sie, dass die Pfade der Dateien dpkg-Interna sind. Sie sollten nicht darauf aufbauen.)


7.7 Was ist ein Essential-, Required-, Important-, Standard-, Optional- oder Extra-Paket?

Jedem Debian-Paket wurde von den Distributionsbetreuern eine Priorität als Hilfsmittel für das Paketverwaltungssystem zugeordnet. Die Prioritäten sind:

Wenn Sie eine Standard-Debian-Installation durchführen, werden alle Pakete mit der Priorität Standard oder höher in Ihrem System installiert. Wenn Sie vordefinierte Prozesse wählen, bekommen Sie auch die Pakete mit einer geringeren Priorität.

Zusätzlich werden einige Pakete als Essential markiert. Da diese Pakete für die Grundfunktionalität des Systems absolut notwendig sind, lehnen es die Paketverwaltungswerkzeuge es ab, die zu entfernen.


7.8 Was ist ein virtuelles Paket?

Ein virtuelles Paket ist ein generischer Name, der auf eine Gruppe von Paketen zutrifft, die ähnliche grundlegende Funktionen bieten. Zum Beispiel sind tin und trn beides Nachrichtenleser (News-Reader), folglich werden beide Programme die Abhängigkeit erfüllen, die ein Programm hat, das einen Nachrichtenleser braucht, um auf einem System richtig zu funktionieren. Beide Pakete erfüllen die Abhängigkeit des virtuellen Paketes namens news-reader.

Ebenso bieten smail und sendmail beide die Funktionalität eines Mail-Transport-Agenten. Es wird also gesagt, dass beide Programme das virtuelle Paket mail-transport-agent anbieten. Wenn eines der Programme installiert ist, dann wird die Installation jedes Paketes, das von einem mail-transport-agent abhängig ist, durch die Existenz des virtuellen Paketes ermöglicht.

Debian bietet einen Mechanismus, der es ermöglicht, dass wenn mehr als ein Paket mit dem selben virtuellen Paket installiert wird, der Systemadministrator ein Paket als das bevorzugte Paket einstellen kann. Das relevante Kommando ist update-alternatives und wird später in Einige Benutzer mögen mawk, andere gawk; einige mögen vim, andere elvis; einige trn, wieder andere tin; wie unterstützt Debian die Vielfalt?, Abschnitt 11.10 näher erklärt.


7.9 Was ist damit gemeint, ein Paket Depends, Recommends, Suggests, Conflicts, Replaces oder Provides ein anderes Paket?

Das Debian-Paketverwaltungssystem hat eine Reihe von »Paket-Abhängigkeiten«, welche entworfen wurden, um anzuzeigen (in einer einzigen Markierung), wie ein Programm A mit einem existierenden Programm B auf einem gegeben System unabhängig zusammenarbeiten:

Detailliertere Informationen über die Nutzung jeder dieser Bezeichnungen können Sie im Richtlinien-Handbuch finden.


7.10 Was bedeutet Pre-Depends (Vor-Abhängigkeit)?

»Pre-Depends« ist eine spezielle Abhängigkeit. Im Fall der meisten Pakete, entpackt dpkg die Archiv-Datei (z.B., seine .deb Datei) unabhängig davon, ob die Dateien von denen es Abhängt auf dem System existieren oder nicht. Stark vereinfacht bedeutet entpacken, das dpkg die Dateien aus der Archiv-Datei auf Ihrem Dateisystem installiert und an die entsprechende Stelle gepackt. Wenn solche Pakete von der Existenz einiger anderer Pakete abhängen, lehnt dpkg es ab die Paketinstallation abzuschließen (durch die Ausführung seiner Konfiguration), bevor die anderen Pakete installiert sind.

Für einige Pakete lehnt dpkg sogar das entpacken ab bis bestimmte Abhängigkeiten erfüllt sind. Solche Pakete werden »Vor-Abhängig« von anderen Paketen genannt. Das Debian-Projekt bietet diesen Mechanismus um das sichere Upgraden des Systems vom a.out- zum ELF-Format zu ermöglichen, als die Reihenfolge in der die Pakete ausgepackt wurden kritisch war. Es gibt andere große Upgrade-Situationen bei denen diese Methode hilfreich ist z.B. die Pakete mit der »required«-Priorität und ihre LibC abhängigkeit.

Genau wie zuvor können weiterführende Informationen dem Richtlinien-Handbuch entnommen werden.


7.11 Was bedeutet unknown, install, remove purge und hold im Paket-Status?

Diese »Wunsch«-Makierungsflaggen erklären was ein Benutzer mit einem Paket tun wollte (wie entweder durch die Tätigkeit des Benutzers in der »Select (wählen)«-Sektion von dselect oder auch durch die direkte Anfrage des Benutzers mit dpkg).

Ihre Bedeutungen sind:


7.12 Wie stelle ich ein Paket auf »hold (halten)«?

Es gibt drei Wege die es ermöglichen Pakete zurückzuhalten. Mit dpkg, aptitude oder mit dselect.

Mit dpkg müssen Sie lediglich die Liste der Paketwahl über:

     dpkg --get-selections \* > selections.txt

exportieren. Dann Modifizieren Sie die Ergebnis-Datei selections.txt, ändern Sie die Zeile die das Paket beinhaltet, welches Sie zurückhalten wollen, z.B. libc6, von hier:

     libc6                                             install

zu diesem:

     libc6                                             hold

. Speichern Sie die Datei und laden Sie diese in die »dpkg«-Datenbank mit:

     dpkg --set-selections < selections.txt

zurück.

Mit aptitude können Sie ein Paket über

     aptitude hold Paket_Name

zurückhalten und über

     aptitude unhold Paket_Name

können Sie das zurückhalten wieder abstellen.

Bei dselect müssen Sie [S]elect Bildschirm auswählen, das gewünschte Paket raus-suchen und dann müssen Sie nur noch die '=' (oder 'H') Taste drücken. Die Änderungen werden übernommen wenn Sie den [S]elect Bildschirm verlassen.


7.13 Wie installiere ich ein Quelltext-Paket?

Debian Quelltext-Pakete können momentan nicht »installiert« werden. Sie können lediglich in jedes Verzeichnis entpackt werden in dem Sie die Binär-Pakete Kompilieren möchten

Quelltext-Pakete werden meistens auf den selben Spiegeln angeboten, auf denen auch die Binär-Pakete gefunden werden können. Wenn Sie Ihr APT sources.list(5) um die benötigten »deb-src«-Zeilen erweitern, sind Sie in der Lage jedes Quelltext-Paket einfach Herunterzuladen mittels:

     apt-get source foo

Um Ihnen beim Bauen der Quelltext-Pakete zu helfen, bieten die Debian Quelltext-Pakete den sogenannten »build-dependencies (Bau-Abhängigkeiten)«-Mechanismus. Das Bedeutet, das die Quelltext-Paket-Betreuer eine Liste von anderen Paketen pflegen, die zum Bauen des Paketes benötigt werden. Um zu sehen wozu dies nützlich ist, probieren Sie einmal

     apt-get build-dep foo

bevor Sie die Quelltexte kompilieren.


7.14 Wie baue ich ein Binär-Paket aus einem Quelltext-Paket?

Sie brauchen alle foo_*.dsc, foo_*.tar.gz und foo_*.diff.gz um die Quelltexte zu kompilieren (beachten Sie Bitte, das einige Pakete keinen *.diff.gz besitzen weil Sie Nativ sind).

Sobald Sie sie haben (Wie installiere ich ein Quelltext-Paket?, Abschnitt 7.13), sofern Sie das dpkg-dev-Paket installiert haben, sollte das folgende Kommando:

     dpkg-source -x foo_version-revision.dsc

in ein Verzeichnis namens foo-version entpacken.

Wenn Sie das Paket nur kompilieren wollen, müssen Sie mit cd in das foo-versions Verzeichnis und das Kommando

     dpkg-buildpackage -rfakeroot -b

zum bauen des Paketes ausführen (beachten Sie das dazu noch das fakeroot-Paket benötigt wird). Danach können Sie mit

     dpkg -i ../foo_version-revision_arch.deb

das neu gebaute Paket installieren.


7.15 Wie kann ich selbst Debian-Pakete erstellen?

Für eine detailliertere Beschreibung zu diesem Thema lesen Sie bitte den Neue-Entwickler-Guide, zu finden im maint-guide-Paket oder auf http://www.debian.org/doc/devel-manuals#maint-guide.


[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ weiter ]


Die Debian GNU/Linux-FAQ

Version 5.0ubuntu1, 20 October 2011

Die Autoren der Debian-FAQ