Provided by: emdebian-grip-server_3.0.7_all bug

NAME

       Emdebian::Grip - internes Emdebian-Modul fuer Emdebian-Grip-Depots

Beschreibung

       Es ist lohnenswert mit "reprepro" (1) vertraut zu sein, wenn mit diesem
       Modul gearbeitet wird.

       Emdebian::Grip stellt Depotverwaltungs-Unterstuetzung fuer die
       em_autogrip-Skripte zur Verfuegung, um eine Dreiwege-Depot-Hierarchie
       fuer Emdebian-Grip bereitzustellen, einschliesslich Unterstuetzung fuer
       Paketmigration von Unstable nach Testing.

       Wenn zu Beginn nur "Unstable" betrachtet wird, ist die Hierarchie wie
       folgt:

       Debian-Unstable wird unter Benutzung von
       ${base}${filter_name}/conf/pkglist gefiltert, was wiederum auf der
       Ausgabe von Xdpkg --get-selectionsX basiert. Nur Pakete, die derzeit
       auf Maschinen installiert sind, auf denen Emdebian-Grip laeuft werden
       der XpkglistX hinzugefuegt. "reprepro" aktualisiert dann ${filter_name}
       vom ausgewaehlten Debian-Spiegel, waehrend es nur die Binaer- und
       Quellpakete laedt, die in XpkglistX angegeben sind, um einen teilweise
       lokalen Spiegel fuer die Liste der unterstuetzten Architekturen zu
       erstellen.

       Grip-Unstable wurde von dem gefilterten Spiegel durch einen
       kombinierten Prozess der Konvertierung des Quellpakets und
       anschliessendem Identifizieren der fehlenden Binaerpakete von der
       XpkglistX erstellt. Waehrend des "Emgrip"-Prozesses werden Emdebian-
       TDebs erstellt, die in das Locale-Depot eingefuegt werden:

       Locale ist ein sehr spezialisiertes Depot, das nur fuer Debian-
       Quellpakete und Emdebian-TDebs entworfen wurde, die von der Locale-
       Wurzel organisiert werden, z.B. ist die en_GB-Unterstuetzung in der
       Komponente en. Waehrend Debian drei Komponenten hat (main, contrib und
       non-free), hat das Locale-Depot 19 Komponenten (einschliesslich XmainX
       fuer Quellpakete). Im Locale-Pool sind Pakete ueber Komponenten
       organisiert, waehrend "Apt"-Pakete im Filter oder Grip-Depot unter
       pool/main/a/apt im Locale-Depot sind, die en-TDebs sind in
       pool/en/a/apt/ und die franzoesischen unter pool/fr/a/apt/ etc. Die
       Liste der Locale-Wurzeln, die vom Locale-Depot unterstuetzt werden,
       wird von &get_locale_roots zurueckgegeben. Es ist Teil des Moduls
       "Debian::Packages::Compare". Um weitere Informationen ueber Locale-
       Wurzeln zu erhalten, lesen Sie
       <http://www.emdebian.org/emdebian/langupdate.html>

       Soweit es Testing betrifft, funktioniert die Hierarchie auf einem
       aehnlichen Weg wie bei Debian, aber mit zusaetzlicher Unterstuetzung
       fuer Depots, die gestartet werden, nachdem Pakete in Debian-Testing
       migriert wurden und eine neuere Version in Debian-Unstable existiert.

       Beachten Sie, dass das Testing-Depot in vielen Faellen Daten benoetigt,
       um manuell eingerichtet zu werden - durch Bearbeiten von
       Xconf/distributionsX fuer jedes Depot. Die aktuelle Emdebian-
       Konfigurationsdateien werden ihren Weg in das Debian-Wiki zu gegebener
       Zeit finden.

       Mit einem voll ausgefuellten Debian-Unstable, Grip-Unstable und Locale-
       Unstable kann &grip_britney dann Pakete in Grip-Testing unter Benutzung
       der von den Befehlen "Debian::Packages::Compare" und "reprepro
       copysrc"in &get_britney_list implementierten Kriterien migrieren. Die
       meisten, wenn nicht alle Grip-Depots werden zu einer Zeit anfangen,
       wenn einige Debian-Pakete bereits nach Testing migriert sind und eine
       neuere Version nach Unstable hochgeladen wurde. "Emdebian::Grip"
       beinhaltet ausserdem catch-up-Unterstuetzung per &migrate_missing, das
       relevante Pakete von Debian-Testing beinhaltet, als ob diese Version
       direkt nach Grip-Testing hochladen worden waere (was tatsaechlich dem
       entspricht, was geschieht).

       Der emgrip-Prozess kann eine spuerbare Zeit dauern - denkbar sind viele
       Stunden, nicht Minuten - prinzipiell aufgrund des Mehraufwands fuer das
       Generieren der TDebs einzeln, pro Quelle, pro Locale und pro
       Architektur. Um eine vollstaendige Unstable- und Testing-
       Zusammenstellung zu erstellen ist voraussichtlich ein Tag oder mehr
       noetig, aber es ist meistens automatisiert.

       Die Probleme, die verbleiben, beziehen sich auf Abhaengigkeitsthemen.
       Die Funktion &edos in "Emdebian::Grip" hat Probleme beim Versuch, die
       Loesung fuer Abhaengigkeitsprobleme zu berechnen, die von
       "edos-debcheck" identifiziert wurden und den Problemen, die teilweise
       akut werden, wenn das Depot selbst zu Beginn in keinem guten Zustand
       ist. Deshalb wird &edos nicht automatisch von aktuellen Werkzeugen
       ausgefuehrt. Das Depot muss vollstaendig aktuell sein und alle
       relevanten Pakete muessen im Filter und in Grip exisitieren bevor
       &edos-Unterstuetzung genutzt wird. Benutzen Sie am Anfang direkt
       "edos-debcheck", um die Hauptprobleme zu erkennen:

        edos-debcheck -explain -failures < ${base}${grip_name}/dists/sid/main/binary-i386/Packages

       Pakete, die NICHT VERFUeGBAR sind, muessen gegebenenfalls als Quell-
       oder Binaerpakete gegrippt werden, es ist aber bei der korrekten
       Interpretation der "edos-debcheck"-Ausgabe Vorsicht geboten, um den
       richtigen Verweis in der Kette zu erkennen.

       Es existieren zwei Hauptprobleme bei der Automatisierung dieses
       Prozesses, lesen Sie "em_autogrip" (1) um genaue Informationen zu
       erhalten, aber es genuegt hier zu sagen, dass Pakete, wenn sie in
       Debian-Unstable existieren, in der Liste der NICHT VERFUeGBAREN Pakete
       erscheinen, wo die korrekte Aktion das Loeschen der Pakete ist, die von
       dem nicht verfuegbaren Paket abhaengen. Diese Themen werden innerhalb
       Debian diskutiert.

