I'm looking on how to setup a private apt repository (on 10.04 LTS) that can support multiple versions.

I understand that you cannot have multiple versions of a package installed on a server. This is a purely for a development environment where we want to be able to test multiple versions before releasing them to the production apt repository.

I know you can have multiple versions by putting the version number in the package name, however I want to achieve the opposite, support multiple versions of a same package name.

e.g. packagename_1.0_all.deb and packagename_2.0_all.deb rather than packagename-1.0_1.0_all.deb and packagename-2.0_2.0_all.deb

For those that are familiar with Puppet automated eployment - we can specify what version of a package we want on a server (with the ensure tag using the same package name).

I've tried Google's debmarshal described at http://wiki.debian.org/HowToSetupADebianRepository but could not get it to work due to a lack of documentation.


I needed a multi-versioned repo for the same reasons like you and this is what I ended up with:

apt-get install apache2 dpkg-dev
mkdir -p /var/www/repo/binary

Then create update-repo.sh that will update your repo with the packages' info

cd /var/www/repo
dpkg-scanpackages -m binary /dev/null | gzip -9c > /var/www/repo/binary/Packages.gz

Place your .deb files in /var/www/repo/binary and run update-repo.sh

On the rest of the machines:

echo "deb http://myserver/repo binary" > /etc/apt/sources.list.d/myrepo.list
apt-get update

etc etc...

The magic happens because of -m when running dpkg-scanpackages. Without -m, only one version is listed in Packages.gz

I haven't tried it but it should be trivial to do the same for separate sub-repos, like hbdgaf proposed.

  • 1
    I've searched around a LOT until I came across your answer with the -m switch. Thanks so much! – Mario Tacke Aug 30 '16 at 22:21

Host it under a different distribution name. lucid and testing for example. Then change your entries in your test box
from: deb http://homegrown.local/ubuntu lucid main
to: deb http://homegrown.local/ubuntu testing main

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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