Синтаксис имени файла пакета RPM, отличия от Debian

#package #rpm #debian-packaging

Вопрос:

Я недавно создал пакет исполняемых файлов для Debian (на самом деле Ubuntu 18 и 20). Часть основного контента смогла работать на Fedora 34. Поэтому теперь меня попросили также создать RPM для этого.

Имя файла Debian выглядит примерно так:

mystuff-sfwrname-edu_21.05-0715.1234-u20_amd64.deb

Это соответствует синтаксису имени _ version _ arch.deb имен файлов пакетов Debian. Подчеркивания являются основными разделителями; знаки минус на самом деле не имеют значения. ( u20 указывает версию Ubuntu 20.04; из-за libc проблемы также существует u18 версия для Ubuntu 18.04.)

В мире RPM я нахожу синтаксис: имяверсиявыпуск.arch.rpm, где значимы знаки минус и конечный период. И все же, похоже, есть имена пакетов, например openssh-clients-7.4p1-16.el7.x86_64 , со знаками минус в названии и периодами до архитектуры.

Могу ли я затем назвать свой пакет как:

mystuff-sfwrname-edu-21.05-0715.1234.el7.x86-64.rpm

где:

  • name = mystuff-sfwrname-edu (с несколькими знаками минус)
  • version = 21.05
  • release = 0715.1234.el7
  • arch = x86_64

И если я предполагаю, что один и тот же RPM работает на Fedora 34, а также на CentOS 7, я бы просто убрал el7 или есть какое-то другое правило/практика, о которых я не знаю?

Комментарии:

1. Выглядит нормально. …… Пакет «el7» обычно работает с более поздними версиями Fedora. . ( CentOS 7 основан на Fedora 19 , CentOS 8 основан на Fedora 28.) …… Пакет el7 может быть установлен с # dnf install ./package.rpm

2. @KnudLarsen Спасибо за вашу проницательность.

Ответ №1:

Короче говоря — да, вы можете.

Дополнительная информация о рекомендациях по версиям https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/

Это хэштег .el7 is. Обычно в спецификации записывается как:

Дата выпуска: 0715.1234%{?отклонение}

Сам RPM вообще не заботится об этом. Он рассматривает его как простую строку. просто .el7 < .el8 . Таким образом, технически вы можете устанавливать пакеты из .el7 в RHEL8. Но, конечно, иногда это работает не так, как ожидалось, из-за разных путей на разных платформах. Вы должны проверить это сами.