Signatur
Beschreibung
rpmaddtag() erweitert die interne Tag-Liste der RPM-Erweiterung um ein zusätzliches Tag. Tags, die mit dieser Funktion registriert werden, werden anschließend beim Auslesen von RPM-Paketinformationen (z. B. mit rpminfo() oder rpmdbsearch()) in den zurückgegebenen Daten berücksichtigt.
Die Funktion ist nützlich, wenn man auf spezialisierte oder weniger verbreitete RPM-Tags zugreifen möchte, die standardmäßig nicht im Rückgabe-Array enthalten sind. Die verfügbaren Tag-Konstanten beginnen typischerweise mit RPMTAG_* und decken Metadaten wie Paketname, Version, Zusammenfassung, Abhängigkeiten und viele weitere Eigenschaften ab.
Für die Nutzung dieser Funktion muss die PECL-Erweiterung rpminfo installiert und aktiviert sein. Die Funktion sollte einmalig zu Beginn des Skripts aufgerufen werden, bevor Paketinformationen abgerufen werden, da nachträglich hinzugefügte Tags erst bei nachfolgenden Abfragen wirksam sind.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $tag Pflicht | int | Die numerische Konstante des RPM-Tags, das hinzugefügt werden soll. Üblicherweise eine der vordefinierten RPMTAG_*-Konstanten, z. B. RPMTAG_BUILDHOST oder RPMTAG_VENDOR. |
Rückgabewert
true zurück, wenn das Tag erfolgreich zur Liste hinzugefügt wurde, andernfalls false (z. B. wenn das Tag unbekannt oder bereits registriert ist).Beispiele
Zusätzliches RPM-Tag abfragen
<?php
// RPMTAG_VENDOR zur Abfrage hinzufügen
if (rpmaddtag(RPMTAG_VENDOR)) {
$info = rpminfo('/path/to/package.rpm');
if ($info !== null) {
echo 'Paketname: ' . $info['Name'] . PHP_EOL;
echo 'Vendor: ' . ($info['Vendor'] ?? 'unbekannt') . PHP_EOL;
}
} else {
echo 'Tag konnte nicht hinzugefügt werden.' . PHP_EOL;
}
?>
Mehrere Tags hinzufügen und Paketdaten auslesen
<?php
// Mehrere zusätzliche Tags registrieren
$tags = [
RPMTAG_BUILDHOST,
RPMTAG_VENDOR,
RPMTAG_PACKAGER,
];
foreach ($tags as $tag) {
rpmaddtag($tag);
}
$info = rpminfo('/path/to/package.rpm');
if ($info !== null) {
echo 'Buildhost: ' . ($info['Buildhost'] ?? 'n/a') . PHP_EOL;
echo 'Vendor: ' . ($info['Vendor'] ?? 'n/a') . PHP_EOL;
echo 'Packager: ' . ($info['Packager'] ?? 'n/a') . PHP_EOL;
}
?>
// Wichtig · Fallstricke
Verfügbarkeit: rpmaddtag() ist Teil der PECL-Erweiterung rpminfo und nicht im PHP-Kern enthalten. Die Erweiterung muss separat installiert werden (pecl install rpminfo).
Reihenfolge beachten: Tags müssen vor dem eigentlichen Abruf von Paketinformationen mit rpminfo() oder rpmdbsearch() hinzugefügt werden, da bereits laufende oder abgeschlossene Abfragen nicht rückwirkend beeinflusst werden.
Tag-Konstanten: Nicht alle RPMTAG_*-Konstanten sind auf jedem System verfügbar. Welche Konstanten definiert sind, hängt von der installierten Version der zugrundeliegenden librpm ab.