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.