Posso ter duas versões do mesmo pacote em um repositório apt?

19

Estou executando o Ubuntu 10.04 em todo o meu ambiente. Para facilitar a implantação de código, estamos implementando um repositório apt privado, no qual podemos implantar construções de nosso código.

Um dos requisitos deste repositório será que nosso departamento de controle de qualidade possa instalar qualquer versão do nosso aplicativo a qualquer momento.

Posso armazenar várias versões do mesmo pacote em um repositório apt (preferencialmente na mesma distribuição)? Caso contrário, quais são as soluções possíveis que eu poderia usar para obter o comportamento descrito acima?

GregB
fonte

Respostas:

19

Sim, você pode e não precisa fazer nada de especial. De fato, os repositórios Debian e Ubuntu usuais normalmente possuem várias versões de cada pacote (de oldstable / stable / testing / unstable ou dapper / hardy / lucid / maverick / natty). As distribuições têm apenas um único pacote no arquivo de índice de cada versão (os Packagesarquivos), mas você não precisa seguir o exemplo.

Obviamente, apt-get install myappinstalará apenas a versão mais recente (a menos que configurado de outra forma). Você pode executar apt-get install myapp=1.42para forçar a instalação da versão 1.42.

Advertência: se todas as versões tiverem o mesmo nome de pacote, você não poderá ter mais de um instalado ao mesmo tempo. Se isso é importante, dar a cada versão um nome de pacote diferente: myapp-1.42, myapp-1.43, etc. Debian e Ubuntu fazer isso para as principais versões de bibliotecas, onde você pode precisar de mais de um, se você tem executáveis associados a diferentes bibliotecas (por exemplo, libcap1e libcap2), bem como em alguns outros pacotes, como o kernel.

Gilles 'SO- parar de ser mau'
fonte
1
Obrigado pela excelente explicação. Como acompanhamento, se eu seguir o caminho de anexar números de versão aos meus pacotes, isso interromperá o "apt-get upgrade"? Parece-me que toda vez que eu atualizasse meu aplicativo, ele seria tratado como uma nova instalação e eu perderia minhas configurações. Eu poderia resolver isso, mas gostaria de entender quais são as limitações antes de tomar uma decisão de uma maneira ou de outra. Obrigado.
22811 GregB #
2
A maneira usual neste caso é ter myapp-1.42e assim por diante, além de um pacote myappque só depende da corrente myapp-VERSION(ou mesmo myapp-stable, myapp-betae assim por diante).
Gilles 'SO- stop be evil'
1
Apenas uma ressalva: certifique-se de que você não se esqueça -mao executar dpkg-scanpackagespara criar seu índice de repositório. Caso contrário, você não obterá várias versões de pacotes em seus Packagesarquivos.
Bruno Nery