[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ weiter ]
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:
Binärpakete, welche ausführbare Dateien, Konfigurationsdateien,
man/info-Seiten, Copyright-Informationen und andere Dokumentation beinhalten.
Diese Pakete sind in einem speziellen Debian-Archivformat verteilt (siehe Was ist das Format eines binären Debian-Pakets?, Abschnitt
7.2). Sie zeichnen sich für gewöhnlich durch eine ».deb«-Dateierweiterung
aus. Binärpakete können mittels des Debian-Werkzeugs dpkg
entpackt werden. Mehr Details finden Sie in der Handbuchseite.
Quellpakete, welche aus einer .dsc-Datei bestehen, die
das Quellpaket beschreibt (inklusive der Namen der folgenden Dateien), einer
.orig.tar.gz-Datei, welche die originalen, unveränderten Quellen
in einem gzip-komprimierten tar-Format enthält und üblicherweise einer
.diff.gz-Datei, die Debian-spezifische Änderungen an den
Original-Quellen enthält. Das Dienstprogramm dpkg-source
packt
und entpackt Debian-Quellpakete. Mehr Details sind in der Handbuchseite zu
finden.
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:
Pakete oder Paketteile zu manipulieren und zu verwalten,
dem Benutzer zu helfen Pakete aufzuteilen, die auf Medien mit limitierter Größe übermittelt werden sollen, z.B. Disketten,
den Entwicklern beim Erzeugen von Paketen zu helfen und
Benutzern die Installation von Paketen zu ermöglichen, die sich z.B. auf einem FTP-Server befinden.
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.
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:
Untersuchen Sie die Packages
-Datei, in dem Ordner auf einer
Debian-FTP-Archiv-Seite. Diese Datei enthält für jedes Paket eine
»Beschreibungszeile«. Der erste Abschnitt jeder Zeile enthält den formalen
Paketnamen.
Benutzen Sie den folgenden Befehl dpkg --info foo_VVV-RRR.deb (wobei VVV und RRR durch die Versions- bzw. Revisions-Nummer des Paketes ersetzt werden muss). Dies gibt unter anderem den formalen Paketnamen beim Auspacken des Archives aus.
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.
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.
»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.
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:
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.
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.
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.
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.)
Jedem Debian-Paket wurde von den Distributionsbetreuern eine Priorität als Hilfsmittel für das Paketverwaltungssystem zugeordnet. Die Prioritäten sind:
Required: Pakete die für das korrekte Funktionieren der Systems benötigt werden.
Dieses schließt alle Werkzeuge mit ein, die notwendig sind, um Systemdefekte zu reparieren. Sie dürfen diese Pakete nicht entfernen, ansonsten kann es passieren, dass Ihr System zusammenbricht und Sie sogar außerstande sind, mittels dpkg Sachen zurückzuholen. Systeme, die nur die Required-Pakete haben, sind vermutlich unbrauchbar, aber sie bieten genug Funktionalität, um es dem Systemadministrator zu ermöglichen, mehr Programme zu installieren.
Important-Pakete sollten auf jedem Unix-ähnlichen System zu finden sein.
Andere Pakete ohne die das System unbrauchbar ist, finden Sie hier. Das beinhaltet nicht Emacs, X11, TeX oder eine andere große Anwendung. Dieses Pakete stellen lediglich die Basisinfrastruktur.
Standard-Pakete sind Standard auf jedem Linux-System, einschließlich eines recht kleinen aber nicht zu begrenzten Text-Modus-Systems.
Dies wird von uns installiert, wenn der Benutzer nichts anderes ausgewählt hat. Es beinhaltet keine großen Programme, aber einige Entwicklungsprogramme, wie der GNU C- und der C++-Compiler (gcc, g++) GNU make, genauso wie der Python-Interpreter und einige Server-Programme wie OpenSSH, der BSD-Drucker-Dienst (lpr) und der RPC-Portmapper (portmap).
Optional-Pakete beinhalten alles das, was Sie möglicherweise installieren wollen oder gerne würden, wenn Sie keine speziellen Anforderungen haben.
Dies trifft auf X11, eine komplette TeX-Distribution und viele andere Programme zu.
Extra-Pakete die in Konflikt mit höher priorisierten Paketen stehen, sind nur für jemanden interessant, der schon weiß was sie sind, oder für jemanden der spezielle Anforderungen hat, die es unverzichtbar für »Optional« machen.
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.
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.
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:
Paket A depends (hängt ab) von Paket B, wenn B unbedingt installiert sein muss damit A läuft. In manchen Fällen, hängt A nicht nur von B ab, aber von einer Version von B. In diesem Fall ist die Versionsabhängigkeit normalerweise die untere Grenze, so dass As Abhängigkeit von jeder Version von B größer ist als die Abhängigkeit von einer speziellen Version.
Paket A recommends (empfiehlt) Paket B, wenn der Paketverwalter der Meinung ist, dass die meisten Benutzer A nicht ohne die Funktionalität von B haben wollen.
Paket A suggests (schlägt) Paket B vor, wenn B Dateien beinhaltet, die die Funktionalität von A verbessern (und manchmal auch erhöhen).
Paket A conflicts (steht in Konflikt) mit Paket B wenn A nicht funktioniert, solange B auf dem System installiert ist. Sehr oft sind Konflikte Fälle in denen A Dateien beinhaltet, die ein Verbesserung der aus B stammenden sind. »Konflikte« sind oft mit einem »Austausch« verbunden.
Paket A replaces (ersetzt) Paket B, wenn Dateien die von B installiert wurden von Dateien aus A, entfernt und (in manchen Fällen) überschrieben werden.
Paket A provides (stellt zur Verfügung) Paket B, wenn alle Dateien und Funktionalitäten von B mit A verbunden wurden. Dieser Mechanismus ermöglicht es Benutzern mit einem Begrenzten Festplattenplatz nur den Teil B von Paket A speichern zu müssen.
Detailliertere Informationen über die Nutzung jeder dieser Bezeichnungen können Sie im Richtlinien-Handbuch finden.
»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.
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:
unknown - der Benutzer hat nie mitgeteilt ob der das Paket wünscht
install - der Benutzer wünscht das Paket installiert oder Upgedatet
remove - der Benutzer wünscht das Paket entfernt, aber möchte jede Existierende Konfigurationsdatei behalten.
purge - der Benutzer wünscht das Paket entfernt, inklusive aller Konfigurations-Dateien.
hold - der Benutzer wünscht keine Verarbeitung des Paketes, d.h. der Benutzer möchte die Aktuelle Version des Paketes behaltend wie auch immer die ist.
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.
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.
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.
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.0.2, 2 June 2013