Copyright und Lizenz

        Copyright (C) 2007-2009  Neil Williams <codehelp@debian.org>

        Dieses Paket ist freie Software; Sie koennen es unter den Bedingungen der
        XGNU General Public LicenseX, wie sie von der XFree Software FoundationX
        entweder in Version 3 der Lizenz oder (optional) in einer spaeteren Version
        veroeffentlicht wurde, weiterverteilen und/oder veraendern.
        Dieses Programm wird inder Hoffnung verteilt, dass es nuetzlich sein wird,
        aber OHNE JEGLICHE GEWAeHRLEISTUNG, auch ohne die inbegriffene
        Gewaehrleistung von MARKTGAeNGIGKEIT und EIGNUNG FUeR EINEN SPEZIELLEN ZWECK.
        Lesen Sie die XGNU General Public LicenseX, um weitere Einzelheiten zu
        erhalten.
        Sie sollten mit diesem Programm eine Kopie der XGNU General Public License
        erhalten haben. Falls nicht, lesen Sie <http://www.gnu.org/licenses/>.

Beispiel

        use strict;
        use warnings;
        use Emdebian::Grip;
        use Debian::Packages::Compare;

        use vars qw/ $filter_name $grip_name $suite $base $verbose
         $noskip @archlist @locroots @lines $line %pkg @filter $have
         %debianunstable %gripunstable %tdebunstable /;

        my $mirror='http://ftp.uk.debian.org/debian'; # Standard
        $filter_name = 'filter';
        $grip_name = 'grip';
        $suite = "unstable"; # zuerst
        $base = '/opt/reprepro/';
        $verbose = 0;

        &set_base($base);
        &set_repo_names ($filter_name, $grip_name);
        my $a = &get_archlist ($suite, $filter_name);
        @archlist = (not defined $a or not @$a) ?
          qw/i386 amd64 arm armel powerpc mips mipsel/ : @$a;
        my $l = &get_locale_roots ($suite, 'locale');
        @locroots = (not defined $l or not @$l) ? qw/ af am ang ar as ast az be bg
         bn br bs ca cs cy da de dz el en eo es et eu fa fi fr ga gl gu he hi hr
         hu hy ia id io is it ja ka kn km ko ku ky lg li lt lv mai mg mi mk ml mn mr
         ms nb ne nl nn no ns nso oc or pa pl ps pt rm ro ru rw si sk sl sq sr sv
         ta te th tk tl tr tt ug uk ur uz vi wa wo xh yi zh zu / : @$l;

        &setup_repos if ( not -f "${base}${filter_name}/conf/pkglist" );

        my $debu  = &read_packages ('unstable', $filter_name);
        my $gripu = &read_packages ('unstable', $grip_name);
        my $tdebu = &read_locale   ('unstable', 'locale');
        %debianunstable = %$debu   if (defined $debu);
        %gripunstable   = %$gripu  if (defined $gripu);
        %tdebunstable   = %$tdebu  if (defined $tdebu);
        &update_filter;
        &update_repo($verbose);

        # mit der Arbeit anfangen

