How do I set up a private apt repository that can support multiple versions?
Solution 1
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
#!/bin/bash
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.
Solution 2
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
Related videos on Youtube
Tom
Updated on September 18, 2022Comments
-
Tom over 1 year
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.
-
Mario Tacke over 7 yearsI've searched around a LOT until I came across your answer with the
-m
switch. Thanks so much!