【问题标题】:Easy way to host a debian update repository托管 debian 更新存储库的简单方法
【发布时间】:2011-10-08 08:15:56
【问题描述】:

我有一个项目,我在其中创建了一个 .deb 文件,该文件应该由 linux 客户端安装。为此,我想使用apt-get install mypackage。

作为这个领域的新手,我现在正在寻找最简单的方式来托管我自己的 debian 更新存储库,它只需要包含 mypackage.deb。

我很快查看了看起来很有希望的mini-dinstall,但它们似乎适用于.changes,而不是.deb 包。所以我不确定这是否是我需要的。

所以总结的工作流程应该是这样的:

  1. 我创建了debian包mypackage.deb
  2. 我告诉一些守护进程更新更新存储库:fancy-update-daemon add mypackage.deb
  3. 客户端可以使用标准的 apt 命令安装或更新:apt-get install mypackage

感谢您的帮助

【问题讨论】:

  • askubuntu.com 是这个问题的最佳去处

标签: ubuntu debian apt-get


【解决方案1】:

创建存储库的真正简单方法是创建一个“普通”存储库而不是“自动”存储库。您可以使用 dpkg-dev 软件包中的“dpkg-scanpackages”命令来执行此操作。

$ mkdir repository
$ cp foo.deb repository
$ dpkg-scanpackages repository /dev/null | gzip -9c > repository/Packages.gz

然后在您的 sources.list 中,而不是类似:

deb http://wherever/repository suite component

您离开套件和组件,只拥有:

deb http://wherever/repository

有关更多信息(例如普通存储库和自动存储库之间的区别),请参阅The repository HOWTO(对于这么简单的事情,您可以忽略此文档自称为“过时”的事实)

【讨论】:

  • 非常感谢。这看起来很有希望。我想我也可以使用这种机制管理同一个包的不同版本。我一定会试试看的。
  • dpkg-scanpackage 不会将同一个包的多个版本放入同一个包文件中,如果这就是你的意思的话。如果你给它一个包含同一个包的多个版本的目录,你只会在 Packages.gz 中得到最新的
  • @stew 在最近的版本中,您可以给 dpkg-scanpackage 提供-m 开关以将同一包的多个版本添加到包中。
  • 我收到E: Malformed line 1 in source list /etc/apt/sources.list.d/... 我在下面创建了一个新答案。
【解决方案2】:

创建 Packages.gz:

@server> cd debian-repo
@server> dpkg-scanpackages ./ /dev/null | gzip > Packages.gz

创建新文件 /etc/apt/sources.list.d/my-server.list(在客户端)

deb http://my-server/debian-repo ./

现在获取可用软件包列表并安装foo。

@client> apt-get update
@client> apt-get install foo

【讨论】:

    【解决方案3】:

    .changes 文件是在构建 debian 包时生成的。 .changes 文件本身并不是一个包:它包含有关构建的信息 (including .debs that were generated)。

    虽然我没有使用过mini-dinstall,但这似乎是正确的方法。它应该使用在构建期间生成的.deb 文件并正确上传它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多