set_repo_names

       Kopiert den Standard- oder benutzerdefinierten Filter- und Grip-
       Depotnamen in das interne Modul.

set_noskip

       Kopiert die benutzerdefinierte --noskipold-Option in das interne Modul,
       damit sie bei Aufruf vom XrepreproX benutzt werden kann.

set_dry_run

       Konfiguriert einen Testlauf, bei dem externe Befehle ausgegeben statt
       ausgefuehrt werden.

print_missing

       Gibt die Paketliste aus, die in einem einfachen Format von
       "Debian::Package::Compare::get_missing_sources" zurueckgegeben wurde

print_build_deps

       Gibt die Liste aus, die in einem einfachen Format von
       "Debian::Package::Compare::get_missing_builddeps" zurueckgegeben wurde

print_testing_status

       Stellt eine detaillierte Ausgabe des Status des Testing-Depots fuer
       Grip zur Verfuegung, vergleicht Debian-Unstable (Filter) mit Debian-
       Testing (Filter) und erkennt, welche Quellpakete in Emdebian-Grip-
       Testing hinter Debian stecken.

       Diese Liste ist weiterhin unterteilt in die, bei denen die Quellversion
       von Debian-Unstable genau die gleiche ist wie die Quellversion in
       Debian-Testing (Pakete, die nach Grip-Testing migriert werden muessen)
       und denen, deren Version sich von der in Testing unterscheidet.

grip_britney

       Grip-Version des Britney-Skripts, das Pakete in Debian-Testing
       migriert. Lesen Sie "Debian::Packages::Compare" (3), um Einzelheiten
       der get_britney_list-Kriterien zu erhalten.

       Um es zusaetzlich neuen Depots zu erlauben zu Debian-Paketen
       aufzuschliessen, muessen Pakete in Grip-Unstable die bereits Debian-
       Testing-Paketen voraus sind, direkt aus Debian-Testing gegrippt werden.

       Ausserdem kann dies auftreten, wenn Pakete direkt unter Benutzung von
       Xtesting-proposed-updatesX waehrend eines Veroeffentlichungs-Freeze
       nach Debian-Testing uebernommen werden.

       Beachten Sie, dass Xgrip_britneyX nur Pakete migriert, bei denen die
       Version in Debian-Unstable der in Debian-Testing  entspricht - d.h. bei
       denen eine Migration bereits in Debian erfolgt ist. Pakete, die ueber
       Xtesting-proposed-updatesX ankommen oder in Testing migriert wurden
       bevor das Grip-Depot gestartet wurde und die nun eine neuere Version in
       Unstable haben, koennen unter Benutzung von Xmigrate_missingX migriert
       werden.

       Falls Sie grip_britney und migrate_missing zusammen ausfuehren, starten
       Sie zuerst Xgrip_britneyX und laden Sie saemtliche Daten unter
       Benutzung von read_packages erneut, bevor Sie versuchen migrate_missing
       auszufuehren. Lesen Sie migrate_missing, um weitere Informationen zu
       erhalten.

