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

19

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

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

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

GregB
источник

Ответы:

19

Да, вы можете, и вам не нужно делать ничего особенного. Фактически, обычные репозитории 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), а также что касается нескольких других пакетов, таких как ядро.

Жиль "ТАК - прекрати быть злым"
источник
1
Спасибо за отличное объяснение. Как продолжение, если я пойду по пути добавления номеров версий в мои пакеты, это нарушит "apt-get upgrade"? Мне кажется, что каждый раз, когда я обновлял свое приложение, оно рассматривалось как новая установка, и я терял свои настройки. Я мог бы обойти это, но я хотел бы понять, каковы ограничения, прежде чем я так или иначе приму решение. Благодарю.
ГрегБ
2
Обычный способ в этом случае - иметь myapp-1.42и так далее, плюс пакет, myappкоторый зависит только от текущего myapp-VERSION(или даже myapp-stable, myapp-betaи так далее).
Жиль "ТАК - перестань быть злым"
1
Просто предостережение: убедитесь, что вы не забыли -mпри запуске dpkg-scanpackagesсоздать индекс репозитория. В противном случае вы не получите несколько версий пакетов для ваших Packagesфайлов.
Бруно Нери