使用apt-mirror建立局域网内的Debian/Ubuntu源镜像

转:http://forum.ubuntu.org.cn/viewtopic.php?t=41791

第一次翻译,翻译得不好还请大家见谅,多多指出错误~!:)
原文可以见如下的贴子:http://forum.ubuntu.org.cn/viewtopic.php?t=40082&highlight=%E7%BF%BB%E8%AF%91
使用apt-mirror建立局域网内的Debian/Ubuntu源镜像
Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>
Last edited 12/26/2006
翻译:icyfire ([email protected]
本教程将指导你如何利用apt-mirror建立局域网内的Debian/Ubuntu源镜像。如果你需要在局域网内安装多套系统,那么建立一个本地的Debian/Ubuntu源镜像将会有益,在您更新系统的时候将获得比互联网连接快得多的速度,而且还能节省您的互联网带宽。
我首先想说的是本文所讲的方法并不是唯一建立Debian/Ubuntu源镜像的方法。有很多方法可以达成这个目标,但是这却是我采用的办法。我并不保证这个方法适用于您。
1 前期准备
你可以在debian和ubuntu系统上建立Debian/Ubuntu源镜像,也就是说,debian系统可以建立Debian和Ubuntu源镜像,ubuntu系统上也能建立Debian和Ubuntu源镜像。
需要注意的是要建立一个源镜像你需要有一个快一点的连接和足够大的硬盘空间。在我的测试过程中我做了一个Debian Sarge的main,contrib 和non-free部分的镜像和 Ubuntu Edgy Eft的 main, restricted, universe部分的镜像,这总共占用了大概25G的硬盘空间,在16M的DSL的带宽下,花了6小时的时间才下载完。
我没有建立安全部分的镜像,因为我认为直接从互联网上下载安全更新会更好一点,因为这样可以保证你总能获得最新的版本。
本测试基于 Debian Sarge 和Ubuntu Edgy Eft操作系统,如果你使用的是其他的版本,那么这个步骤可能会有细微的差异。你需要安装一个基本的 Debian Sarge 系统(安装步骤
http://www.howtoforge.com/perfect_setup_debian_sarge)或者 Ubuntu Edgy Eft系统(安装步骤http://www.howtoforge.com/perfect_setup_ubuntu_6.10)
这个例子中本地源镜像的ip是192.168.0.100.
2,1安装apt-mirror
修改/etc/apt/sources.list(Debian Sarge必须)
如果你安装的是 Debian Sarge,你必须要修改sources.list.我不清楚Debian Etch 或者 Sid是否必须要修改,你可以自己尝试一下。对Ubuntu Edgy Eft. 这一步不适必须的。

代码:

vi /etc/apt/sources.list

加入下面怪这一行。

代码:

deb http://apt-mirror.sourceforge.net/ apt-mirror/

然后执行:

代码:

apt-get update

2.2安装apt-mirror
这一步对Debian和Ubuntu都是必须的,安装apt-mirror,执行

代码:

apt-get install apt-mirror

3安装阿帕奇。
我想要通过http的方式获得本地Debian/Ubuntu的源镜像,因此需要安装apache web服务器。

代码:

apt-get install apache2

默认的根目录是/var/www,接下来我会symlink这个目录到Debian and Ubuntu 的软件仓库所在目录。
4配置apt-mirror
apt-mirror的配置文件在/ etc/apt/mirror.list,debian sarge中的默认配置文件如下:

引用:

# apt-mirror configuration file
##
## The default configuration options (uncomment and change to override)
##
#
# 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 defaultarch
# set nthreads 20
#
##
## Example sources
##
# sarge's section
deb
http://ftp.fi.debian.org/debian sarge main contrib non-free
deb-src
http://ftp.fi.debian.org/debian sarge main contrib non-free
deb
http://security.debian.org/debian-security sarge/updates main contrib non-free
deb-src
http://security.debian.org/debian-security sarge/updates main contrib non-free
deb
http://ftp.fi.debian.org/debian sarge main/debian-installer
# sarge-proposed-updates's section
deb
http://ftp.fi.debian.org/debian sarge-proposed-updates main contrib non-free
deb-src
http://ftp.fi.debian.org/debian sarge-proposed-updates main contrib non-free
# sid's section
deb
http://ftp.fi.debian.org/debian sid main contrib non-free
deb-src
http://ftp.fi.debian.org/debian sid main contrib non-free
deb
http://ftp.fi.debian.org/debian sid main/debian-installer
# experimental section
deb
http://ftp.fi.debian.org/debian ../project/experimental main contrib non-free
deb-src
http://ftp.fi.debian.org/debian ../project/experimental main contrib non-free
##
## Cleaner configuration example
##
#
# set cleanscript $var_path/clean.sh
#
# Cleaning section
clean
http://security.debian.org/
clean http://ftp.fi.debian.org/
skip-clean http://ftp.fi.debian.org/doc/
skip-clean http://ftp.fi.debian.org/tools/
skip-clean http://ftp.fi.debian.org/debian-cd/
skip-clean http://ftp.fi.debian.org/debian-minicd/
skip-clean http://ftp.fi.debian.org/debian/dists/s ... ller-i386/
skip-clean http://ftp.fi.debian.org/debian/dists/s ... ller-i386/
skip-clean http://ftp.fi.debian.org/debian/doc/
skip-clean http://ftp.fi.debian.org/debian/tools/
skip-clean http://ftp.fi.debian.org/debian/project/
skip-clean http://ftp.fi.debian.org/debian-non-US/project/

Ubuntu Edgy Eft中的默认文件如下:

引用:

############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# if you change the base path you must create the directories below with write privlages
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch
set nthreads 20
set tilde 0
#
############# end config ##############
deb
http://archive.ubuntu.com/ubuntu edgy main restricted universe multiverse
deb
http://archive.ubuntu.com/ubuntu edgy-updates main restricted universe multiverse
#deb
http://archive.ubuntu.com/ubuntu edgy-backports main restricted universe multiverse
deb
http://archive.ubuntu.com/ubuntu edgy-security main restricted universe multiverse
#deb
http://archive.ubuntu.com/ubuntu edgy-proposed main restricted universe multiverse
deb-src
http://archive.ubuntu.com/ubuntu edgy main restricted universe multiverse
deb-src
http://archive.ubuntu.com/ubuntu edgy-updates main restricted universe multiverse
#deb-src
http://archive.ubuntu.com/ubuntu edgy-backports main restricted universe multiverse
deb-src
http://archive.ubuntu.com/ubuntu edgy-security main restricted universe multiverse
#deb-src
http://archive.ubuntu.com/ubuntu edgy-proposed main restricted universe multiverse
clean
http://archive.ubuntu.com/ubuntu

如果你对比/etc/apt/sources.list 和/etc/apt/mirror.list,你会发现两者非常相似,二者都列举了一些应当被镜像的软件库,另外还有一些其他选项。
现在我修改/etc/apt/mirror.list.就象我前面说过的一样,我要镜像Debian Sarge的main,contrib 和non-free部分和 Ubuntu Edgy Eft的 main, restricted, universe部分
,不镜像应该直接从互联网上下载的安全部分。另外,我也没有镜像源代码包,因为95%的安装文件不需要源代码,而源代码包文件又会占据巨大的硬盘空间。所以我的/etc/apt/mirror.list 修改成下面的样子:

代码:

vi /etc/apt/mirror.list

引用:

# apt-mirror configuration file
##
## The default configuration options (uncomment and change to override)
##
#
# 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 defaultarch
# set nthreads 20
#
##
## Example sources
##
# sarge's section
deb
http://ftp.de.debian.org/debian sarge main contrib non-free
# Ubuntu Edgy Eft
deb
http://de.archive.ubuntu.com/ubuntu/ edgy main restricted universe
##
## Cleaner configuration example
##
#
# set cleanscript $var_path/clean.sh
#
# Cleaning section
clean
http://ftp.de.debian.org/
clean http://de.archive.ubuntu.com/

请注意我用ftp.de.debian.org 代替了ftp.fi.debian.org ,用 de.archive.ubuntu.com代替了
archive.ubuntu.com. 你应该选择一个距离你比较近的镜像,所以如果你在美国,就用us替代de。
最后的cleaning部分告诉apt-mirror本地的硬盘应该和哪个软件仓库对比以确定哪些文件可以自动清除掉。我要检查Debian 和Ubuntu全部的软件,所以我修改成了,
clean
http://ftp.de.debian.org/
clean http://de.archive.ubuntu.com/
如果你使用了其他的 Debian/Ubuntu版本,请用etch或者sid替换sarge;breezy或者dapper替换edgy。
5创建本地软件仓库
现在apt-mirror已经配置好了,现在应该第一次运行它,下载所有的包构建本地的Debian/Ubuntu软件仓库。我们只需要执行:
[code]
su - apt-mirror -c apt-mirror
[/eode]
apt-mirror会告诉你到底要下载多少GB的文件。这将会花上几个小时,所以要耐心点。这些包将会存储在/var/spool/apt-mirror/mirror的子目录中,所以你要保证该分区还有足够的硬盘空间。
debian的在/var/spool/apt-mirror/mirror/ftp.de.debian.org/debian,
unbuntu的在/var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu.
如果你在第四步选择了一个不同的镜像,那么这个路径或许有些不同。
6清理软件仓库
等到apt-mirror下载完了所有的包,它非常可能会告诉你可以清除出一些硬盘空间来,使用以下脚本:
/bin/bash /var/spool/apt-mirror/var/clean.sh
输出如下:
server1:~# /bin/bash /var/spool/apt-mirror/var/clean.sh
Removing 157 unnecessary files [13316096 bytes]...
[0%]................done.
Removing 18 unnecessary directories...
[0%]..................done.
这样你就能看到有多少硬盘空间被清理出来了。
7 更新本地软件仓库
更新本地镜像是非常简单的,执行
[code]su - apt-mirror -c apt-mirror [/code]
如果你不想手工执行更新,那么你可以编写一个定时执行的corn任务。只需要编辑/etc/corn.d/apt-mirror,在最后一行添加如下即可:
[code]vi /etc/cron.d/apt-mirror [/code]

引用:

#
# Regular cron jobs for the apt-mirror package
#
0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

8 通过http访问镜像
Apache默认的根目录是/var/www,但是软件仓库却在/var/spool/apt-mirror/mirror
为了能够通过
http://192.168.0.100/debian and http://192.168.0.100/ubuntu
访问到相应的软件库,我们可以symlinks /var/www/debian and /var/www/ubuntu到真正的库地址。
[code]ln -s /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian /var/www/debian
ln -s /var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu /var/www/ubuntu[/code]
如果你使用了其他镜像,记得调整这两行命令。
接下来要考虑的一件事情是,你认为DebianSarge是sarge而且是稳定的e(至少目前是稳定的,而Etch仍旧在测试中),那么当你运行
[code]ls -l /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian/dists [/code]
你会发现那里有一个sarge的目录,但却是不稳定的,但是如果你在source.list中用稳定的替换了 sarge,或者在本地全新安装一个debian系统,这样就会出现这样的问题debian sarge的安装工具仍旧会认为stable替换sarge。解决办法是
[code]cd /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian/dists
ln -s sarge/ stable[/code]
当debian Etch变成稳定版本的时候你也可以镜像Etch。到时候不要忘了修改stable的symlink。
[code]cd /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian/dists
rm -f stable
ln -s etch/ stable [/code]
这个问题不会出现在ubuntu中。
9 配置你的客户端电脑使用本地镜像
现在本地镜像已经可以使用了,我们所要做得是告诉 Debian Sarge和Ubuntu Edgy Eft 系统如何使用本地镜像。
Debian Sarge系统,在source。list中修改main,contrib,non-free的软件仓库
vi /etc/apt/sources.list
[...]
deb
http://192.168.0.100/debian sarge main contrib non-free
[...]
Instead of sarge you could also use stable:
[...]
deb
http://192.168.0.100/debian stable main contrib non-free
[...]
然后运行:
apt-get update
在 Ubuntu Edgy Eft系统中,你可以在sources.list中更换 main restricted universe的软件仓库。
vi /etc/apt/sources.list
[...]
deb
http://192.168.0.100/ubuntu/ edgy main restricted universe
[...]
然后运行:
apt-get update
9.3 全新安装系统
如果你从本地镜像全新安装一个 Debian Sarge 或者 Ubuntu Edgy Eft那么你可以按照以下步骤进行:
10相关链接
* apt-mirror:
http://apt-mirror.sourceforge.net
* Debian: http://www.debian.org
* Ubuntu: http://www.ubuntu.com

你可能感兴趣的:(ubuntu)