Signatur
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
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;
}
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;
}
// 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.