设置私有APT存储库时的索引警告

时间:2011-12-07 09:21:25

标签: ubuntu apt

我正在设置一个私有APT存储库,用于将应用程序部署到服务器群集。我已经使用reprepro设置了存储库,基本上遵循了here的说明,但是使用了预先生成的GPG密钥。

但是,在目标服务器上运行apt-get update时,我一直收到此错误:

W: Failed to fetch http://domU-xx-xx-xx-xx-xx-xx.compute-1.internal/aptrepo/dists/oneiric/non-free/i18n/Index
No Hash entry in Release file /var/lib/apt/lists/partial/domU-xx-xx-xx-xx-xx-xx.compute-1.internal_aptrepo_dists_oneiric_non-free_i18n_Index

我需要担心吗?如果我这样做,我该如何解决?

3 个答案:

答案 0 :(得分:5)

我有一段时间没遇到这个问题,而且我们的自动构建失败并且谷歌搜索没有给我们任何东西。我们发现的问题是我们的网络服务器配置问题。我们使用以下方式构建仓库:

reprepro -V --ignore=wrongdistribution -b repository include precise <some-package.changes>

然后我们将存储库目录映射到nginx站点。默认的nginx设置具有导致我们痛苦的以下配置:

try_files $uri $uri/ index.html;

这是将所有文件映射到资源,然后将未找到的任何内容映射到index.html页面。因此,当apt正在寻找dist / main / i18n / Index时,它正在接收HTTP 200,但该文件不是apt所期望的,因此错误。我们将配置的try_files部分替换为:

server {
    ...
    location / {
        ...
        try_files $uri $uri/; # index.html;
        ...
    }
    ...
}

然后对* / i18n / Index的所有请求都返回了一些HTTP错误代码,然后它没有打算尝试解析它们,问题就消失了。不知道这是否对你有所帮助,但是它引起了我们2小时的痛苦,试图弄清楚我们的debs或我们的回购,但我们的网络服务器没有问题。

答案 1 :(得分:0)

我遇到了同样的问题但是使用了Apache。上面的解决方案可以很容易地移植到.htaccess文件:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteRule (.*) $1
</IfModule>

答案 2 :(得分:0)

也有同样的错误,我通过在.htaccess中添加这些行来解决:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  ## Folowing rule is tested for user-agent 'Debian APT-HTTP/1.3 (0.8.10.3)'
  ## used by apt-get, aptitude and synaptic -> send a 403 answer (Forbidden).
  RewriteCond %{HTTP_USER_AGENT} ^Debian\ APT-HTTP
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^.* - [F,L]
</IfModule>