Ich habe mal das »Debian Repository HOWTO« Übersetzt würde mich über Kommentare freuen! Und das ganze sollte dann wenn möglich auch ins CVS. MFG Claas
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//DE" "http://docbook.org/xml/4.2/docbookx.dtd"> <article lang="de"> <articleinfo> <title>Debian Depot HOWTO</title> <author> <firstname>Aaron</firstname> <surname>Isotton</surname> <affiliation> <address><email>aaron@isotton.com</email></address> </affiliation> </author> <othercredit role="traduction" class="translator"> <firstname>Claas Felix</firstname> <surname>Beyersdorf</surname> <affiliation> <address><email>claasfelix@web.de</email></address> </affiliation> </othercredit> <abstract> <para>Diese Dokument soll Ihnen vermittelt was ein Depot ist und wie Sie selbst ein eigenes aufbauen können. </para> </abstract> </articleinfo> <section id="intro"> <title>Einleitung</title> <para>Ein Debian Depot ist eine Zusammenstellung von Debian-Paketen die in einer speziellen Ordnerstruktur organisiert sind. Diese Ordner-Struktur enthält auch einige zusätzliche Dateien, welche Indices und Checksummen der Pakete beinhalten. Wenn ein Benutzer ein Depot zu seiner <filename>/etc/apt/sources.list</filename> Datei hinzufügt, kann er auf einfache Weise die verfügbaren Pakete anschauen und installieren genau wie bei den Debian Paketen.</para> <para>Ein Depot kann Online und Offline (z.B. auf einer CD-ROM) sein. Der erste Fall ist allerdings häufiger.</para> <para>Dieses Dokument erklärt wie Debian-Depots arbeiten, wie erstellt werden und wie Sie sie richtig zur <filename>sources.list</filename> hinzufügen.</para> <para>Das Original Dokument können Sie unter <ulink url="http://www.isotton.com/debian/docs/repository-howto/"/> finden.</para> <section id="copyright"> <title>Copyright und Lizenz</title> <para>This document, <emphasis>Debian Repository HOWTO</emphasis>, is copyrighted (c) 2002-2003 by <emphasis>Aaron Isotton</emphasis>. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.</para> </section> <!-- copyright --> <section id="feedback"> <title>Feedback</title> <para> Feedback zu diesem Dokument ist sehr Willkommen. Bitte, senden Sie ihre Ergänzungen, Kommentare und Kritiken an folgende E-Mail Adresse: <email>aaron@isotton.com</email> (in Englisch). </para> <para> Feedback zur Übersetzung schicken Sie bitte an: <email>debian-l10n-german@lists.debian.org</email> </para> </section> <!-- feedback --> </section> <!-- intro --> <section id="terms"> <title>Begriffe die in diesem Dokument verwendet werden.</title> <variablelist> <varlistentry> <term>Distributionen</term> <listitem><para>Die drei Debian Distributionen: »<emphasis>stable</emphasis>«, »<emphasis>testing</emphasis>« und »<emphasis>unstable</emphasis>«.</para> </listitem> </varlistentry> <varlistentry> <term>Index-Dateien</term> <listitem><para>Die »<filename>Packages.gz</filename>«- und »<filename>Sources.gz</filename>«-Datei.</para> </listitem> </varlistentry> </variablelist> </section> <section id="how-it-works"> <title>Wie Depots arbeiten</title> <para>Ein Depot besteht eigentlich nur aus einem Verzeichnis mit einigen »DEB«-Paketen und zwei speziellen Dateien: <filename>Packages.gz</filename> für die »Binär«-Pakete und <filename>Sources.gz</filename> für die »Quell«-Pakete.</para> <para>Wenn Ihr Depot in der »<filename>sources.list</filename>«-Datei (dazu später mehr) korrekt eingetragen wurde, wird <command>apt-get</command> den »<filename>Packages.gz</filename>«-Index wenn die »Binär«-Pakete (mit dem »<literal>deb</literal>«-Schlüsselwort) und »<filename>Sources.gz</filename>« wenn die »Quell«-Pakete (mit dem »<literal>deb-src</literal>«-Schlüsselwort) aufgelistet werden.</para> <para>»<filename>Packages.gz</filename>« enthält den Namen, die Version, die Größe, die Kurz- und Lang-Beschreibung und die abhängigkeiten eines jeden Paketes und einige zusätzliche Information welche für uns nicht von Interesse sind. Alle diese Informationen werden aufgelistet (und benutzt von) den Debian-Paket-Verwaltern wie <command>dselect</command> oder <command>aptitude</command>.</para> <para>»<filename>Sources.gz</filename>« enthält den Namen, die Version und die »Bau-Abhängigkeiten« (die das Paket zum bauen benötigt) von jedem Paket (und auch einige Informationen die wieder nicht von Interesse für uns sind); diese Informationen werden von <command>apt-get source</command> und vergleichbaren Werkzeugen verwendet.</para> <para>Es gibt noch eine optionale »<filename>Release</filename>«-Datei, welche einige Informationen über Ihr Depot enthält; diese wird für das so genannte »<emphasis>Pinning (Anheften)</emphasis>« benutzt, eiInteressanterer Trick auf den ich in diesem Dokument nicht näher eingehen möchte. Sie können mehr über Anheften im <ulink url="http://www.debian.org/doc/manuals/apt-howto/">APT HOWTO</ulink> nachlesen.</para> <para>Sobald Sie ihr Depot aufgebaut haben, können Sie alle ihre Pakete zusammen mit denen von Debian auflisten und installieren. Wenn Sie ein Paket im Depot aktualisieren, wird es beim Benutzer aktualisiert, wenn dieser das Kommando <command>apt-get upgrade</command> ausführt; Und für jeden Benutzer ist es leicht sich eine kurze Beschreibung und andere wichtige Informationen über Ihre Pakete anzeigen zu lassen.</para> <para>Aber es gibt noch mehr. Wenn richtig erstellt, kann das Depot verschiedene Pakete für jede unterstützte Distribution und jede der (zur Zeit Elf) unterstützten Architekturen bereitstellen. »<literal>apt</literal>« wird automatisch das für den Rechner des Benutzers richtige Paket hohlen, ohne ihn über die anderen Architekturen zu informieren. Zusätzlich ist es Ihnen erlaubt Ihre Pakete Gruppen zuzuordnen, genau wie die »Debian«-Pakete in »<literal>main</literal>«, »<literal>non-free</literal>« und »<literal>contrib</literal>« unterteilt sind. Wenn Ihre Software Plattformübergreifend ist, werden Sie Paket-Depots lieben.</para> </section> <!-- how-it-works --> <section id="setting-up"> <title>Wie Sie ein Depot aufbauen</title> <para>Es gibt zwei Arten von Depots: Komplexere wo der Benutzer nur den Basis-Pfad zum Depot, die Distribution und die Komponenten die er möchte angeben muss (apt hohlt automatisch die für die richtige Architektur gedachten Pakete, sovern verfügbar). Und einfacherer bei dennen der Benutzer einen exakten Pfad angeben muss (und apt braucht keine Magie um herrauszufinden welches das richtige Paket ist). Die Ersten sind ein wenig schwerer aufzusetzen aber leichter zu benutzen und sollten immer für komplexe und/oder Platformübergreifende Depots benutzt werden. Die Zweiten sind leichter aufzusetzen, aber sollten nur für kleine oder »einzel-Architektur«-Depots benutzt werden.</para> <para>Obwohl das nicht wirklich richtig ist, nenne ich die Ersten »<emphasis>Automatische-Depots</emphasis>« und die Zweiten »<emphasis>Triviale-Depots</emphasis>«.</para> <section> <title>Automatische-Depots</title> <para>Die Verzeichnis-Struktur von einem Automatischen-Depot mit den Standrad Debian-Architekturen und Komponenten sieht wie folgt aus:</para> <example id="debian-repository-example"> <title>Ein Standart Debian Repository</title> <screen>(Ihr Repository Verzeichnisbaum) | +-dists | |-stable | |-main | | |-binary-alpha | | |-binary-arm | | |-binary-... | | +-source | |-contrib | | |-binary-alpha | | |-binary-arm | | |-binary-... | | +-source | +-non-free | |-binary-alpha | |-binary-arm | |-binary-... | +-source | |-testing | |-main | | |-binary-alpha | | |-binary-arm | | |-binary-... | | +-source | |-contrib | | |-binary-alpha | | |-binary-arm | | |-binary-... | | +-source | +-non-free | |-binary-alpha | |-binary-arm | |-binary-... | +-source | +-unstable |-main | |-binary-alpha | |-binary-arm | |-binary-... | +-source |-contrib | |-binary-alpha | |-binary-arm | |-binary-... | +-source +-non-free |-binary-alpha |-binary-arm |-binary-... +-source</screen> </example> <para>Die »Freien«-Pakete kommen in »<literal>main</literal>«; die »nicht-Freien« in »<literal>non-free</literal>« und die »Freien«, die von einem »nicht-Freien« abhängen kommen in »<literal>contrib</literal>«. Debian unterstützt momentan 11 Architekturen; Ich habe die meisten davon aufgrund der länge ausgespart. </para> <para>Jedes »<filename>binary-*</filename>«-Verzeichnis enthält eine »<filename>Packages.gz</filename>« und eine optionale »<filename>Release</filename>«-Datei. Jedes »<filename>source</filename>«-Verzeichnis enthält eine »<filename>Sources.gz</filename>« und eine optionale »<filename>Release</filename>«-Datei. Beachten Sie, das die <emphasis>Pakete</emphasis> nicht im selben Verzeichnis wie die »Index-Dateien« liegen müssen, weil die »Index-Dateien« die Pfade zu den verschiedenen Paketen enthalten; in wirklichkeit, können sie <emphasis>überall</emphasis> sonst im Depot liegen. Dies macht es möglich, <link linkend="pools">pools</link> zu erstellen.</para> <para>Sie können so viele Distributionen und Gruppen anlegen und bennen wie sie wollen. Die von mir im Beispiel benutzen sind lediglich die, die von Debian verwendet werden. Sie können, zum Beispiel, die Distribution <literal>current</literal> und <literal>beta</literal> (anstelle von <literal>stable</literal>, <literal>testing</literal> und <literal>unstable</literal>) und die Gruppen <literal>foo</literal>, <literal>bar</literal>, <literal>baz</literal> und <literal>qux</literal> (anstelle von <literal>main</literal>, <literal>contrib</literal> und <literal>non-free</literal>) verwenden.</para> <para>Obwohl Sie die möglichkeit haben die Gruppen zu bennen wie Sie wollen, ist es erstmal eine gute Idee die standard Distributionen von Debian benutzen, weil diese den Debian Benutzern bekannt sind.</para> </section> <section> <title>Triviale-Depots</title> <para>Triviale-Depots bestehen aus einem Hauptverzeichnis und sovielen Unterverzeichnisen wie Sie wollen. Da der Benutzer den Pfad zum Hauptverzeichnis des Depots und den Relativen Pfad vom Hauptverzeichnis zum Verzeichnis mit den Index-Dateien angeben muss, können Sie machen was Sie wollen (sogar alles in das Hauptverzeichnis des Depots packen. In dem Fall ist der Relative-Pfad sehr leicht <quote><filename>/</filename></quote>).</para> <example id="trivial-example"> <title>Ein Triviales-Depot mit zwei Unterverzeichnisen</title> <screen>(Ihr Depot Verzeichnisbaum) | |-binary +-source</screen> </example> </section> <section> <title>Erstellen der Index-Dateien</title> <para><command>dpkg-scanpackages</command> generiert die »<filename>Packages</filename>«-Datei und <command>dpkg-scansources</command> die »<filename>Sources</filename>«-Datei.</para> <para>Beide schicken ihre Ausgabe an stdout; Dadurch können Sie, zum erstellen einer komprimierten Datei, ein Kommando wie dieses verwenden: <command>dpkg-scanpackages <replaceable>Argumente</replaceable> | gzip -9c > Packages.gz</command>.</para> <para>Die zwei Werkzeuge arbeiten beide auf die selbe Weise; beide kriegen zwei Argumente (in wirklichkeit sind es mehr, aber ich möchte hier nicht näher darauf eingehen; Sie können gerne die Handbuch-Seiten lesen wenn Sie mehr wissen wollen); als Erstes das Verzeichnis in dem die Pakete liegen, und das Zweite ist die <emphasis>Überschreib-Datei</emphasis>. Für einfache Depots brauchen wir keine Überscheib-Dateien, aber da es ein benötigtes Argument ist geben wir einfach <literal>/dev/null</literal> an.</para> <para><command>dpkg-scanpackages</command> Scant die »<filename>.deb</filename>«-Pakete; <command>dpkg-scansources</command> Scant die »<filename>.dsc</filename>«-Dateien. Folglich ist es Nötig die <filename>.orig.gz</filename>-, <filename>.diff.gz</filename>- und <filename>.dsc</filename>-Dateien an die selbe Stelle zu packen. Die <filename>.changes</filename>-Dateien werden nicht gebraucht.</para> <para>Falls Sie ein »Triviales-Depot« wie das aus <xref linkend="trivial-example"/> haben, können Sie die zwei Index-Dateien wie folgt gennerieren:</para> <screen>$ cd mein-Depot $ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz $ dpkg-scansources source /dev/null | gzip -9c > source/Sources.gz</screen> <para>Wenn Sie ein Komplexes Depot wie bei <xref linkend="debian-repository-example"/> haben, müssen Sie ein paar Scripte schreiben, um diesen Prozess zu automatisieren.</para> <para>Sie können auch das <replaceable>Verzeichnisprefix</replaceable> Argument der zwei Werkzeuge benutzen um die Syntax ein wenig zu vereinfachen. Ich lasse dies als Übung für den Leser. (Es ist in den Handbuchseiten Dokumentiert).</para> </section> <section id="release"> <!-- todo: Release should be between <filename> tags, but then xmltex won't compile it --> <title>Die »Release«-Datei erstellen</title> <para>Wenn Sie dem Benutzer Ihres Depots erlauben wollen <emphasis>Pinning (Anheften)</emphasis> mit Ihrem Depot zu nutzen, müssen Sie eine »<filename>Release</filename>«-Datei in jedem Verzeichnis mit Index-Dateien hinzufügen. (Sie können mehr über Anheften im <ulink url="http://www.debian.org/doc/manuals/apt-howto/">APT HOWTO</ulink>) erfahren.</para> <para>Die »<filename>Release</filename>«-Dateien einfache und kurze Textdateien der folgenden Form:</para> <screen>Archive: <replaceable>Archiv</replaceable> Component: <replaceable>Gruppe</replaceable> Origin: <replaceable>IhreFirma</replaceable> Label: <replaceable>IhreFirma Debian Depot</replaceable> Architecture: <replaceable>Architektur</replaceable></screen> <variablelist> <varlistentry> <term><literal>Archive</literal></term> <listitem> <para>Der Name der Distribution von Debian zu der die Pakete in diesem Verzeichnis gehört (oder Entwickelt wurde), z.B. <literal>stable</literal>, <literal>testing</literal> oder <literal>unstable</literal>.</para> </listitem> </varlistentry> <varlistentry> <term><literal>Component</literal></term> <listitem> <para>Die Gruppe der Pakete in diesem Verzeichnis, zum Beispiel <literal>main</literal>, <literal>non-free</literal>, oder <literal>contrib</literal>.</para> </listitem> </varlistentry> <varlistentry> <term><literal>Origin</literal></term> <listitem> <para>Der Name des Paket-Autors.</para> </listitem> </varlistentry> <varlistentry> <term><literal>Label</literal></term> <listitem> <para>Ein angemessenes Kennzeichen für das Paket oder für Ihr Depot. Benutzen Sie Ihre Fantasie.</para> </listitem> </varlistentry> <varlistentry> <term><literal>Architecture</literal></term> <listitem> <para>Die Architektur der Pakete in diesem Verzeichnis, wie <literal>i386</literal>, <literal>sparc</literal> oder <literal>source</literal>.</para> </listitem> </varlistentry> </variablelist> <para>Es ist wichtig <literal>Archive</literal> und <literal>Architecture</literal> richtig zu haben, da sie am meisten für pinning verwendet werden. Die anderen sind weniger wichtig.</para> </section> <section id="pools"> <title>Pools erstellen</title> <para>Bei »Automatischen-Depots« wird das Veröffentlichen der Pakete in den verschiedenen Verzeichnissen schnell zu einer unmöglichen Aufgabe. Es ist außerdem eine große Verschwendung von Platz und Bandbreite, da es Pakete gibt (zum Beispiel Dokumentations-Pakete), welche für jede Architektur gleich sind.</para> <para>In diesem Fall ist ein <emphasis>Pool</emphasis> eine mögliche Lösung. Ein Pool ist ein zusätzliches Verzeichnis im Hauptverzeichnis eines Depots welches <emphasis>Alle</emphasis> Pakete (die »Binäries« für alle Architekturen, Distributionen und Gruppen und alle »Quellen«) enthält. Durch eine Kombination von »Überschreib«-Dateien (welche nicht durch dieses Dokument abgedeckt sind) und Skripten können viele Probleme vermieden werden. Ein schönes Beispiel für ein Pool-Depot ist das Debian-Depot selber.</para> <para>Pools sind nur für große Depots sinnvoll. Ich habe nie welche erstellt und werde wohl auch in naher Zukunft keine erstellen müssen, deshalb werde ich hier nicht beschreiben, wie Sie einen erstellen können. Wenn Sie meinen das ein Kapitel dazu ergänzt werden sollte, fühlen Sie sich frei eines zu verfassen, und mich zu kontaktieren.</para> </section> <section> <title>Werkzeuge</title> <para>Es gibt verschiedene Werkzeuge um die Erstellung eines Debian-Archivs zu automatisieren und vereinfachen. Ich habe die meisten Namenhaften Werkzeuge hier aufgezählt.</para> <para><command>apt-ftparchive</command> wird benutzt um eine Kollektion von Debian-Paket-Dateien in eine geeignete Archiv Hirarchie, wie die von Offizielen Debian Archiv einzugliedern. Es ist ein Teil des <literal>apt-utils</literal> Paketes.</para> <para><command>apt-move</command> wird benutzt um eine Kollektion von von Debian-Paket-Dateien in eine geeignete Archiv-Hirarchie, wie sie vom offiziellen Debian-Archive verwendet wird zu verschieben.</para> </section> </section> <!-- setting-up --> <section id="using-a-repository"> <title>Ein Depot benutzen</title> <para>Ein Depot zu benutzen ist sehr einfach, hängt aber davon ab, was für eine Art von Depot Sie erstellt haben: »Binär« oder »Quell« und »Automatisch« oder »Trivial«.</para> <para>Jeder Depot bekommt eine Zeile in der <filename>sources.list</filename>; für ein »Binäres« benutzen Sie das <literal>deb</literal> Schlüsselwort und für ein »Quell« benutzen Sie das <literal>deb-src</literal> Schlüsselwort.</para> <para>Jede Zeile gehorcht der folgenden Syntax: <screen>deb|deb-src <replaceable>uri</replaceable> <replaceable>Distribution</replaceable> [<replaceable>Gruppe1</replaceable>] [<replaceable>Gruppe2</replaceable>] [...]</screen> Die <replaceable>uri</replaceable> ist die URI des Hauptverzeichnisses des Depots, so wie <literal>ftp://ftp.yoursite.com/debian</literal>, <literal>http://yoursite.com/debian</literal> oder für Lokale Dateien, <literal>file::///home/joe/my-debian-depot</literal>. Der folgende Slash ist optional.</para> <para>Für »Automatische-Depots« müssen Sie eine Distribution und mindestens eine Gruppe angeben. Die Distribution darf nicht nicht mit einem Slash enden.</para> <example> <!-- todo: sources.list should be tagged as <filename>, but xmltex doesn't support that --> <title>Zwei »Automatische-Depots« aus meiner <filename>sources.list</filename></title> <screen>deb ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free deb-src ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free</screen> <para>Diese zwei Zeilen Definieren ein Automatisches »Binär«- und »Quell«- Depot mit Hauptverzeichnis <literal>ftp://sunsite.cnlab-switch.ch/mirror/debian/</literal>, der Distribution <literal>unstable</literal> und den Gruppen <literal>main</literal>, <literal>contrib</literal> und <literal>non-free</literal>.</para> </example> <para>Wenn das Depot nicht Automatisch ist, definiert <emphasis>distribution</emphasis> den Relativen-Pfad zu den Index-Dateien und muss mit einem Slash enden, ausserdem darf keine Gruppe angegeben werden. </para> <example> <title>Zwei »Triviale-Depots« aus meiner <filename>sources.list</filename></title> <screen>deb file:///home/aisotton/rep-exact binary/ deb-src file:///home/aisotton/rep-exact source/</screen> <para>Die erste der zwei Zeilen legt ein »Binär«-Depot unter <filename>/home/aisotton/rep-exact/binary</filename> auf meinem Lokalen Rechner fest; die Zweite legt ein »Quell«-Depot unter <filename>/home/aisotton/rep-exact/source</filename> fest.</para> </example> </section> <!-- using-a-repository --> <section> <title>Siehe auch</title> <itemizedlist> <listitem> <para>Die <command>apt-ftparchive</command> Dokumentation.</para> </listitem> <listitem> <para>Die <command>apt-get</command> Dokumentation und die Dokumentation für <literal>apt</literal>.</para> </listitem> <listitem> <para>Die <command>apt-move</command> Dokumentation.</para> </listitem> <listitem> <para><ulink url="http://www.apt-get.org/"/> für viele Beispiele von echten Depots.</para> </listitem> <listitem> <para>Das <ulink url="http://www.debian.org/doc/manuals/apt-howto/">APT HOWTO</ulink>.</para> </listitem> <listitem> <para>Die <command>dpkg-scanpackages</command> Dokumentation.</para> </listitem> <listitem> <para>Die <command>dpkg-scansources</command> Dokumentation.</para> </listitem> <listitem> <para>Die <literal>sources.list(5)</literal> Handbuchseiten.</para> </listitem> </itemizedlist> </section> </article>
Attachment:
signature.asc
Description: OpenPGP digital signature