Scroll to navigation

doc::pod::de::Emdebian::Grip(3) User Contributed Perl Documentation doc::pod::de::Emdebian::Grip(3)

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.
2011-06-19 perl v5.12.3