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

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

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

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

答案1

出于与您相同的原因,我需要一个多版本的 repo,最终我得到了以下结果:

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 所建议的那样。

答案2

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

相关内容