To have different versions of the software installed at the same time, you need to use different package names rather than different version numbers; only one version of a package (identified by name) can be installed at the same time.
For example, let's say you need to have MySoft 7 and MySoft 8 installed at the same time, but also need to upgrade each version when the vendor releases minor updates. Maybe you start with MySoft 7.0 v6 which you want installed in /opt/vendor/mysoft7
and MySoft 8.0 v2 which you want installed in /opt/vendor/mysoft8
then you would build two packages:
Package: mysoft7
Version: 7.0.6
and
Package: mysoft8
Version: 8.0.2
to create mysoft7_7.0.6_amd64.deb
and mysoft8_8.0.2_amd64.deb
. In theory you can use whatever version scheme you want, but it would be advisable to conform to Debian conventions when specifying the version number.
Then, if you need to upgrade either version due to upstream changes from the vendor, then you would build a new version of the relevant package and update the relevant version number. For example, if MySoft 8.0 v3 is released, you would now build:
Package: mysoft8
Version: 8.0.3
Installing this package would then automatically uninstall mysoft8
version 8.0.2 thereby removing the files installed from mysoft8_8.0.2_amd64.deb
and replacing them with the files contained in mysoft8_8.0.3_amd64.deb
If you need every single upstream version installed at the same time, then you would need to use a different package name for every version. At this point, the package version number becomes irrelevant and you can just use 1.0
. Each would need to install to a different directory, because a file can only be owned by one package at a time. In this scenario, you would have to clean up unwanted old versions of the software manually by uninstalling the relevant package.
I am slightly unclear on why your current deb would try to reinstall if it is already installed (which, unfortunately, is the crux of your question!). It suggests that apt
thinks that the version of the package available in your repo is higher than the version installed. Perhaps the size of the version number is confusing it? /var/log/dpkg.log
and /var/log/apt/history.log
should show you what is going on.