NAME¶
Debian::Packages::Compare - Unterstuetzung fuer Emdebian-Depotvergleich
VERSION¶
Version 3.0.0
UeBERSICHT¶
Liest die Packages-Datei, erzeugt einen Hash-Wert von XPackageX und Version,
einen je Architektur, einen je Suite, ein Paar pro Depot. Das zugrundeliegende
Xlibparse-debian-packages-perlX ist ein sehr einfaches Modul, das wohl an
keinem Punkt zusaetzliche Daten in die verglichenen Hash-Werte einfuegt, das
die noetigen Daten nimmt und die kompletten Packages-Daten separat unter
Benutzung von Xget_single_packageX laedt.
Dieses Modul ist derzeit an das Layout des Depots gebunden, das von Reprepro
benutzt wird, um die Architekturliste und verschiedene andere Teile der
Metadaten zu identifizieren. Mit der Zeit koennen Funktionen hinzugefuegt
werden, um solche Listen bereitzustellen.
Um alle Depots unterhalb eines einzelnen Basisverzeichnisses zu finden, erwartet
das Modul:
$base/$repo_name/conf/distributions
Falls $base undefiniert ist oder die Depotverzeichnisse nicht gefunden werden,
geben alle nachfolgenden Funktionen XundefX zurueck.
etc.
Beispielcode:
use Debian::Packages::Compare;
my $base = '/path/to/repositories/'
&set_base($base);
my $debu = &read_packages ('unstable', 'filter');
my $gripu = &read_packages ('unstable', 'grip');
my %debianunstable = %$debu if (defined $debu);
my %gripunstable = %$gripu if (defined $gripu);
foreach my $pkg (sort keys %debianunstable)
{
if ($debianunstable{$pkg}{'source'} ne $gripunstable{$pkg}{'source'})
{
# $pkg ist entweder nicht in einem Grip-Depot oder hat eine andere Version
}
}
Die Hauptfunktionen oder nachfolgenden Versionen werden detailliertere
Fehlerbehandlung beinhalten.
perl -MDebian::Packages::Compare -MData::Dumper -e '&set_base("/opt/reprepro"); \
$c = &read_packages("testing","grip"); print Dumper ($$c{"dpkg"});';
get_archlist¶
Benoetigt derzeit das Reprepro-Dateilayout.
Liest die unterstuetzten Architekturen und gibt eine Liste zurueck.
get_locale_roots¶
Benoetigt derzeit das Reprepro-Dateilayout.
Liest die unterstuetzten Locale-Wurzeln und gibt eine Liste zurueck.
get_components¶
Aehnelt Xget_locale_rootsX allerdings fuer normale Depots, so dass geteilte
Komponenten (wie XdevX und XdocX in Emdebian-Grip) explizit unterstuetzt
werden koennen. Beachten Sie, dass Depots mit XcontribX oder Xnon-freeX
voraussichtlich mit dieser Art von Unterstuetzung verwirrende Ergebnisse
erhalten werden.
get_suite_names¶
Wertet die Datei Xconf/distributionsX fuer das angegebene Depot aus und
wiederholt die Liste der konfigurierten Suite-Namen X eine einheitliche
zusammengestellte Liste der XSuite:X- und XCodename:X-Variablen in
Xconf/distributionsX.
get_unfrozen_suite_names¶
Wertet die Datei Xconf/distributionsX fuer das angegebene Depot aus und
wiederholt die Liste der konfigurierten Suite-Namen, auf die NICHT nur lesend
zugegriffen werden kann. XCodename:X-Variablen sind NICHT enthalten.
set_base¶
Setzt das Basisverzeichnis des/der Depot(s) zum Vergleich. Das Modul erwartet,
dass alle Depots unterhalt eines einzelnen Basisverzeichnisses gefunden
werden:
$base/$repo_name/dists/$suite/main/binary-$arch/Packages
$base/$repo_name/dists/$suite/main/source/Sources.gz
read_sources¶
Aehnlich wie Xread_binariesX, erwartet jedoch eine mit GZip komprimierte Datei.
Wird ueblicherweise nicht direkt aufgerufen.
read_binaries¶
Liest die Packages-Datei und erstellt einen Hash-Wert der Pakete, Architekturen
und Versionen in dem jeweiligen Depot (unter dem Verzeichnis $base und der
Suite fuer die definierte @archlist, einschliesslich Einzelheiten von
XsourcesX.
Erfordert zwei Parameter X den Suite- und den Depotnamen.
Gibt XundefX zurueck, falls das Paket nicht gefunden wird.
z.B. fuer das Grip-Depot:
$hash{'sed'}{'source'} => '4.1.5-8'
$hash{'sed'}{'armel'} => '4.1.5-8em1'
...
read_locale¶
Spezialisierte Funktion, die die Organisation der Locale-Wurzel des TDeb-Depots
regelt. Die interne Locale-Wurzelkomponentenstruktur ist im zurueckgegebenen
Hash-Wert versteckt, der Komponentenname ist im Paketnamen getrennt
aufgelistet. Quelldaten werden unter dem originalen Quellpaketnamen aufbewahrt
und im Hash-Wert referenziert:
Die Locale-Wurzel ist in $list{$package}{'locale'} und der Quellpaketname in
$list{$package}{'source'} enthalten.
z.B.
$hash{'sed-locale-pt-br}{'source'} => 'sed'
$hash{'sed-locale-pt-br}{'locale'} => 'pt'
$hash{'sed-locale-pt-br}{'armel'} => '4.1.5-8'
...
$hash{'sed'}{'source'} => '4.1.5-8'
get_single_package¶
Vollstaendigen Packages-Datensatz fuer ein einzelnes Paket abrufen, binaer
(einzelne Architektur) oder Quelle (.dsc).
get_missing_sources¶
Zwei Depots der gleichen Suite vergleichen und eine Liste der Quellpakete
zurueckgeben, die im ersten Depot enthalten sind, aber nicht im zweiten.
(Aeltere Versionen werden ignoriert.)
ZU ERLEDIGEN: Es wird auch ein Xget_outdated_sourcesX und ein
Xget_outdated_binariesX benoetigt.
get_missing_binaries¶
Zwei Depots der gleichen Suite vergleichen und eine Liste der Binaerpakete
zurueckgeben, die in beiden Depots als Quellpakete existieren, aber nur im
ersten als Binaerpaket, nicht im zweiten.
Emdebian-Versionssuffixe werden im Vergleich automatisch bereinigt.
get_britney_list¶
Zwei Depots vergleichen, jedes mit Unstable und Testing, gibt eine Liste der
Quellpakete zurueck, die fuer eine Migration geeignet sind.
Um fuer eine Migration geeignet zu sein, muss ein Paket im ersten Depot in der
gleichen Version, sowohl in Unstable, als auch in Testing existieren. Es muss
ausserdem im zweiten Depot fuer Unstable existieren und in der gleichen
Version wie im ersten Depot vorliegen. Zuguterletzt muss das Quellpaket
entweder in Testing im zweiten Depot fehlen oder eine niedrigere Version als
in Unstable aufweisen.
Dies ist eine reine Debian-Funktion und es ist keine Unterstuetzung fuer Depots
verfuegbar, die keine Unstable- und Testing-Suites in exakt der gleichen Art
wie Debian implementieren.
Alle Daten werden jedesmal neu geladen, wenn diese Funktion ausgefuehrt wird.
1. Depot1 Unstable muss zu Depot1 Testing passen
2. Depot1 Unstable muss zu Depot2 Unstable passen
3. Depot2 Unstable muss B<neuer> als Depot2 Testing sein
4. Alle Architekturen werden verglichen, einschliesslich der Quellen.
Gibt im Fehlerfall XundefX zurueck.
Der zurueckgegebene Hash-Wert wird unter dem Quellpaketnamen indiziert.
Um die Liste der Pakete zu erhalten, die eine Meldung ueber fehlende Quellen
erscheinen liess, rufen Sie Xget_britney_complaintX auf X die zurueckgegebene
Liste wird undefiniert sein, ausser wenn Xget_britney_listX bereits aufgerufen
wurde.
get_britney_complaint¶
Falls Xget_britney_listX mit Quellpaketen aufwartet, die fuer eine
Testing-Migration fehlen, gibt Xget_britney_complaintX die Liste der
Quellpaketnamen zurueck, die identifiziert wurden.
Falls Xget_britney_listX nicht aufgerufen wurde, wird XundefX zurueckgegeben.
Falls es dort keine Beanstandungen gibt, wird ausserdem XundefX zurueckgegeben.
Copyright und Lizenz¶
Copyright (C) 2008 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/>.
AUTOR¶
Neil Williams, "<codehelp@debian.org>"
FEHLER¶
Bitte melden Sie jegliche Fehler oder Anfragen zu Funktionalitaeten auf Englisch
per "reportbug libdebian-packages-compare-perl" an das XDebian Bug
Tracking SystemX.