Выпуск ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° RPM 4.16

ПослС Π³ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ состоялся Ρ€Π΅Π»ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° RPM 4.16.0. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ RPM4 развиваСтся ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Red Hat ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Π°ΠΊΠΈΡ… дистрибутивах, ΠΊΠ°ΠΊ RHEL (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ CentOS, Scientific Linux, AsiaLinux, Red Flag Linux, Oracle Linux), Fedora, SUSE, openSUSE, ALT Linux, OpenMandriva, Mageia, PCLinuxOS, Tizen ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π Π°Π½Π΅Π΅ нСзависимой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² развивался ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ RPM5, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нСпосрСдствСнно Π½Π΅ связан с RPM4 ΠΈ Π² настоящСС врСмя Π·Π°Π±Ρ€ΠΎΡˆΠ΅Π½ (Π½Π΅ обновлялся с 2010 Π³ΠΎΠ΄Π°). Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ лицСнзиями GPLv2 ΠΈ LGPLv2.

НаиболСС Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² RPM 4.16:

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½ΠΎΠ²Ρ‹ΠΉ бэкСнд для хранСния Π‘Π” Π² Π‘Π£Π‘Π” SQLite. Π”Π°Π½Π½Ρ‹ΠΉ бэкСнд Π±ΡƒΠ΄Π΅Ρ‚ использован Π² Fedora Linux 33 вмСсто бэкСнда Π½Π° основС BerkeleyDB.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ бэкСнд для хранСния Π‘Π” Π² BDB (Oracle Berkeley DB), Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. РСализация написана с нуля ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ бэкСнда BerkeleyDB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ объявлСн ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ, Π½ΠΎ ΠΏΠΎ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.
  • Π£Π΄Π°Π»Ρ‘Π½ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ бэкСнд Π‘Π” Π½Π° Π±Π°Π·Π΅ LMDB.
  • ОбъявлСн ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ бэкСнд Π‘Π” Π½Π° Π±Π°Π·Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° NDB.
  • Π’ макросы ΠΈ выраТСния «%if» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π΅Π½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° (%{expr:1==0?»yes»:»no»}) ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° встроСнная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сравнСния вСрсий (‘%[v»3:1.2-1″ > v»2.0″]’).
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° классификации Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° основС MIME-Ρ‚ΠΈΠΏΠΎΠ² ΠΈΡ… содСрТимого.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ зависимостСй ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ парамСтричСских макросов.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° новая вСрсия API парсинга ΠΈ сравнСния для языков C ΠΈ Python.
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ распараллСливаниС выполнСния brp-strip ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² тСстового Π½Π°Π±ΠΎΡ€Π°. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация распараллСливания процСсса Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ rpmdb Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «—salvagedb» для восстановлСния ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Ρ‘Π½Π½ΠΎΠΉ Π‘Π” (Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с бэкСндом NDB).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ макросы %arm32, %arm64 ΠΈ %riscv для опрСдСлСния Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ встроСнный макрос %{macrobody:…} для получСния содСрТимого макросов.
  • Π’ выраТСниях Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ использования Π½Π΅ обособлСнных ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ слов, Ρ‚.Π΅. вмСсто ‘a == b’ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ‘»a» == «b»‘.
  • Π’ парсСрС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ синтаксис «%[…]» для выполнСния выраТСния с раскрытиСм макросов (ΠΎΡ‚ «%{expr:…}» отличаСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ макросы Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ).
  • Π’ выраТСниях Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ раскрытия логичСских ΠΈ Ρ‚Π΅Π½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² («%[0 && 1 / 0]» рассматриваСтся ΠΊΠ°ΠΊ 0, Π° Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС ΠΈΠ·-Π·Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ дСлСния Π½Π° ноль).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° примСнСния логичСского ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° NOT Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… контСкстах (!»%?foo»).
  • ПовСдСниС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² «||» ΠΈ «&&» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² соотвСтствиС с Perl/Python/Ruby, Ρ‚.Π΅. вмСсто Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π±ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ значСния Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ послСднСС вычислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, «%[2 || 3]» Π²Π΅Ρ€Π½Ρ‘Ρ‚ 2).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… подписСй ΠΈ Ρ…ΡΡˆΠ΅ΠΉ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ‚Π°-зависимостСй (Requires(meta): somepkg), Π½Π΅ Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° порядок установки ΠΈ удалСния.
  • Π’ rpmsign Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «—rpmv3» для ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ использования Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… подписСй Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ RPM3.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° установочная опция «—excludeartifacts» для пропуска установки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….
  • ОбъявлСна ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° RPMv3 ΠΈ криптобэкСнды beecrypt ΠΈ NSS.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° DSA2 (gcrypt) ΠΈ EdDSA.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru