如何在 CentOS 上托管 deb/apt 仓库?

如何在 CentOS 上托管 deb/apt 仓库?

我想要为 Ubuntu Precise 制作一个 puppet 客户端及其依赖项的镜像,但托管在我的 CentOS 6 主机上。

如果我做

cd /var/ftp
wget -A deb -r -np -nH --cut-dirs=1 http://apt.puppetlabs.com/pool/precise/dependencies/
wget -A deb -r -np -nH --cut-dirs=1 http://apt.puppetlabs.com/pool/precise/main/

然后在 Ubuntu Precise 上将以下内容添加到/etc/yum.repos.d/mypuppet.repo

deb ftp://puppet.example.com precise main
deb ftp://puppet.example.com precise dependencies

然后我得到

W: Failed to fetch ftp://puppet.example.com/dists/precise/dependencies/binary-amd64/Packages  Unable to fetch file, server said 'Failed to open file.  '

问题

是否有关于如何在 CentOS 上托管 deb/apt 仓库的工具或指南?

答案1

我认为这项任务的适当工具是debmirror(1),它可以在 CentOS 存储库中找到。

确保从密钥服务器导入 puppetlabs 存储库的 GPG 密钥:

# gpg --recv-keys 1054B7A24BD6EC30
gpg: requesting key 4BD6EC30 from hkp server pool.sks-keyservers.net
gpg: key 4BD6EC30: public key "Puppet Labs Release Key (Puppet Labs Release Key) <[email protected]>" imported
gpg: 3 marginal(s) needed, 1 complete(s) needed, classic trust model
gpg: depth: 0  valid:   3  signed:   4  trust: 0-, 0q, 0n, 0m, 0f, 3u
gpg: depth: 1  valid:   4  signed:   6  trust: 3-, 0q, 0n, 0m, 1f, 0u
gpg: depth: 2  valid:   1  signed:   1  trust: 1-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2014-05-11
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

然后,从其存储库中获取软件包:

# debmirror --check-gpg --keyring=/path/to/keyring.gpg --method=http \ 
  --root=/ --arch amd64 --dist precise --section main,dependencies   \
  --nosource --host apt.puppetlabs.com --progress /path/to/local/repo

这样您就可以确保目录结构正确并且所有预期的文件都存在。

答案2

您仅同步了 deb 文件,忘记检索软件包列表定义,您可以在 http://apt.puppetlabs.com/dists/precise/

我真的建议您将所有存储库同步到:

rsync -av --copy-links --del rsync://apt.puppetlabs.com/packages/apt/ /var/ftp/

使用 Rsync 可以更轻松地更新文件。我非常确定,如果您有 deb 文件和包定义,它就会起作用。

http://apt.puppetlabs.com/README.txt

祝你今天过得愉快。

相关内容