如何设置可以支持多个版本的私有apt存储库?


10

我正在研究如何设置可以支持多个版本的私有apt存储库(在10.04 LTS上)。

我了解您不能在服务器上安装软件包的多个版本。这纯粹是针对开发环境,在该环境中,我们希望能够在将多个版本发布到生产apt存储库之前对其进行测试。

我知道可以通过将版本号放在程序包名称中来获得多个版本,但是我想实现相反的目的,即支持同一程序包名称的多个版本。

例如packagename_1.0_all.deb和packagename_2.0_all.deb,而不是packagename-1.0_1.0_all.deb和packagename-2.0_2.0_all.deb

对于那些熟悉Puppet自动部署的用户-我们可以指定我们要在服务器上使用哪个版本的软件包(使用带有相同软件包名称的sure标签)。

我已经尝试过在http://wiki.debian.org/HowToSetupADebianRepository中描述的Google的debmarshal,但由于缺少文档而无法使其工作。

Answers:


9

出于与您相同的原因,我需要一个多版本的回购协议,这就是我最终得到的结果:

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

然后创建update-repo.sh将使用软件包信息更新您的仓库

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

将您的.deb文件放在/ var / www / repo / binary中,然后运行update-repo.sh

在其余机器上:

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

等等等等

之所以发生这种情况,是因为-m运行dpkg-scanpackages。如果不使用-m,则Packages.gz中仅列出一个版本

我还没有尝试过,但是对于单独的子存储库,像hbdgaf所建议的那样,做到这一点并不重要。


1
我已经搜索了很多,直到找到您的答案为止-m。非常感谢!
马里奥·塔克

3

将其托管在其他分发名称下。清醒和测试例如。然后,将测试框中的条目
从:deb http://homegrown.local/ubuntu lucid main
更改为: deb http://homegrown.local/ubuntu testing main

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.