migrate_missing

       Resultat von Xgrip_britneyX, das den Prozess vervollstaendigt, indem es
       Pakete, die eine andere Version in Debian-Unstable haben, in Testing
       einfuegt.

       Fehlende Pakete werden in Testing unter Benuzung von grip_source und
       grip_binary eingefuegt, als ob sie direkt in Testing hochgeladen
       wuerden (was tatsaechlich dem entspricht, was geschieht). Das heisst,
       dass migrate_missing das Paket in Testing nur so lange verarbeitet, wie
       es die neuere Version, die nach Unstable ging, bearbeitet. Abhaengig
       von der Anzahl der betroffenen Pakete,  kann Xmigrate_missingX viel
       laenger brauchen, als Xgrip_britneyX, aber es sollte seltener noetig
       sein, sobald das Depot vollstaendig ist.

EDOS

       Auf dieser Stufe nur ein Rahmenkonzept. Diese Funktion muss eventuell
       die Ergebnisse durch Architektur und Depot zusammentragen und versuchen
       eine Loesung aufzuzeigen.

       Lesen Sie "em_autogrip" (1), um etwas ueber Probleme mit der Edos-
       Rekursion zu erfahren.

       In X$mode eq 'edos'X werden die Pruefdaten einfach fuer jeden Filter
       und jedes Grip-Depot ausgegeben.

clean_incoming

       Unregelmaessig waehrend laengeren Ausfuehrungen aufrufen.

cleanup

       Nur vor dem Beenden aufrufen

update_filter

       Der Filter in der XFilterListX fuellen, so dass automatische
       Aktualisierungen verarbeitet werden koennen X ohne einen filter wird
       das vollstaendige Archiv hinzugefuegt. Aktualisieren nimmt jedoch eine
       spuerbare Zeit in Anspruch. Rufen Sie es daher nur auf, falls noetig.

extend_filter

       Paket(e) zur Filterliste hinzufuegen, eine durch Leerzeichen getrennte
       Liste ist hinnehmbar.

update_repo

       Sobald der XpkglistX-Filter korrekt ist, rufen Sie Reprepro auf, um die
       aktualisierten Pakete abzufragen.

incoming_locale

       Prueft das Eingangsverzeichnis auf Emdebian-TDebs und fuegt sie in
       Reprepro ein.

       Bis die X.tdebX-Erweiterung unterstuetzt wird, muss Reprepro ueberredet
       werden solchen Dateien die Benutzung der Option "--ignore=extension" zu
       erlauben.

       Unter all den erwarteten Fehlernachrichten werden einige nuetzliche
       Ausgaben von Reprepro an "STDERR" geschickt, wenn TDebs behandelt
       werden, so dass Fehler nicht an /dev/null gesandt werden.

check_dirs

       Prueft, ob kritische Verzeichnisse in der Dreiwege-Depothierarchie
       existieren und erstellt die fehlenden.

setup_repos

       Beachten Sie: Falls Sie Ihr eigenes Depot einrichten, denken Sie daran,
       dass es viel Zeit kostet, den XContents:X-Bezeichner in Reprepro
       waehrend jeder Operation auf dem Depot einzufuegen. Inhalte sind nicht
       durch "setup_repos" eingeschaltet und es ist dringend empfohlen, dass
       sie nicht bei spaeteren Aenderungen erneut eingeschaltet werden.

       Es muss entschieden werden, ob dies mit mehreren Suites bewaeltigt wird
       oder nur Xsuite=unstableX erzwungen wird.

       Locale wird gemeinsam mit Crush benutzt. Es ist nicht besonders leicht
       eine neue Locale-Wurzel hinzuzufuegen, wenn gleichzeitig die Skripte
       und Depots geaendert werden muessen.

       Benoetigte Reprepro-Daten (braucht Konfigurationsunterstuetzung): Diese
       Dateien, die fuer fertige Reprepro-Depots erstellt werden muessen,
       werden auch "SignWith: 0x97BB3B58" benoetigen, ausser Stable, das
       manuell signiert sein sollte, um die Sicherheitsluecke zwischen Grip
       und Debian zu ueberbruecken.

