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

Tom*_*Tom 10 apt repository deb

我正在研究如何设置一个可以支持多个版本的私有 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 自动化部署的人 - 我们可以指定我们想要在服务器上使用哪个版本的包(使用使用相同包名的 ensure 标签)。

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

小智 9

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

apt-get install apache2 dpkg-dev
mkdir -p /var/www/repo/binary
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash
cd /var/www/repo
dpkg-scanpackages -m binary /dev/null | gzip -9c > /var/www/repo/binary/Packages.gz
Run Code Online (Sandbox Code Playgroud)

将您的 .deb 文件放在 /var/www/repo/binary 并运行 update-repo.sh

在其余机器上:

echo "deb http://myserver/repo binary" > /etc/apt/sources.list.d/myrepo.list
apt-get update
Run Code Online (Sandbox Code Playgroud)

等等等等...

神奇的发生是因为-m在运行 dpkg-scanpackages 时。如果没有-m,Packages.gz 中只列出了一个版本

我还没有尝试过,但是对单独的子存储库执行相同的操作应该很简单,例如 hbdgaf 建议。


Rob*_*ans 4

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