Start · Sprachen · PHP · Referenz · rpmaddtag

rpmaddtag

Funktion

Fügt ein benutzerdefiniertes RPM-Tag zur Liste der beim Lesen von RPM-Paketen abzurufenden Tags hinzu.

seit PHP 8.0.0 Kategorie: misc

Signatur

rpmaddtag(int $tag): bool

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

Typ
bool
Beschreibung
Gibt 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;
}
?>
Paketname: example-package Vendor: Example Corp

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;
}
?>
Buildhost: build.example.com Vendor: Example Corp Packager: John Doe <john@example.com>

// 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.