PHP: полный мануал с примерами, функциями и ООП
Практический мануал PHP: от переменных и читаемого кода до безопасных форм, интеграций, базы данных и ООП на примере магазина. Учебный маршрут, поиск функций, подробные примеры, разбор ошибок и исходники для скачивания.

Дерево руководства
Глава 439 · От первой операции до полного справочника
RpmInfo: пакеты RPM, версии, база пакетов и диагностика
Прочитать метаданные RPM без установки, сравнить версии, раскрыть макросы и проверить установленный пакет.
RpmInfo: читать RPM без установки
Расширение получает сведения из отдельного RPM-файла и из базы уже установленных пакетов. Начиная с rpminfo 1.0.0 при librpm 4.13+ также доступен потоковый wrapper для чтения содержимого RPM.
Официальная страница: RpmInfo.
Дерево всех функций RpmInfo
Справочник разделяет чтение файла, поиск в базе, сравнение EVR, работу с макросами и символическими ссылками внутри пакета.
| Операция | Официальное назначение |
|---|---|
rpmaddtag | Add tag retrieved in query |
rpmdbinfo | Get information from installed RPM |
rpmdbsearch | Search RPM packages |
rpmdefine | Define or change a RPM macro value |
rpmexpand | Retrieve expanded value of a RPM macro |
rpmexpandnumeric | Retrieve numerical value of a RPM macro |
rpmgetsymlink | Get target of a symlink |
rpminfo | Get information from a RPM file |
rpmvercmp | RPM version comparison |
Официальная страница: RpmInfo Functions.
Полный набор тегов и констант RpmInfo
Большой официальный список отражает теги заголовка RPM: имя, EVR, архитектуру, зависимости, файлы, подписи, changelog и служебные значения. Не все теги присутствуют в каждом пакете, поэтому чтение строят через проверку ключа, а не через безусловный индекс массива.
| Константа | Как читать в коде |
|---|---|
RPMVERSION | System librpm version. |
RPMSENSE_ANY | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_LESS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_GREATER | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_EQUAL | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_POSTTRANS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_PREREQ | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_PRETRANS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_INTERP | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_SCRIPT_PRE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_SCRIPT_POST | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_SCRIPT_PREUN | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_SCRIPT_POSTUN | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_SCRIPT_VERIFY | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_FIND_REQUIRES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_FIND_PROVIDES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_TRIGGERIN | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_TRIGGERUN | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_TRIGGERPOSTUN | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_MISSINGOK | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_RPMLIB | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_TRIGGERPREIN | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_KEYRING | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMSENSE_CONFIG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMMIRE_DEFAULT | Search pattern is a regular expression with \. , .* , and ^...$ added. |
RPMMIRE_STRCMP | Search pattern is a string , using strcmp(3) . |
RPMMIRE_REGEX | Search pattern is a regular expression, using regcomp(3) . |
RPMMIRE_GLOB | Search pattern is a glob expression, using fnmatch(3) . |
RPMTAG_ARCH | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ARCHSUFFIX | Requires librpm = 4.18 |
RPMTAG_ARCHIVESIZE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_BASENAMES | Name (not path) of files, with database index. |
RPMTAG_BUGURL | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_BUILDARCHS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_BUILDHOST | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_BUILDTIME | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_C | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_CHANGELOGNAME | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_CHANGELOGTEXT | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_CHANGELOGTIME | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_CLASSDICT | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_CONFLICTFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_CONFLICTNAME | Conflicting dependencies, with database index. |
RPMTAG_CONFLICTNEVRS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_CONFLICTS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_CONFLICTVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_COOKIE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_DBINSTANCE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_DEPENDSDICT | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_DESCRIPTION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_DIRINDEXES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_DIRNAMES | Directory of files, with database index. |
RPMTAG_DISTRIBUTION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_DISTTAG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_DISTURL | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_DSAHEADER | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_E | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ENCODING | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ENHANCEFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ENHANCENAME | Weak dependencies, with database index, requires librpm = 4.13. |
RPMTAG_ENHANCENEVRS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ENHANCES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ENHANCEVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_EPOCH | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_EPOCHNUM | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_EVR | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_EXCLUDEARCH | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_EXCLUDEOS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_EXCLUSIVEARCH | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_EXCLUSIVEOS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILECAPS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILECLASS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILECOLORS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILECONTEXTS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEDEPENDSN | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEDEPENDSX | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEDEVICES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEDIGESTALGO | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEDIGESTS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEGROUPNAME | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEINODES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILELANGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILELINKTOS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEMD5S | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEMODES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEMTIMES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILENAMES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILENLINKS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEPROVIDE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILERDEVS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEREQUIRE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILESIGNATURELENGTH | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILESIGNATURES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILESIZES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILESTATES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILETRIGGERCONDS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILETRIGGERFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILETRIGGERINDEX | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILETRIGGERNAME | File trigger name, with database index, requires librpm = 4.13. |
RPMTAG_FILETRIGGERPRIORITIES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILETRIGGERSCRIPTFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILETRIGGERSCRIPTPROG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILETRIGGERSCRIPTS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILETRIGGERTYPE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILETRIGGERVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEUSERNAME | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FILEVERIFYFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_FSCONTEXTS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_GIF | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_GROUP | Group of the package, with database index. |
RPMTAG_HDRID | Deprecated, use RPMTAG_SHA1HEADER instead. Removed in librpm 6. |
RPMTAG_HEADERCOLOR | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_HEADERI18NTABLE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_HEADERIMAGE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_HEADERIMMUTABLE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_HEADERREGIONS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_HEADERSIGNATURES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ICON | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_INSTALLCOLOR | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_INSTALLTID | Installation transaction ID, with database index. |
RPMTAG_INSTALLTIME | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_INSTFILENAMES | Path of files, with database index. |
RPMTAG_INSTPREFIXES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_LICENSE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_LONGARCHIVESIZE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_LONGFILESIZES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_LONGSIGSIZE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_LONGSIZE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_MODULARITYLABEL | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_N | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_NAME | Package name, with database index. |
RPMTAG_NEVR | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_NEVRA | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_NOPATCH | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_NOSOURCE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_NVR | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_NVRA | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_O | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OBSOLETEFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OBSOLETENAME | Obsoleted packages, with database index. |
RPMTAG_OBSOLETENEVRS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OBSOLETES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OBSOLETEVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OLDENHANCES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OLDENHANCESFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OLDENHANCESNAME | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OLDENHANCESVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OLDFILENAMES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OLDSUGGESTS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OLDSUGGESTSFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OLDSUGGESTSNAME | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OLDSUGGESTSVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OPTFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ORDERFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ORDERNAME | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ORDERVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ORIGBASENAMES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ORIGDIRINDEXES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ORIGDIRNAMES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_ORIGFILENAMES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_OS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_P | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PACKAGER | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PATCH | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PATCHESFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PATCHESNAME | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PATCHESVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PAYLOADCOMPRESSOR | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PAYLOADDIGEST | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PAYLOADDIGESTALT | With librpm = 4.16. |
RPMTAG_PAYLOADDIGESTALGO | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PAYLOADFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PAYLOADFORMAT | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PKGID | Deprecated, use RPMTAG_SIGMD5 instead. Removed in librpm 6. |
RPMTAG_PLATFORM | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POLICIES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POLICYFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POLICYNAMES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POLICYTYPES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POLICYTYPESINDEXES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POSTIN | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POSTINFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POSTINPROG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POSTTRANS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POSTTRANSFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POSTTRANSPROG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POSTUN | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POSTUNFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POSTUNPROG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_POSTUNTRANS | Requires librpm = 4.19 |
RPMTAG_POSTUNTRANSFLAGS | Requires librpm = 4.19 |
RPMTAG_POSTUNTRANSPROG | Requires librpm = 4.19 |
RPMTAG_PREFIXES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PREIN | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PREINFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PREINPROG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PRETRANS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PRETRANSFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PRETRANSPROG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PREUN | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PREUNFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PREUNPROG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PREUNTRANS | Requires librpm = 4.19 |
RPMTAG_PREUNTRANSFLAGS | Requires librpm = 4.19 |
RPMTAG_PREUNTRANSPROG | Requires librpm = 4.19 |
RPMTAG_PROVIDEFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PROVIDENAME | Provided dependencies, with database index. |
RPMTAG_PROVIDENEVRS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PROVIDES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PROVIDEVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_PUBKEYS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_R | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_RECOMMENDFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_RECOMMENDNAME | Recommended weak dependencies, with database index, requires librpm = 4.13. |
RPMTAG_RECOMMENDNEVRS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_RECOMMENDS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_RECOMMENDVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_RECONTEXTS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_RELEASE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_REMOVETID | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_REQUIREFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_REQUIRENAME | Required dependencies, with database index. |
RPMTAG_REQUIRENEVRS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_REQUIRES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_REQUIREVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_RPMVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_RSAHEADER | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SHA1HEADER | SHA1 signature, with database index. |
RPMTAG_SHA256HEADER | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SIGGPG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SIGMD5 | MD5 signature, with database index. |
RPMTAG_SIGPGP | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SIGSIZE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SIZE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SOURCE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SOURCEPACKAGE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SOURCEPKGID | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SOURCERPM | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SPEC | Requires librpm = 4.18 |
RPMTAG_SUGGESTFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SUGGESTNAME | Suggested weak dependencies, with database index, requires librpm = 4.13. |
RPMTAG_SUGGESTNEVRS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SUGGESTS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SUGGESTVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SUMMARY | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SUPPLEMENTFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SUPPLEMENTNAME | Weak dependencies, with database index, requires librpm = 4.13. |
RPMTAG_SUPPLEMENTNEVRS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SUPPLEMENTS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SUPPLEMENTVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_SYSUSERS | Requires librpm = 4.19 |
RPMTAG_TRANSFILETRIGGERCONDS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRANSFILETRIGGERFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRANSFILETRIGGERINDEX | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRANSFILETRIGGERNAME | Transaction file trigger name, with database index, requires librpm = 4.13. |
RPMTAG_TRANSFILETRIGGERPRIORITIES | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRANSFILETRIGGERSCRIPTFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRANSFILETRIGGERSCRIPTPROG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRANSFILETRIGGERSCRIPTS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRANSFILETRIGGERTYPE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRANSFILETRIGGERVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRANSLATIONURL | Requires librpm = 4.18 |
RPMTAG_TRIGGERCONDS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRIGGERFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRIGGERINDEX | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRIGGERNAME | Trigger name, with database index. |
RPMTAG_TRIGGERSCRIPTFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRIGGERSCRIPTPROG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRIGGERSCRIPTS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRIGGERTYPE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_TRIGGERVERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_UPSTREAMRELEASES | Requires librpm = 4.18 |
RPMTAG_URL | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_V | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_VCS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_VENDOR | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_VERBOSE | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_VERIFYSCRIPT | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_VERIFYSCRIPTFLAGS | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_VERIFYSCRIPTPROG | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_VERITYSIGNATUREALGO | With librpm = 4.17. |
RPMTAG_VERITYSIGNATURES | With librpm = 4.17. |
RPMTAG_VERSION | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
RPMTAG_XPM | Именованный режим расширения; точный смысл зависит от функции, которая принимает эту константу. |
В зафиксированном официальном источнике найдено констант: 285; у 40 из них есть отдельное официальное описание или ограничение версии, и оно сохранено в таблице дословно. Для прикладного отчёта выбирают небольшой разрешённый набор тегов и отдельно сохраняют неизвестные поля для диагностики.
Официальная страница: Predefined Constants.
Установка rpminfo через PECL
Официальный способ — PECL-пакет rpminfo. Сборщику нужны заголовки и библиотека rpm, а процессу PHP — доступ к динамической библиотеке и, для запросов к базе, к базе RPM. После включения проверяют extension_loaded('rpminfo').
Официальная страница: Installation via PECL.
Требование: librpm 4.11.3 или новее
Официальный минимум — librpm 4.11.3. Возможности stream wrapper зависят от более новой библиотеки: для заявленного поведения требуется librpm 4.13+ и rpminfo 1.0.0+.
Официальная страница: Requirements.
Подготовка RpmInfo: файл, база и версия
| Задача | Предварительная проверка |
|---|---|
| Локальный RPM | Файл существует, читается, имеет ожидаемый хеш и допустимый размер |
| База пакетов | Код выполняется на RPM-системе и имеет доступ к её rpmdb |
| Сравнение версий | Передаются EVR-строки; обычное лексикографическое сравнение не используется |
| Макросы | Значение рассматривается как RPM-макрос, а не как команда оболочки |
Официальная страница: Installing/Configuring.
RPM-файл, база установленных пакетов и EVR — три разные задачи
| Задача | Инструмент |
|---|---|
| Прочитать локальный файл до установки | rpminfo() |
| Найти уже установленный пакет | rpmdbinfo() или rpmdbsearch() |
| Сравнить epoch:version-release | rpmvercmp() |
| Раскрыть системный RPM-макрос | rpmexpand() / rpmexpandnumeric() |
Практика: решить, нужен ли апдейт
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo и librpm');
}
echo rpmvercmp('1.0-4', '1.0-5'), PHP_EOL;
echo rpmvercmp('2:1.0-1', '1:9.9-9'), PHP_EOL;
var_dump(rpmvercmp('1.0-5', '1.0-5', 'eq'));
Epoch имеет больший приоритет, чем version и release. Поэтому сравнивать EVR через оператор >, version_compare() или сортировку строк нельзя. Точные значения этого примера основаны на договоре rpmvercmp; runtime расширения в текущем Windows-окружении не заявлен.
Что должно получиться в совместимом окружении: -1
1
bool(true)
| Проблема из практики | Как она закрыта в руководстве |
|---|---|
| Расширение или librpm отсутствует, а метаданные пакета пытаются угадать по переименованному файлу. | Пример требует реальный RPM fixture, читает теги из заголовка и не выдаёт имя файла за подтверждённые метаданные. |
| RPM-версии сравнивают как десятичные числа или обычные строки и получают неверный порядок. | Сценарий использует rpmvercmp() и отдельно объясняет роль epoch, version и release. |
Практика: проверить локальный пакет и обработать отказ
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo и librpm');
}
$path = __DIR__ . '/packages/service.rpm';
if (!is_file($path)) {
throw new RuntimeException('RPM-файл не найден');
}
$error = '';
$info = rpminfo($path, false, $error);
if (!is_array($info)) {
throw new RuntimeException($error !== '' ? $error : 'RPM не прочитан');
}
$required = ['Name', 'Version', 'Release', 'Arch'];
foreach ($required as $key) {
if (!array_key_exists($key, $info)) {
throw new RuntimeException("В RPM нет ожидаемого поля {$key}");
}
}
printf(
"package=%s evr=%s-%s arch=%s\n",
$info['Name'],
$info['Version'],
$info['Release'],
$info['Arch']
);
Это контекстный пример для реального RPM fixture: значения заранее не выдумываются и берутся только из заголовка пакета. Для runtime-доказательства нужен сохранённый RPM с известным хешем; до его появления заявлен только lint.
Что должно получиться в совместимом окружении: package=
Перед развёртыванием к этим полям добавляют проверку архитектуры, ожидаемого имени, разрешённого репозитория и криптографической подписи подходящим системным инструментом. rpminfo() читает метаданные, но сам факт успешного чтения не делает пакет доверенным.
Как превратить отдельные вызовы в рабочий сервис
Спрячьте нативное расширение за одним прикладным классом: на вход он получает проверенную модель, внутри вызывает операции этой главы, а наружу возвращает путь или байты готового документа. Так HTTP-контроллер не знает о ресурсах, временных файлах и константах расширения.
Следующий шаг: добавить временный каталог на один запрос, журнал ошибок без секретных данных, лимит размера/времени и независимую проверку результата другим инструментом.
Функции и методы этой темы
Откройте карточку, чтобы увидеть договор функции, примеры, ограничения и связанные инструменты.
rpmaddtagДобавить дополнительный RPM-тег в результат подробного чтения пакета.
PECL rpminfo >= 0.5.0 · rpminfo; librpm
rpmaddtag(int $tag): boolДобавить дополнительный RPM-тег в результат подробного чтения пакета.
Официальная сигнатура. rpmaddtag(int $tag): bool.
Доступность. Точная строка официального versions.xml: PECL rpminfo >= 0.5.0.
| Параметр | Что приходит и зачем |
|---|---|
int $tag | Числовой RPMTAG_*, который нужно добавить в подробный результат. Точная формулировка PHP ManualOne of RPMTAG_ * constant. |
Возврат. Тип bool. Официальный текст: Return Values Returns true on success.
Где увидеть в целой задаче. проверку реального RPM-файла до развёртывания. Что знать до примера: переменные, вызов функций и возврат, массивы, исключения и обработка отказа, файлы и каталоги.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$result = rpmaddtag(RPMTAG_SHA256HEADER);
var_dump($result);
rpmaddtag: показан минимальный договор и реальный тип результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: bool(true) при успешной операции.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$result = rpmaddtag(RPMTAG_LONGFILESIZES);
var_dump($result);
rpmaddtag: второй пример использует данные развёртывания и обрабатывает отсутствие результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: bool(true) при успешной операции.
Отказ и граница проверки. успех подтверждает только строгое true. Проверьте поддержку тега установленной версией librpm и наличие ключа в возвращённом массиве.
Полный официальный текст карточки на английском
Purpose: Add tag retrieved in query
Description Add an additional retrieved tag in subsequent queries.
Return: Return Values Returns true on success.
Связанные операции: rpminfo, rpmdbinfo, rpmdbsearch.
rpmdbinfoПолучить сведения об установленном RPM-пакете по имени и версии.
PECL rpminfo >= 0.2.0 · rpminfo; librpm
rpmdbinfo(string $nevr, bool $full = false): array|nullПолучить сведения об установленном RPM-пакете по имени и версии.
Официальная сигнатура. rpmdbinfo(string $nevr, bool $full = false): array|null.
Доступность. Точная строка официального versions.xml: PECL rpminfo >= 0.2.0.
| Параметр | Что приходит и зачем |
|---|---|
string $nevr | Имя/epoch/version/release установленного RPM-пакета в форме, которую принимает rpmdb. Точная формулировка PHP ManualName with optional epoch, version and release. |
bool $full = false | true запрашивает расширенный набор RPM-тегов, false — сокращённый. Точная формулировка PHP ManualIf true all information headers for the file are retrieved, else only a minimal set. |
Возврат. Тип array|null. Официальный текст: Return Values An array of array of information, or null on error.
Где увидеть в целой задаче. проверку реального RPM-файла до развёртывания. Что знать до примера: переменные, вызов функций и возврат, массивы, исключения и обработка отказа, файлы и каталоги.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$result = rpmdbinfo('php-cli', false);
if ($result === null) { throw new RuntimeException('Запись в rpmdb не найдена'); }
echo 'records=', count($result), PHP_EOL;
rpmdbinfo: показан минимальный договор и реальный тип результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: records=<количество найденных записей>
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
rpmaddtag(RPMTAG_INSTALLTIME);
$result = rpmdbinfo('php-cli', true);
if (!is_array($result) || $result === []) { throw new RuntimeException('php-cli не найден в rpmdb'); }
usort($result, static fn(array $a, array $b): int => ((int) ($b['Installtime'] ?? 0)) <=> ((int) ($a['Installtime'] ?? 0)));
$active = $result[0];
foreach (['Name', 'Version', 'Release', 'Arch'] as $key) { if (!isset($active[$key])) { throw new RuntimeException("В rpmdb нет {$key}"); } }
printf("installed=%s-%s-%s.%s candidates=%d\n", $active['Name'], $active['Version'], $active['Release'], $active['Arch'], count($result));
rpmdbinfo: Из rpmdb выбирается фактически установленная запись, проверяются ключевые теги и явно учитывается возможность нескольких кандидатов. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: installed=<Name-Version-Release.Arch> candidates=<число записей>
Отказ и граница проверки. null нужно отличать от пустого результата. Нужны RPM-система, доступная rpmdb и ожидаемый search tag; отсутствие записи не равно повреждению базы.
Полный официальный текст карточки на английском
Purpose: Get information from installed RPM
Description Retrieve information about an installed package, from the system RPM database.
Return: Return Values An array of array of information, or null on error.
Связанные операции: rpmaddtag.
rpmdbsearchНайти установленные RPM-пакеты по имени, файлу или другому тегу.
PECL rpminfo >= 0.3.0 · rpminfo; librpm
rpmdbsearch(string $pattern, int $rpmtag = RPMTAG_NAME, int $rpmmire = -1, bool $full = false): array|nullНайти установленные RPM-пакеты по имени, файлу или другому тегу.
Официальная сигнатура. rpmdbsearch(string $pattern, int $rpmtag = RPMTAG_NAME, int $rpmmire = -1, bool $full = false): array|null.
Доступность. Точная строка официального versions.xml: PECL rpminfo >= 0.3.0.
| Параметр | Что приходит и зачем |
|---|---|
string $pattern | Шаблон поиска по базе RPM, а не регулярное выражение PHP. Точная формулировка PHP ManualValue to search for. |
int $rpmtag = RPMTAG_NAME | RPMTAG_*, по которому выполняется поиск (имя, файл или другой тег). Точная формулировка PHP ManualSearch criterion, which is one of the RPMTAG_ * constants. |
int $rpmmire = -1 | Режим сопоставления RPMMIRE_* для поиска по rpmdb. Точная формулировка PHP ManualPattern type, which is one of the RPMMIRE_ * constants. When [lt] 0 the criterion must equal the value, and database index is used if possible. |
bool $full = false | true запрашивает расширенный набор RPM-тегов, false — сокращённый. Точная формулировка PHP ManualIf true all information headers for the file are retrieved, else only a minimal set. |
Возврат. Тип array|null. Официальный текст: Return Values An array of array of information, or null on error.
Где увидеть в целой задаче. проверку реального RPM-файла до развёртывания. Что знать до примера: переменные, вызов функций и возврат, массивы, исключения и обработка отказа, файлы и каталоги.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$result = rpmdbsearch('php*');
if ($result === null) { throw new RuntimeException('Запись в rpmdb не найдена'); }
echo 'records=', count($result), PHP_EOL;
rpmdbsearch: показан минимальный договор и реальный тип результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: records=<количество найденных записей>
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$result = rpmdbsearch('/usr/bin/php', RPMTAG_BASENAMES);
if ($result === null) { throw new RuntimeException('Запись в rpmdb не найдена'); }
echo 'records=', count($result), PHP_EOL;
rpmdbsearch: второй пример использует данные развёртывания и обрабатывает отсутствие результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: records=<количество найденных записей>
Отказ и граница проверки. null нужно отличать от пустого результата. Нужны RPM-система, доступная rpmdb и ожидаемый search tag; отсутствие записи не равно повреждению базы.
Полный официальный текст карточки на английском
Purpose: Search RPM packages
Description Search packages in the system RPM database.
Return: Return Values An array of array of information, or null on error.
Связанные операции: rpmaddtag.
rpmdefineОпределить RPM-макрос для последующего раскрытия путей и выражений.
PECL rpminfo >= 1.2.0 · rpminfo; librpm
rpmdefine(string $text): boolОпределить RPM-макрос для последующего раскрытия путей и выражений.
Официальная сигнатура. rpmdefine(string $text): bool.
Доступность. Точная строка официального versions.xml: PECL rpminfo >= 1.2.0.
| Параметр | Что приходит и зачем |
|---|---|
string $text | Текст, который попадёт в документ или будет измерен. Точная формулировка PHP ManualMacro name, options, body. |
Возврат. Тип bool. Официальный текст: Return Values Returns true on success.
Где увидеть в целой задаче. сравнение EVR и работу с RPM-макросами. Что знать до примера: переменные, вызов функций и возврат, массивы, исключения и обработка отказа, файлы и каталоги.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$result = rpmdefine('_aen_root /srv/aen');
var_dump($result);
rpmdefine: показан минимальный договор и реальный тип результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: bool(true) при успешной операции.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$result = rpmdefine('_aen_release 42');
var_dump($result);
$expanded = rpmexpand('%{_aen_release}');
if ($expanded !== '42') { throw new RuntimeException('RPM-макрос не раскрылся'); }
echo 'expanded=', $expanded, PHP_EOL;
rpmdefine: второй пример использует данные развёртывания и обрабатывает отсутствие результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: bool(true) при успешной операции. После определения макрос раскрывается в 42.
Отказ и граница проверки. успех подтверждает только строгое true. Проверьте синтаксис и область действия макроса; раскрытая строка не является командой оболочки и не должна исполняться автоматически.
Полный официальный текст карточки на английском
Purpose: Define or change a RPM macro value
Description Define or change a RPM macro value. This can be used to select the database path and backend to use instead of system default one.
Return: Return Values Returns true on success.
rpmexpandРаскрыть строку с RPM-макросами в итоговый текст.
PECL rpminfo >= 1.2.0 · rpminfo; librpm
rpmexpand(string $text): stringРаскрыть строку с RPM-макросами в итоговый текст.
Официальная сигнатура. rpmexpand(string $text): string.
Доступность. Точная строка официального versions.xml: PECL rpminfo >= 1.2.0.
| Параметр | Что приходит и зачем |
|---|---|
string $text | Текст, который попадёт в документ или будет измерен. Точная формулировка PHP ManualText with RPM macros to expand. |
Возврат. Тип string. Официальный текст: Return Values A string with concatenated macro expansions.
Где увидеть в целой задаче. сравнение EVR и работу с RPM-макросами. Что знать до примера: переменные, вызов функций и возврат, массивы, исключения и обработка отказа, файлы и каталоги.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$result = rpmexpand('%{_bindir}');
if ($result === null) { throw new RuntimeException('Значение не получено'); }
echo $result, PHP_EOL;
rpmexpand: показан минимальный договор и реальный тип результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: Строка раскрытого макроса или цель символической ссылки; пустая строка для rpmgetsymlink означает «не ссылка».
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
rpmdefine('_aen_root /srv/aen');
rpmdefine('_aen_release 42');
$result = rpmexpand('%{_aen_root}/releases/%{_aen_release}');
if ($result === null) { throw new RuntimeException('Значение не получено'); }
echo $result, PHP_EOL;
rpmexpand: второй пример использует данные развёртывания и обрабатывает отсутствие результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: Строка раскрытого макроса или цель символической ссылки; пустая строка для rpmgetsymlink означает «не ссылка».
Отказ и граница проверки. сначала проверяется заявленный тип результата. Проверьте синтаксис и область действия макроса; раскрытая строка не является командой оболочки и не должна исполняться автоматически.
Полный официальный текст карточки на английском
Purpose: Retrieve expanded value of a RPM macro
Description Retrieve expanded value of a RPM macro.
Return: Return Values A string with concatenated macro expansions.
Связанные операции: rpmexpandnumeric.
rpmexpandnumericРаскрыть RPM-выражение и получить целое число.
PECL rpminfo >= 1.2.0 · rpminfo; librpm
rpmexpandnumeric(string $text): intРаскрыть RPM-выражение и получить целое число.
Официальная сигнатура. rpmexpandnumeric(string $text): int.
Доступность. Точная строка официального versions.xml: PECL rpminfo >= 1.2.0.
| Параметр | Что приходит и зачем |
|---|---|
string $text | Текст, который попадёт в документ или будет измерен. Точная формулировка PHP ManualText with RPM macros to expand. |
Возврат. Тип int. Официальный текст: Return Values Macro expansion as a int . Boolean values ( Y or y returns 1, N or n returns 0 ) are permitted as well. An undefined macro returns 0 .
Где увидеть в целой задаче. сравнение EVR и работу с RPM-макросами. Что знать до примера: переменные, вызов функций и возврат, массивы, исключения и обработка отказа, файлы и каталоги.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$result = rpmexpandnumeric('1');
var_dump($result);
rpmexpandnumeric: показан минимальный договор и реальный тип результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: Для сравнения без operator: -1, 0 или 1; с operator: bool. Для numeric expansion: int.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
rpmdefine('_aen_release 42');
$result = rpmexpandnumeric('%{?_aen_release}');
var_dump($result);
rpmexpandnumeric: второй пример использует данные развёртывания и обрабатывает отсутствие результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: Для сравнения без operator: -1, 0 или 1; с operator: bool. Для numeric expansion: int.
Отказ и граница проверки. сначала проверяется заявленный тип результата. Проверьте синтаксис и область действия макроса; раскрытая строка не является командой оболочки и не должна исполняться автоматически.
Полный официальный текст карточки на английском
Purpose: Retrieve numerical value of a RPM macro
Description Retrieve numerical value of a RPM macro.
Return: Return Values Macro expansion as a int . Boolean values ( Y or y returns 1, N or n returns 0 ) are permitted as well. An undefined macro returns 0 .
Связанные операции: rpmexpand.
rpmgetsymlinkУзнать цель символической ссылки из содержимого RPM-пакета.
PECL rpminfo >= 1.1.0 · rpminfo; librpm
rpmgetsymlink(string $path, string $name): string|nullУзнать цель символической ссылки из содержимого RPM-пакета.
Официальная сигнатура. rpmgetsymlink(string $path, string $name): string|null.
Доступность. Точная строка официального versions.xml: PECL rpminfo >= 1.1.0.
| Параметр | Что приходит и зачем |
|---|---|
string $path | Путь к локальному файлу; проверяйте существование и не позволяйте выход из разрешённого каталога. Точная формулировка PHP ManualPath of the RPM file. |
string $name | Имя параметра, макроса, цвета или другого объекта по договору выбранной функции. Точная формулировка PHP ManualName of the symlink file. |
Возврат. Тип string|null. Официальный текст: Return Values A string with target of the symlink, null on error, or an empty string if not a symlink.
Где увидеть в целой задаче. проверку реального RPM-файла до развёртывания. Что знать до примера: переменные, вызов функций и возврат, массивы, исключения и обработка отказа, файлы и каталоги.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$rpmFixture = __DIR__ . '/fixtures/service.rpm';
if (!is_file($rpmFixture)) { throw new RuntimeException('Нужен RPM fixture с известным хешем'); }
$result = rpmgetsymlink($rpmFixture, 'usr/bin/service');
if ($result === null) { throw new RuntimeException('Значение не получено'); }
echo $result, PHP_EOL;
rpmgetsymlink: показан минимальный договор и реальный тип результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: Строка раскрытого макроса или цель символической ссылки; пустая строка для rpmgetsymlink означает «не ссылка».
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$rpmFixture = __DIR__ . '/fixtures/service.rpm';
if (!is_file($rpmFixture)) { throw new RuntimeException('Нужен RPM fixture с известным хешем'); }
$result = rpmgetsymlink($rpmFixture, 'etc/service/current');
if ($result === null) { throw new RuntimeException('Значение не получено'); }
echo $result, PHP_EOL;
if ($result === '') { echo 'entry=regular-file', PHP_EOL; }
else { echo 'symlink-target=', $result, PHP_EOL; }
rpmgetsymlink: второй пример использует данные развёртывания и обрабатывает отсутствие результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: Строка раскрытого макроса или цель символической ссылки; пустая строка для rpmgetsymlink означает «не ссылка». Пустая строка означает обычный файл; непустая — цель ссылки.
Отказ и граница проверки. null нужно отличать от пустого результата. Проверьте реальный RPM fixture, его хеш и читаемость; имя файла не доказывает теги и наличие указанной ссылки внутри пакета.
Полный официальный текст карточки на английском
Purpose: Get target of a symlink
Description Get target of a symlink.
Return: Return Values A string with target of the symlink, null on error, or an empty string if not a symlink.
rpminfoПрочитать метаданные RPM-файла без его установки в систему.
PECL rpminfo >= 0.1.0 · rpminfo; librpm
rpminfo(string $path, bool $full = false, string &$error = ?): array|nullПрочитать метаданные RPM-файла без его установки в систему.
Официальная сигнатура. rpminfo(string $path, bool $full = false, string &$error = ?): array|null.
Доступность. Точная строка официального versions.xml: PECL rpminfo >= 0.1.0.
| Параметр | Что приходит и зачем |
|---|---|
string $path | Путь к локальному файлу; проверяйте существование и не позволяйте выход из разрешённого каталога. Точная формулировка PHP ManualPath of the RPM file. |
bool $full = false | true запрашивает расширенный набор RPM-тегов, false — сокращённый. Точная формулировка PHP ManualIf true all information headers for the file are retrieved, else only a minimal set. |
string &$error = значение по умолчанию | Переменная по ссылке: расширение запишет сюда текст ошибки чтения RPM. Точная формулировка PHP ManualIf provided, will receive the possible error message, and will avoid a runtime warning. |
Возврат. Тип array|null. Официальный текст: Return Values An array of information, or null on error.
Где увидеть в целой задаче. проверку реального RPM-файла до развёртывания. Что знать до примера: переменные, вызов функций и возврат, массивы, исключения и обработка отказа, файлы и каталоги.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$rpmFixture = __DIR__ . '/fixtures/service.rpm';
if (!is_file($rpmFixture)) { throw new RuntimeException('Нужен RPM fixture с известным хешем'); }
$error = '';
$result = rpminfo($rpmFixture, false, $error);
if ($result === null) { throw new RuntimeException($error !== '' ? $error : 'RPM не прочитан'); }
echo 'records=', count($result), PHP_EOL;
rpminfo: показан минимальный договор и реальный тип результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: records=<количество найденных записей>
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$rpmFixture = __DIR__ . '/fixtures/service.rpm';
if (!is_file($rpmFixture)) { throw new RuntimeException('Нужен RPM fixture с известным хешем'); }
$error = '';
$result = rpminfo($rpmFixture, true, $error);
if (!is_array($result)) { throw new RuntimeException($error !== '' ? $error : 'RPM не прочитан'); }
$required = ['Name', 'Version', 'Release', 'Arch'];
foreach ($required as $key) { if (!array_key_exists($key, $result)) { throw new RuntimeException("В RPM нет {$key}"); } }
$identity = sprintf('%s-%s-%s.%s', $result['Name'], $result['Version'], $result['Release'], $result['Arch']);
echo 'package=', $identity, PHP_EOL;
echo 'fixture-sha256=', hash_file('sha256', $rpmFixture), PHP_EOL;
rpminfo: Полный заголовок локального RPM проверяется на обязательные поля и связывается с хешем конкретного fixture — имя файла не принимается за доказательство содержимого. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: package=<Name-Version-Release.Arch>
fixture-sha256=<64 hex-символа>
Отказ и граница проверки. null нужно отличать от пустого результата. Проверьте реальный RPM fixture, его хеш и читаемость; имя файла не доказывает теги и наличие указанной ссылки внутри пакета.
Полный официальный текст карточки на английском
Purpose: Get information from a RPM file
Description Retrieve information about a local file, a RPM package.
Return: Return Values An array of information, or null on error.
Связанные операции: rpmaddtag.
rpmvercmpСравнить две версии RPM с учётом epoch, version и release.
PECL rpminfo >= 0.1.0 · rpminfo; librpm
rpmvercmp(string $evr1, string $evr2, string|null $operator = null): int|boolСравнить две версии RPM с учётом epoch, version и release.
Официальная сигнатура. rpmvercmp(string $evr1, string $evr2, string|null $operator = null): int|bool.
Доступность. Точная строка официального versions.xml: PECL rpminfo >= 0.1.0.
| Параметр | Что приходит и зачем |
|---|---|
string $evr1 | Первая RPM-версия в форме epoch:version-release. Точная формулировка PHP ManualFirst epoch:version-release string. |
string $evr2 | Вторая RPM-версия для сравнения по правилам RPM. Точная формулировка PHP ManualSecond epoch:version-release string. |
string|null $operator = null | Необязательное отношение lt/le/eq/ne/ge/gt; при нём rpmvercmp возвращает bool. Точная формулировка PHP ManualAn optional operator. The possible operators are: [lt] lt [lt]= le [gt] gt [gt]= ge == = eq != [lt][gt] ne . This parameter is case-sensitive, values should be lowercase. |
Возврат. Тип int|bool. Официальный текст: Return Values Returns -1 if evr1 is less than evr2 , 1 if evr1 is greater than evr2 , and 0 if they are equal. When using the optional operator argument, the function will return true if the relationship is the one specified by the operator, false otherwise.
Где увидеть в целой задаче. сравнение EVR и работу с RPM-макросами. Что знать до примера: переменные, вызов функций и возврат, массивы, исключения и обработка отказа, файлы и каталоги.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$result = rpmvercmp('1.0-4', '1.0-5');
var_dump($result);
rpmvercmp: показан минимальный договор и реальный тип результата. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: Для сравнения без operator: -1, 0 или 1; с operator: bool. Для numeric expansion: int.
<?php
declare(strict_types=1);
if (!extension_loaded('rpminfo')) {
throw new RuntimeException('Нужно расширение rpminfo');
}
$installed = '1:2.4.1-3';
$candidate = '1:2.5.0-1';
$upgradeNeeded = rpmvercmp($installed, $candidate, 'lt');
if (!is_bool($upgradeNeeded)) { throw new RuntimeException('Ожидался bool для оператора lt'); }
$ordering = rpmvercmp($installed, $candidate);
if ($ordering !== -1 || $upgradeNeeded !== true) { throw new RuntimeException('EVR сравнивается неожиданно'); }
echo $upgradeNeeded ? 'decision=upgrade' : 'decision=keep', PHP_EOL;
echo 'ordering=', $ordering, PHP_EOL;
rpmvercmp: Сервис обновления принимает реальное решение по EVR: оператор lt даёт bool, а второй вызов подтверждает порядок значением -1. Выполнение требует Linux/RPM-окружение с rpminfo; локально заявлен только lint.
Что должно получиться в совместимом окружении: decision=upgrade
ordering=-1
Отказ и граница проверки. сначала проверяется заявленный тип результата. Передавайте две EVR-строки и поддерживаемый оператор; не заменяйте RPM-семантику version_compare() или сравнением строк.
| Версия | Изменение API |
|---|---|
| PECL rpminfo 0.7.0 | Добавлен необязательный параметр $operator. До этой версии функция возвращала только -1, 0 или 1. |
Полный официальный текст карточки на английском
Purpose: RPM version comparison
Description Compare two RPM package versions.
Return: Return Values Returns -1 if evr1 is less than evr2 , 1 if evr1 is greater than evr2 , and 0 if they are equal. When using the optional operator argument, the function will return true if the relationship is the one specified by the operator, false otherwise.
Источники и обсуждения
Код и руководство с собой
Скачайте самостоятельные примеры с исходными данными, инструкциями и ожидаемыми результатами. Примеры HTTP и фрагменты для проекта помечены отдельно: им нужно указанное окружение.
Код не исполняется на сайте. Скачайте нужный пример и запускайте его в своём локальном окружении.
Материалы сверены 2026-10-12. Примеры и объяснения написаны для этого руководства; источники и обсуждения доступны в каждой главе.


