Есть ли какие-то рекомендации или есть ли у кого-нибудь предложения о том, как мне упаковать то, что мне нужно, чтобы иметь возможность одновременно устанавливать несколько версий?
Я не уверен, соответствует ли это тому, что вы пытаетесь достичь, но в проекте, над которым я работал, мы сделали это, сначала продиктовав структуру каталогов, например:
/usr/local/[project_name]/[version]
где project_name
было «базовым названием» проекта, и version
был конкретным помеченным выпуском. Затем мы использовали произвольное число для версии RPM (монотонно увеличивающееся), чтобы выпуски в пределах одного тега или ветки могли быть обновлены RPM без конфликта с другими тегами / ветвями. Это означает, что вам нужно кодировать номер версии где-нибудь в заголовке имени RPM, а не версию, например
Name: foobar-1.0
Version: 1234
Release: 1
# ...etc...
В этом случае RPM может быть установлен по пути /usr/local/foobar/1.0
и последующие версии будут называться "foobar-2.0" и будут устанавливаться аналогичным образом.
Название "foobar-1.0" подразумевает, что вам нужна другая система, не система RPM, чтобы отслеживать номера версий - мы использовали сценарий оболочки, который просто генерировал specfile по запросу для выпуска с тегами. Это может быть немного громоздко, но дает вам гибкость, заключающуюся в возможности установить несколько версий пакета обычным способом и иметь возможность использовать более одной версии одновременно.
Это просто предложение, и YMMV очевидно.
Просто дайте пакетам разные имена и убедитесь, что они устанавливают файлы в разные места.
Или объедините все версии в один пакет.