如何使用apt-mirror和mirrorkit创建本地存储库?


9

拥有本地存储库可能非常有用。可以用来rsync创建存储库镜像,但这会导致下载所有发行版,甚至是较旧的发行版,并且会包含可能不需要的体系结构文件。

apt-mirror允许人们有选择地选择存储库的各个部分。mirrorkit为apt-mirror提供前端。

为Ubuntu档案的选定部分创建本地存储库镜像的最佳方法是什么?

例如,可能希望包括:

  • Main,Restricted,Universe,Multiverse,所有Ubuntu和Lubuntu,但不包括其他衍生产品,例如Kubuntu和Xubuntu。

  • 仅AMD64和i386,但不包括其他体系结构。

  • 仅可信赖的塔尔,而不是精确的企鹅或异位独角兽。

可能需要配置该过程,以便从本地镜像而不是从主归档下载。

如何使用选定的体系结构,发行版或Ubuntu变体apt-mirrormirrorkit为其创建本地存储库?


排除Kubuntu?您的意思是排除Kubuntu ISO还是排除Kubuntu使用的任何软件包?
muru

例如,排除Kubuntu和Xubuntu ISO。也许其中有很多(Precise Kubuntu ARM,Precise Kubuntu i386,Quantal Kubuntu ARM,Quantal Kubuntu i386 ...),并且没有这些ISO可以更快地完成初始镜像下载。但是,如果仅再增加几千兆字节,那么也许没关系。
user75798 2014年

1
ISO与软件包分开托管。因此,您可以像平常一样使用apt-mirror来镜像软件包存储库,并为ISO使用其他工具。然后,问题就变成为该工具找到适当的排除过滤器(例如rsync)。
muru

“您可以像平常一样使用apt-mirror”,很抱歉,我不知道该怎么做。这正是我想解释的。
user75798 2014年

Answers:


9

CD存储库和软件存储库是两个不同的组件(它们甚至具有单独的Launchpad页面:cdmirrorsarchivemirrors)。因此,镜像它们是两个不同的任务。此外,尽管各种形式在CD存储库中具有不同的文件夹,但它们共享一个软件存储库。因此,您可以选择性地镜像每种口味的图像,而不是软件。对于软件存储库,您可以根据以下条件有选择地进行镜像:

  • 释放(trustyprecise等)
  • 架构(amd64i386等)
  • 包类型(二进制[ deb]与源[ deb-src])
  • 通道(trustytrusty-updatestrusty-backports等)
  • 切片(mainmultiverse等)

要镜像软件存储库,请使用apt-mirror

apt-mirror使用进行配置/etc/apt/mirror.list。它的格式非常类似于sources.list。软件包安装的配置文件有一些注释掉的选项,列出了它们的默认值。如果您愿意,可以取消注释并进行更改。

要镜像存储库,您需要添加一行,mirror.list例如sources.list

deb http://us.archive.ubuntu.com/ubuntu trusty main multiverse restricted universe

默认设置是仅镜像主机的体系结构,因此,如果您使用的是64位Ubuntu,则仅amd64会镜像。您需要添加表格的另一行:

deb-i386 http://us.archive.ubuntu.com/ubuntu trusty main multiverse restricted universe

对于源程序包:

deb-src http://us.archive.ubuntu.com/ubuntu trusty main multiverse restricted universe

如果您正在寻找一个相当完整的镜像,那么这些行是最少的(我也建议您使用-updates频道):

deb http://us.archive.ubuntu.com/ubuntu trusty main multiverse restricted universe
deb http://us.archive.ubuntu.com/ubuntu trusty-security main multiverse restricted universe
deb-i386 http://us.archive.ubuntu.com/ubuntu trusty main multiverse restricted universe
deb-i386 http://us.archive.ubuntu.com/ubuntu trusty-security main multiverse restricted universe

最后,您需要添加clean一行,以便过滤存储库中不再可用的软件包以将其删除:

clean http://us.archive.ubuntu.com/ubuntu

假设您的变量是(默认值):

set base_path    /var/spool/apt-mirror
set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set cleanscript $var_path/clean.sh

然后:

  • 该存储库将镜像到$mirror_path/parent-hostname/directory(so /var/spool/apt-mirror/mirror/us.archive.ubuntu.com/ubuntu
  • clean.sh(这将是一组rm命令来删除过时的包和目录)会/var/spool/apt-mirror/var/clean.sh
  • 日志将转到/var/spool/apt-mirror/var

apt-mirror软件包将安装cron作业(/etc/cron.d/apt-mirror),您应对其进行编辑以启用(通过取消注释包含的行/usr/bin/apt-mirror)。您还应该添加一个cron作业以运行clean.sh(我每周运行一次)。

当然,您应该用http://us.archive.ubuntu.com./ubuntu自己喜欢的镜子代替。


1
难道真的deb-amd64还是deb arch=amd64?我只可以在联机帮助后者
安瓦尔

1
@前安华。后者用于sources.list,其格式相似但不相同。请参阅manpages.ubuntu.com/manpages/trusty/en/man1/apt-mirror.1.html,在deb-powerpc示例中。
muru

哦! 我没有使用apt-mirror的经验。以为是sources.list。谢谢
Anwar

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.