Start · Sprachen · PHP · Referenz · rpmexpandnumeric

rpmexpandnumeric

Funktion

Wertet ein RPM-Makro aus und gibt dessen numerischen Wert zurück.

Kategorie: misc

Signatur

rpmexpandnumeric(string $macro): int|float

Beschreibung

rpmexpandnumeric() wertet ein RPM-Makro aus und gibt dessen Wert als numerischen Typ (Integer oder Float) zurück. Die Funktion ist Teil der RPM-Erweiterung für PHP und steht zur Verfügung, wenn PHP mit der entsprechenden rpm-Bibliothek kompiliert wurde.

RPM-Makros sind Variablen im RPM-Paketsystem, die Konfigurationswerte oder systemspezifische Pfade enthalten. Über rpmexpandnumeric() lassen sich Makros abfragen, die einen numerischen Wert darstellen – beispielsweise Versionsnummern, Flags oder numerische Systemkonfigurationseinstellungen.

Im Gegensatz zu rpmexpand(), welche einen String zurückgibt, liefert rpmexpandnumeric() den Wert bereits in einem numerischen PHP-Typ, sodass direkte arithmetische Operationen oder Vergleiche ohne manuelle Konvertierung möglich sind.

Die Funktion ist vor allem in Build- und Deployment-Skripten nützlich, die Informationen aus der RPM-Makro-Umgebung des Systems auswerten müssen, etwa bei der automatisierten Softwarepaketierung.

Parameter

Name Typ Default Beschreibung
$macro Pflicht string Der Name des auszuwertenden RPM-Makros, zum Beispiel %{_rpm_version} oder ein anderes definiertes RPM-Makro. Die Syntax folgt der RPM-Makro-Notation.

Rückgabewert

Typ
int|float
Beschreibung
Gibt den numerischen Wert des ausgewerteten RPM-Makros zurück. Handelt es sich um eine Ganzzahl, wird ein int geliefert; bei Fließkommazahlen ein float. Ist das Makro unbekannt oder nicht numerisch auflösbar, kann 0 zurückgegeben werden.

Beispiele

Numerischen Wert eines RPM-Makros auslesen

<?php
// Gibt die numerische Version der RPM-Datenbankversion zurück
$value = rpmexpandnumeric('%{_dbapi}');
echo 'RPM DB API Version: ' . $value . PHP_EOL;

// Arithmetische Operation direkt möglich
if ($value >= 3) {
    echo 'Neue Datenbankschnittstelle wird verwendet.' . PHP_EOL;
} else {
    echo 'Ältere Datenbankschnittstelle.' . PHP_EOL;
}
RPM DB API Version: 3 Neue Datenbankschnittstelle wird verwendet.

Prüfung einer systemspezifischen RPM-Konfiguration

<?php
// Beispiel: Auslesen eines numerischen Build-Flags
$optflags = rpmexpandnumeric('%{_smp_ncpus_max}');
if ($optflags > 0) {
    echo 'Maximale CPU-Anzahl für SMP-Builds: ' . $optflags . PHP_EOL;
} else {
    echo 'Makro nicht gesetzt oder Wert ist 0.' . PHP_EOL;
}
Maximale CPU-Anzahl für SMP-Builds: 8

// Wichtig · Fallstricke

Verfügbarkeit: Diese Funktion ist nur verfügbar, wenn die PHP-rpm-Erweiterung installiert und aktiv ist. Auf Systemen ohne RPM-Unterstützung (z. B. Debian/Ubuntu ohne RPM-Paketmanager) steht sie nicht zur Verfügung.

Wird ein Makro angegeben, das nicht numerisch auflösbar ist oder nicht existiert, gibt die Funktion in der Regel 0 zurück – ein Fehler wird dabei nicht zwingend ausgelöst. Eine vorherige Prüfung mit rpmexpand() kann sinnvoll sein, um sicherzustellen, dass das Makro definiert ist.