Start · Sprachen · PHP · Referenz · rpmdbinfo

rpmdbinfo

Funktion

Gibt Informationen zu einem installierten RPM-Paket aus der lokalen RPM-Datenbank zurück.

Kategorie: misc

Signatur

rpmdbinfo(string $name): array|false

Beschreibung

rpmdbinfo() sucht in der lokalen RPM-Paketdatenbank nach einem Paket mit dem angegebenen Namen und liefert dessen Metadaten als assoziatives Array zurück. Ist das Paket nicht installiert, wird false zurückgegeben.

Die Funktion ist Teil der PHP-RPM-Erweiterung (rpmreader bzw. rpm) und steht nur auf Systemen zur Verfügung, auf denen RPM installiert und die entsprechende PHP-Erweiterung aktiviert ist (typischerweise RPM-basierte Linux-Distributionen wie Red Hat, CentOS, Fedora oder SUSE).

Die zurückgegebenen Paketinformationen umfassen unter anderem den vollständigen Paketnamen, die Version, die Release-Nummer, die Architektur, eine Kurzbeschreibung sowie das Installationsdatum. Dies kann nützlich sein, um Deployments, Systemvoraussetzungen oder Abhängigkeiten programmatisch zu prüfen.

Parameter

Name Typ Default Beschreibung
$name Pflicht string Der Name des RPM-Pakets, über das Informationen abgerufen werden sollen (z. B. "php" oder "openssl").

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array mit Paketinformationen zurück (z. B. Name, Version, Release, Arch, Summary, InstallTime u. a.), wenn das Paket gefunden wurde. Ist das Paket nicht installiert oder tritt ein Fehler auf, wird false zurückgegeben.

Beispiele

Paketinformationen eines installierten RPM-Pakets abrufen

<?php
$info = rpmdbinfo('openssl');

if ($info !== false) {
    foreach ($info as $package) {
        echo 'Name:        ' . $package['Name'] . PHP_EOL;
        echo 'Version:     ' . $package['Version'] . PHP_EOL;
        echo 'Release:     ' . $package['Release'] . PHP_EOL;
        echo 'Architektur: ' . $package['Arch'] . PHP_EOL;
        echo 'Beschreibung: ' . $package['Summary'] . PHP_EOL;
    }
} else {
    echo 'Paket nicht gefunden oder Fehler beim Zugriff auf die RPM-Datenbank.';
}
Name: openssl Version: 1.1.1k Release: 6.el8 Architektur: x86_64 Beschreibung: Utilities from the general purpose cryptography library with TLS implementation

Prüfen ob ein benötigtes Paket installiert ist

<?php
$required = ['curl', 'libxml2', 'openssl'];

foreach ($required as $pkg) {
    $info = rpmdbinfo($pkg);
    if ($info !== false) {
        echo "[OK] {$pkg} ist installiert (Version: " . $info[0]['Version'] . ")" . PHP_EOL;
    } else {
        echo "[FEHLT] {$pkg} ist NICHT installiert!" . PHP_EOL;
    }
}
[OK] curl ist installiert (Version: 7.61.1) [OK] libxml2 ist installiert (Version: 2.9.7) [OK] openssl ist installiert (Version: 1.1.1k)

// Wichtig · Fallstricke

Systemvoraussetzung: Die Funktion ist nur verfügbar, wenn die PHP-RPM-Erweiterung (rpm) installiert und aktiviert ist. Auf Debian/Ubuntu-basierten Systemen steht sie in der Regel nicht zur Verfügung.

Rückgabestruktur: Das Ergebnis ist ein Array von Arrays, da theoretisch mehrere Pakete mit demselben Namen (z. B. für verschiedene Architekturen) installiert sein können. Greife daher mit $info[0]['Version'] auf den ersten Treffer zu.

Berechtigungen: Der Zugriff auf die RPM-Datenbank erfordert grundsätzlich Leserechte auf /var/lib/rpm. In den meisten Standardkonfigurationen ist dies für den Webserver-Benutzer zulässig, sollte jedoch auf exponierten Systemen geprüft werden.

Siehe auch