След почти две години разработка издание на пакетния мениджър . Проект RPM4 се развива от компанията Red Hat и се използва в дистрибуции като RHEL (включително производни проекти CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen и много други. По-рано е разработван от независима екип от разработчици проект , който не е свързан с RPM4 и в момента е забравен (не е актуализиран от 2010 година).
Най-забележителните в RPM 4.15:
- Добавена е експериментална поддръжка за непривилегироване изграждане в chroot-среда;
- поддръжка на паралелно изграждане на пакети в многоядрени системи. Ограничението за броя на нишките се задава чрез макроса «%_smp_build_ncpus» и променливата $RPM_BUILD_NCPUS. За определяне на броя на CPU е предложен макросът «%getncpus»;
- В spec файловете е добавена поддръжка за условни оператори «%elif» (else if), както и опции «%elifos» и «%elifarch» за привързване към дистрибуцията и архитектурата;
- нови секции «%patchlist» и «%sourcelist», които могат да се използват за добавяне на пачове и изходни текстове просто чрез изброяване на имената без указване на номера на записите (например, вместо
«Patch0: popt-1.16-pkgconfig.patch» в секцията %patchlist може да се укаже «popt-1.16-pkgconfig.patch»); - В rpmbuild поддръжка на динамично изграждане на зависимости с тяхното включване в src.rpm. В spec файла е добавена поддръжка за секция «%generate_buildrequires», чийто съдържател се обработва като списък от зависимости (BuildRequires), който изисква проверка (ако зависимостта липсва, ще се изведе грешка).
- операторът «^» за проверка на версии след зададена дата, извършващ действие, противоположно на оператора «~». Например,
«1.1^20160101» ще обхване версия 1.1 и пачовете, добавени след 1 януари 2016 година; - Добавена е опцията «—scm» за включване на режима «%autosetup SCM»;
- Добавен е вграден макрос «%{expr:…}» за изчисляване на произволни изрази (няколко дни по-рано също беше формат «%[ expr ]» );
- Гарантирано е използването по подразбиране на кодировката UTF-8 за стрингови данни в заглавките;
- Добавени са глобални макроси %build_cflags, %build_cxxflags, %build_fflags и %build_ldflags с флагове за компилатора и свързвача;
- Добавен е макрос «%dnl» (Discard to Next Line) за вмъкване на коментари;
- В биндинги за Python 3 е осигурено връщането на строки като екранирани последователности UTF-8 вместо байтови данни;
- Добавен е фиктивен бэкенд на БД за подобряване на поддръжката на системи без rpmdb (например, Debian);
- Подобрено е определянето на архитектурата ARM и е добавена поддръжка на armv8;
- Осигурена е безшевна поддръжка на Lua 5.2-5.3, която не изисква определения compat в кода.
Източник: opennet.ru