convert_prefix

       Debian-Depots benutzen die Index-Eigenschaft des Quellpaketnamens im
       Pfad zum Paketverzeichnis unterhalb des Pools, um die Anzahl der Listen
       pro Verzeichnis auf einer verwaltbaren Stufe zu halten. Eine Ausnahme
       bilden Quellpakete, die mit X"lib" beginnen, weil dort so viele sind,
       dass der Abschnitt X"l"X zu gross wuerde. Waehrend X"l"X bleibt, wird
       jedes Quellpaket, das mit X"lib"X beginnt, unter eine getrennte
       Zusammenstellung von Verzeichnissen abgelegt, die die ersten vier
       Buchstaben anstelle von nur X"l"X benutzen, z.B. wird "libaa" unter
       "pool/main/liba/libaa/" gefunden und "libfoo" unter
       "pool/main/libf/libfoo/", aber "limpet" wuerde unter
       "pool/main/l/limpet/" liegen.

       Convert_prefix ist eine Schnellfunktion, um das korrekte Praefix unter
       diesen Regeln festzulegen.

grip_source

       Adapter fuer Emgrip, der ein einzelnes Debian-Quellpaket nimmt, das
       Binaerpaket gript, wo der Quellpaketname zum Binaerpaketnamen passt
       (wegen einer Stoerung in der Funktionsweise von "Reprepro"),
       irgendwelche Emdebian-TDebs generiert, die unveraenderten Quellpakete
       in Grip einfuegt, die gegripten Binaerpakete in Grip einfuegt und und
       jedes generierte Emdebian-TDeb in Locale einfuegt.

       Sobald das Quellpaket verarbeitet wurde, wird &clean_incoming
       ausgefuehrt.

grip_binary

       Adapter fuer Emgrip, der ein einzelnes Debian-Binaerpaket nimmt und
       gript, irgendwelche Emdebian-TDebs generiert, das gegripte Binaerpaket
       in Grip einfuegt und irgendwelche generierten Emdebian-TDebs in das
       Locale einfuegt.

       Sobald das Binaerpaket verarbeitet wurde, wird &clean_incoming
       ausgefuehrt.

   Komponenten und Abschnitte
       Jedes Binaerpaket gehoert zu einer "Section", die den Typ oder die
       Funktionalitaet des Pakets weitgehend beschreibt. Falls in dem Depot
       eine Komponente mit dem gleichen Namen wie die "Section" existiert,
       wird das Paket in dieser Komponente abgelegt. Falls der Paketname mit
       "-dev" endet oder die "Section" XdevelX ist, wird zusaetzlich die
       Komponente "dev" ausgewaehlt. Falls der Paketname mit "-doc" endet oder
       der "Abschnitt" "doc" ist, wird die Komponente "doc" ausgewaehlt. Wenn
       dort keine passende Komponente fuer das Grip-Depot konfiguriert ist,
       wird "main" benutzt. Abschnittsnamen selbst werden vom Filter-Depot
       gelesen, d.h. durch Ueberschreiben von Debians Ftp-Master gesetzt.

switch_component

       Einzelne Routine, die austueftelt, welche Komponenten fuer welche
       Abschnitte benutzt werden sollten.

AUTOR

       Neil Williams, "<codehelp@debian.org>"

FEHLER

       Bitte melden Sie alle Fehler oder Anfragen nach Funktionalitaeten auf
       Englisch unter Benutzung von "reportbug emdebian-tools" an das Debian-
       Fehlerverfolgungssystem.

Bekannte Fehler

       (Auch oft als ToDo-Liste bekannt)

       Der Status der TDebs im Locale-Depot muss geprueft werden, bevor
       weitere generiert werden, aber dies bedeutet auch, dass Aenderungen in
       Emgrip gemacht werden muessen, so dass TDebs mit einer
       Befehlszeilenoption uebersprungen werden koennen. In einer normalen
       Operation wird das Paket jedoch nur verarbeitet, weil es veraltet ist,
       daher muessen die TDebs und andere Dateien sowieso ersetzt werden.

       Bei "Architecture: all" handelt es sich um Pakete, die stetig fuer
       mehrere Architekturen weiterverarbeitet werden. Urspruenglich wurde
       dies gemacht, weil das Paket Uebersetzungen enthalten konnte, die in
       Emdebian architekturabhaengig sein mussten. TDebs sollten jedoch nur
       von Quellpaketen generiert werden und dieser Schritt muss
       wahrscheinlich geklaert werden. "reprepro" handhabt solche Verdopplung
       korrekt, es ist nur etwas gespraechig, wenn es dies handhabt und es
       summiert sich zu der Zeit hinzu, die der gesamte Prozess benoetigt.

       Ausserdem wird eine allgemeine Uebersichtsfunktion benoetigt, die alle
       drei Depots zusammenfasst.