Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I want to create my own deb repository to store some packages. I've tried reprepro and it works fine, except for one fundamental feature. Reprepro can't store several versions of the same package in the repository.

The ability to store several versions of the same package is essential to me, so I'm asking what software can can do this.

Here is a piece of reprepro FAQ that shows that it can't do it:

3.1) Can I have two versions of a package in the same distribution?
-------------------------------------------------------------------
Sorry, this is not possible right now, as reprepro heavily optimizes
at only having one version of a package in a suite-type-component-architecture
quadruple.
You can have different versions in different architectures and/or components
within the same suite. (Even different versions of a architecture all package
in different architectures of the same suite). But within the same
architecture and the same component of a distribution it is not possible.
share|improve this question

4 Answers 4

up vote 6 down vote accepted

The solution is to use mini-dinstall for managin deb repos. It does not delete previous version of the package from the repository.

share|improve this answer
1  
This appears to only be true if "keep_old = 1" is set in mini-dinstall.conf. Default (according to the man page & recent experience) is to remove older versions. Tested with version 0.6.29ubuntu1. –  pendor Dec 10 '13 at 19:43

As far as I understand, mini-dinstall requires debian .changes files when adding packages. As I only had .deb files available I found that aptly supports multiple versions as well.

Another more light-weight option is freight which is a set of shell scripts for maintaining a debian repository.

share|improve this answer
    
Downvoter: care to elaborate? –  bohrax Apr 12 at 16:36
    
+1. Aptly appears to provide what's needed. –  gertvdijk Apr 16 at 9:18

As the software tells you, the older ones are purged when a new one comes in. Usually, this is done with multiple repos. Just like Ubuntu and Debian have multiple repos for stable and unstable or Natty, Oneiric, …, you will need to have multiple repos.

Usually package managers select the newest version of a package, so it would be hard for the users to choose as well.

share|improve this answer
    
Creating multiple repos does not solve my problem. I need multiple versions of the same package to be in the same repo. For those who are interested why do I need this here is a topic with my explanation: answers.launchpad.net/launchpad/+question/171452 –  bessarabov Dec 3 '11 at 12:21
    
I fear that you have to look at your problem from a different angle since the regular Debian repos have no support for multiple versions. –  queueoverflow Dec 3 '11 at 19:10
    
You are not right. Please see regular debian repo ftp.us.debian.org/debian/pool/main/p/perl and see that there are several versions of the same package for the same archicture. –  bessarabov Jun 8 '12 at 16:52

If you're willing to write the Packages file yourself (eg with a custom script), you can put several versions of the same package in there and apt-get will allow you to install a specific version with the syntax

apt-get install packagename=version

You can get all of the info you need to write this package with

dpkg-deb --info package.deb

and

md5sum package.deb

apt-get upgrade will also choose the highest version number (in my limited testing, at least).

share|improve this answer
    
Thank you for the answer, but I prefer to use some system that will generate Packages file. –  bessarabov Jun 8 '12 at 16:56
    
This does not answer the question about creating a package repository with multiple versions of the same package. It's an answer to another question. –  gertvdijk Apr 16 at 8:59

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.