Вопрос: Могу ли я иметь две версии одного и того же пакета в подходящем репозитории?


Я запускаю Ubuntu 10.04 на всей моей среде. Чтобы упростить развертывание кода, мы реализуем приватный репозиторий apt, где мы можем развернуть сборки нашего кода.

Одним из требований этого репозитория будет то, что наш отдел QA сможет установить любую версию нашего приложения в любое время.

Можно ли хранить несколько версий одного и того же пакета в apt-репозитории (желательно в том же дистрибутиве)? Если нет, то каковы возможные обходные пути, которые я мог бы использовать для получения описанного выше поведения?


19
2018-06-10 21:02


Источник




Ответы:


Да, вы можете, и вам не нужно ничего особенного делать. Фактически, обычные репозитории Debian и Ubuntu, как правило, имеют несколько версий каждого пакета (от oldstable / stable / testing / unstable или dapper / hardy / lucid / maverick / natty). В дистрибутивах есть только один пакет в индексном файле каждой версии ( Packages файлы), но вам не обязательно следовать их примеру.

Конечно, apt-get install myapp будет установлена ​​только последняя версия (если не указано иное). Вы можете запустить apt-get install myapp=1.42 для принудительной установки версии 1.42.

Предостережение: если все версии имеют одинаковое имя пакета, вы не можете одновременно устанавливать более одного установленного. Если это важно, дайте каждой версии другое имя пакета: myapp-1.42, myapp-1.43и т. д. Debian и Ubuntu делают это для основных версий библиотек, где вам может потребоваться более одного, если у вас есть исполняемые файлы, связанные с различными библиотеками (например, libcap1 а также libcap2), а также для нескольких других пакетов, таких как ядро.


19
2018-06-10 23:02



Спасибо за отличное объяснение. В качестве продолжения, если я схожу по пути добавления номеров версий к моим пакетам, это приведет к поломке «apt-get upgrade»? Мне кажется, что каждый раз, когда я обновлял свое приложение, его рассматривали как новую установку, и я бы потерял свои конфиги. Я мог бы обойти это, но я хотел бы понять, каковы ограничения, прежде чем принимать решение так или иначе. Благодарю. - GregB
Обычным способом в этом случае является myapp-1.42 и так далее, плюс пакет myapp что просто зависит от текущего myapp-VERSION (или даже myapp-stable, myapp-beta и так далее). - Gilles
Просто предостережение: будьте уверены, что вы не забудете -m при запуске dpkg-scanpackages для создания вашего индекса хранилища. В противном случае вы не получите несколько версий пакета на своем Packages файлы. - bruno nery