Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I'm running Ubuntu 10.04 across my entire environment. To make code deploys easier, we are implementing a private apt repository where we can deploy builds of our code.

One of the requirements of this repository will be that our QA department will be able to install any version of our application at any time.

Can I store multiple versions of the same package in an apt-repository (preferably in the same distribution)? If not, what are some possible workarounds that I could use to get the behavior described above?

share|improve this question

1 Answer 1

up vote 13 down vote accepted

Yes, you can, and you don't need to do anything special. In fact, the usual Debian and Ubuntu repositories typically do have several versions of each package (from oldstable/stable/testing/unstable or dapper/hardy/lucid/maverick/natty). The distributions only have a single package in each version's index file (the Packages files), but you don't have to follow suit.

Of course, apt-get install myapp will only install the latest version (unless configured otherwise). You can run apt-get install myapp=1.42 to force the installation of version 1.42.

Caveat: if all the versions have the same package name, you can't have more than one installed at the same time. If this is important, give each version a different package name: myapp-1.42, myapp-1.43, etc. Debian and Ubuntu do this for major versions of libraries, where you may need more than one if you have executables linked with different libraries (e.g. libcap1 and libcap2), as well as for a few other packages such as the kernel.

share|improve this answer
1  
Thanks for the excellent explanation. As a follow up, If I go down the path of appending version numbers to my packages, will that break "apt-get upgrade"? It seems to me that each time I upgraded my app, it would be treated as a fresh install and I'd lose my configs. I could work around this, but I'd like to get a grasp on what the limitations are before I make a decision one way or another. Thanks. –  GregB Jun 13 '11 at 16:13
2  
The usual way in this case is to have myapp-1.42 and so on, plus a package myapp that just depends on the current myapp-VERSION (or even myapp-stable, myapp-beta and so on). –  Gilles Jun 13 '11 at 20:52
    
Just a caveat: be sure you don't forget -m when running dpkg-scanpackages to build your repository index. Otherwise, you won't get multiple package versions on your Packages files. –  bruno nery Aug 16 '12 at 0:23

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.