创建包含多个软件包版本的 Debian 存储库

创建包含多个软件包版本的 Debian 存储库

我需要创建 debian 存储库来保存我们的软件包,但这里的重点是允许在其中保存多个版本的软件,以便在需要时回滚。reprepo 无法做到这一点,而且 debarchiver 似乎也不能

我可以使用 dpkg-scanpackage -m 来生成 packages.gz,但更有趣的是创建功能齐全的 repo,并支持固定和 gpg 签名

有什么建议吗?谢谢

答案1

我按照 postgresql 项目的方式进行操作http://apt.postgresql.org/pub/repos/。我为 dist (即 ubuntu 或 debian) 添加了另一个目录级别。

几乎没有任何地方提到如何以这种方式使用组件。我将要展示的内容可能是您在任何地方都能找到的有关该主题的最多内容。

假设您有自己的应用程序,名为foobar。我建议的目录结构是/var/www/repos/apt/debian/repos根 Web 文件夹。apt如果您只有apt而没有yum或 ? repos,您也可以创建根 Web 文件夹。

/conf/distributions该目录下的文件将是这样的:

Origin: foobar project
Label: foobar project
Codename: foobar
Architectures: i386 amd64
Components: main v1 v2 3 7.1
Description: Apt repository for project foobar
SignWith: XXXXXXX

除了main所有文档中提到的组件之外,我们还添加了自己的自定义组件名称v1v237.1。您可以使用任何字符串并添加任意数量的字符串。您不限于所有文档中提到的标准字符串。

如果你不使用该-C标志,则默认为main。复制到v1组件目录并假设这些 deb 位于/usr/src/

cd /var/www/repos/apt/debian
reprepro -C v1 includedeb foobar /usr/src/*.deb

或者如果您想创建一个7.1组件目录并假设我们有这些 deb /usr/src/7.1/(例如):

reprepro -C 7.1 includedeb foobar /usr/src/7.1/*.deb

这将7.1在中创建组件目录/var/www/apt/debian/pool/7.1

然后添加你的 repo/etc/apt/sources.list.d/mycustomrepo.list

deb http://packages.mydomain.com/repos/apt/debian foobar main v2 3 7.1

现在,您可以访问mainv23和中的版本7.1。您还可以在 中的一行中更改您有权访问的版本mycustomrepo.list

如果这不是您自己的项目,而是说一个带有库存和/或自定义 debian 操作系统软件包的 repo,那么foobar您只需使用 debian 操作系统名称即可,stretch大多数文档在解释 repos 时都是这样谈论的。

这可能是最好的方法,但如果您不想使用组件,您可以在应用程序名称中进行版本控制。所以foobar_v1,,,,。但现在您的 repo 文件需要为您想要访问的每个版本单独设置一行。它还会在进行foobar_v2更改、添加/删除时改变您的工作流程。foobar_3foobar_7.1

mariadb 还采用了为各个版本设置单独根文件夹的方式。 http://mariadb.mirror.globo.tech/repo/

但这假设您只使用 apt,并且 repo 仅适用于一个特定的应用程序/项目。所以我认为它不够灵活。

答案2

您可以使用 reprepro 保留软件包的多个版本。它们只需与不同的版本相关联(例如wheezyvs. wheezy-backports)。您可以在 reprepro 中为此目的定义一个新版本。

答案3

我还建议复制版为了那个原因。

解决同时有多个版本可用问题的方法就是每个版本使用一个组件,如下所示它是在 apt.postgresql.org 上完成的而不是为每个版本创建一个新的发行版。(PostgreSQL 的人实际上也遇到了同样的问题,这就是他们的解决方案/变通方法。)

(Debian 中的组件为“main”、“contrib”和“non-free”,Ubuntu 中的组件为“main”、“universe”、“restricted”和“multiverse”。它们比发行套件低一个级别。)

相关内容