使用同一软件包的多个版本创建deb存储库


16

我想创建自己的deb存储库来存储一些软件包。我尝试过reprepro,除了一项基本功能外,它都可以正常工作。Reprepro无法在存储库中存储同一软件包的多个版本。

存储同一个软件包的多个版本的功能对我来说至关重要,因此我问什么软件可以做到这一点。

这是一份reprepro常见问题解答,它表明它无法做到:

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.

Answers:


11

据我了解,mini-dinstall在添加软件包时需要debian .changes文件。由于我只有.deb软件包可我发现,恰如其分地支持多个版本也是如此。

另一个更轻便的选择是Freight,它是一组用于维护Debian存储库的Shell脚本。我现在(2017年)使用货运已经三年了,维护了一个小型但积极更新的存储库,并取得了良好的效果。一个主要功能是能够保留一个软件包的多个版本。

编辑:由于自2014年以来未进行更新,因此更新了指向新货运仓库的链接。


1
唐纳德:想详细说明吗?
bohrax 2014年

1
请注意,freight它已经分叉,并且现在在github.com/freight-team/freight上维护-自2014
Wolfgang

@Wolfgang谢谢,更新了答案中的链接!
bohrax

9

解决方案是将mini-dinstall用于managin deb存储库。它不会从存储库中删除软件包的先前版本。


2
仅当在mini-dinstall.conf中设置了“ keep_old = 1”时,这才看起来是正确的。默认(根据手册页和最近的经验)是删除较旧的版本。测试版本为0.6.29ubuntu1。
pendor 2013年

2

我听说有关货运的其他好处:

https://github.com/rcrowley/freight

HTH,薄雾


不知道为什么这个答案被否决了,除非是由于缺乏细节。货运确实看起来像是reprepro的可行替代品,我打算尝试货运,因为我和OP有着相同的需求
killthrush,2015年

我不是求职者,但也许是因为一年前我的回答中已经提到了运费。无论如何,我可以保证它是可行的选择。我已经用了一年多的时间来建立一个小型但正在积极更新的存储库。我们已经被这个问题咬了:github.com/rcrowley/freight/pull/65
bohrax

1
@bohrax:似乎freight已经分叉,现在在github.com/freight-team/freight进行维护。
沃尔夫冈

-1

如果您愿意自己编写Packages文件(例如,使用自定义脚本),则可以在其中放置同一软件包的多个版本,而apt-get将允许您使用以下语法安装特定版本

apt-get install packagename=version

您可以获得使用此程序包编写所需的所有信息

dpkg-deb --info package.deb

md5sum package.deb

apt-get upgrade还将选择最高版本号(至少在我的有限测试中)。


谢谢您的回答,但是我更喜欢使用一些会生成Packages文件的系统。
bessarabov 2012年

这不能回答有关使用同一软件包的多个版本创建软件包存储库的问题。这是另一个问题的答案。
gertvdijk

-2

正如该软件告诉您的那样,旧的将在新的进来时清除。通常,这是通过多个存储库来完成的。就像Ubuntu和Debian具有稳定和不稳定或Natty,Oneiric等的多个存储库一样,您将需要具有多个存储库。

通常,程序包管理器会选择程序包的最新版本,因此用户也很难选择。


1
创建多个存储库无法解决我的问题。我需要同一软件包的多个版本才能位于同一仓库中。对于那些有兴趣的人,为什么我需要这个,这里是我的解释的主题:answers.launchpad.net/launchpad/+question/171452
bessarabov

我担心您必须从不同的角度看待您的问题,因为常规的Debian存储库不支持多个版本。
马丁·乌丁2011年

2
你看起来不太对劲。请查看常规的debian repo ftp.us.debian.org/debian/pool/main/p/perl,并查看同一软件包的相同软件包有多个版本。
bessarabov 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.