|
|
第1行: |
第1行: |
| == apt-proxy 安装指南 ==
| | #REDIRECT[[UbuntuHelp:AptProxy/zh]] |
| | |
| 原文出处:https://wiki.ubuntu.com/AptProxyHowTo
| |
| | |
| 原文作者:
| |
| | |
| 授权许可:
| |
| * [http://creativecommons.org/licenses/by-sa/2.0/ 创作共用协议Attribution-ShareAlike 2.0]
| |
| * [http://www.gnu.org/copyleft/fdl.html GNU自由文档许可证]
| |
| | |
| 翻译人员:leal
| |
| | |
| 校正人员:
| |
| | |
| 贡献人员:
| |
| | |
| 适用版本:所有
| |
| 文章状态:等待校正
| |
| ----
| |
| | |
| | |
| | |
| apt-proxy是一个用于apt的代理,它可以在你的硬盘上创建一个远程仓库的完整副本。
| |
| | |
| === 导言 ===
| |
| | |
| apt-proxy是一个用于apt的代理,它可以在你的硬盘上创建一个远程仓库的完整副本。由于apt-proxy行为类似一个带有仓库的HTTP服务器,因此你可以在内部网的其它机器上访问这些包。如果cache中缺少某个包,apt-proxy会自动下载该包并把它放到cache中。如果你得一遍又一遍的安装 包(也即upgrade或dist-upgrade你的所有机器),apt-proxy可以很大程度上减少下载带宽和安装时间。
| |
| | |
| apt-proxy的当前不稳定版本可以从 hoary universe 仓库获得 (参见: 如何-访问 "universe" 仓库) 你可以通过如下命令快捷安装apt-proxy:
| |
| <pre><nowiki>
| |
| apt-get install apt-proxy/hoary
| |
| </nowiki></pre>
| |
| | |
| === 配置 ===
| |
| | |
| 若要使用apt-proxy,你必须更改apt的sources.list和apt-proxy的配置文件。
| |
| | |
| apt-proxy-v2.conf
| |
| | |
| /etc/apt-proxy/apt-proxy-v2.conf 的第一段包含了这个代理(apt-proxy)和其cache的缺省设置。
| |
| | |
| 最应该做的更改是把地址(address)参数设置成适合你的值,也即你的代理服务器在内部网络的IP地址。端口(port)参数指定了apt-proxy要在哪个端口侦听请求,缺省值是9999,如果和系统其它设置不相冲突,那就最好别做改变。
| |
| | |
| 也许你想把仓库的cache目录设置成 /var/cache/apt-proxy 之外的目录,改变cache_dir参数可达此目的。
| |
| | |
| 如果你正在使用一个普通代理(general proxy),设置http_proxy == proxy_server:port你可以令apt-proxy知道其存在。如果你处于防火墙后,那么试图连接到FTP后端时,使用主动(active) FTP连接可能会遇到问题。设置passive_ftp == on应该能解决这个问题。
| |
| | |
| 其它一些值控制包留存在cache中的时间、至少多久之后才让apt-proxy检查某个包的更新版本,或者在cache中检查旧包的频率(??need improve)。这些设置一般使用缺省值即可。
| |
| | |
| apt-proxy必须知道远端仓库的位置,即后端(backend)。可以在 /etc/apt-proxy/apt-proxy-v2.conf 的backend段中进行设置。ubuntu所用的backend项示例如下:
| |
| <pre><nowiki>
| |
| [ubuntu] | |
| ;; Ubuntu archive
| |
| backends =
| |
| http://archive.ubuntu.com/ubuntu
| |
| http://de.archive.ubuntu.com/ubuntu
| |
| </nowiki></pre>
| |
| 如你所见,可以指定不止一个服务器,由空格分隔。如果第一个服务器失效,apt-proxy会试着从第二个服务器获取数据,依此类推。你也可以根据default段的值集进行设置。比如,如果你知道某个服务器需很长时间应答请求,就可以增大timeout值:
| |
| <pre><nowiki>
| |
| [ubuntu-slow] | |
| timout = 60 ;wait 1 Minute
| |
| backends = prot://some.very.slow.server.net/ubuntu-slow
| |
| </nowiki></pre>
| |
| 完整的 apt-proxy-v2.conf 文件(这个是我的)和如下类似:
| |
| <pre><nowiki>
| |
| [DEFAULT]
| |
| ;; All times are in seconds, but you can add a suffix
| |
| ;; for minutes(m), hours(h) or days(d)
| |
| | |
| address = 127.0.0.1
| |
| port = 9999
| |
| cache_dir = /var/cache/apt-proxy
| |
| | |
| ;; Control files (Packages/Sources/Contents) refresh rate
| |
| min_refresh_delay = 1s
| |
| complete_clientless_downloads = 1
| |
| | |
| ;; Debugging settings.
| |
| debug = all:4 db:0
| |
| | |
| timeout = 30
| |
| passive_ftp = on
| |
| | |
| ;;--------------------------------------------------------------
| |
| ;; Cache housekeeping
| |
| | |
| cleanup_freq = 1d
| |
| max_age = 120d
| |
| max_versions = 3
| |
| | |
| ;;---------------------------------------------------------------
| |
| ;; Backend servers
| |
| ;;
| |
| ;; Place each server in its own [section]
| |
| | |
| [ubuntu]
| |
| ; Ubuntu archive
| |
| backends =
| |
| http://archive.ubuntu.com/ubuntu
| |
| http://de.archive.ubuntu.com/ubuntu
| |
| | |
| [ubuntu-security]
| |
| ; Ubuntu security updates
| |
| backends = http://security.ubuntu.com/ubuntu
| |
| | |
| [marillat]
| |
| backends = ftp://ftp.nerim.net/debian-marillat
| |
| | |
| [debian]
| |
| ; Backend servers, in order of preference
| |
| backends =
| |
| http://ftp.us.debian.org/debian
| |
| http://ftp.de.debian.org/debian
| |
| http://ftp2.de.debian.org/debian
| |
| ftp://ftp.uk.debian.org/debian
| |
| | |
| [debian-non-US]
| |
| ; Debian debian-non-US archive
| |
| backends =
| |
| http://ftp.uk.debian.org/debian-non-US
| |
| http://ftp.de.debian.org/debian-non-US
| |
| ftp://ftp.uk.debian.org/debian
| |
| | |
| [security]
| |
| ; Debian security archive
| |
| backends =
| |
| http://security.debian.org/debian-security
| |
| http://ftp2.de.debian.org/debian-security
| |
| | |
| [openoffice]
| |
| ; OpenOffice.org packages
| |
| backends =
| |
| http://ftp.freenet.de/pub/debian-openoffice
| |
| http://ftp.sh.cvut.cz/MIRRORS/OpenOffice.deb
| |
| http://borft.student.utwente.nl/debian
| |
| | |
| [apt-proxy]
| |
| ; Apt-proxy new versions
| |
| backends = http://apt-proxy.sourceforge.net/apt-proxy
| |
| </nowiki></pre>
| |
| === sources.list ===
| |
| | |
| 现在,apt 必须知道系统上存在 apt-proxy 这玩意,并且可以从它那儿获取安装包,而非直接下载这些包。最好的办法是把 sources.list 里的所有直接服务器(注:即外部服务器,非内网)都注释掉,以确保apt-get决不会试图从这些服务器上直接获取包。然后添加 apt-proxy 设置,它们看上去和普通 apt 仓库相似,只不过你总是必须在其后添加 backend 段名(即 apt-proxy-v2.conf 中方括号内的所有项)以组成路径:
| |
| <pre><nowiki>
| |
| deb http://apt-proxy:port/backend dist component
| |
| </nowiki></pre>
| |
| 如果你的 apt-proxy 和我的一样侦听 localhost 的 9999 端口,你可以指定一个 ubuntu 段,还有源(代码)行和如下类似:
| |
| <pre><nowiki>
| |
| deb http://localhost:9999/ubuntu hoary main restricted universe multiverse
| |
| deb-src http://localhost:9999/ubuntu hoary main restricted universe multiverse
| |
| <sup>^^^^</sup>
| |
| 这是 backend 段(即[ubuntu])
| |
| </nowiki></pre>
| |
| 在你更改apt-proxy配置文件后,你必须通过sudo操作重启这个代理:
| |
| <pre><nowiki>
| |
| /etc/init.d/apt-proxy restart
| |
| </nowiki></pre>
| |
| 和上述 apt-proxy-v2.conf 对应的完整的 sources.list 如下:
| |
| <pre><nowiki>
| |
| deb http://localhost:9999/ubuntu hoary main restricted universe multiverse
| |
| deb-src http://localhost:9999/ubuntu hoary main restricted universe multiverse
| |
| | |
| deb http://localhost:9999/ubuntu-security hoary-security main restricted universe multiverse
| |
| deb-src http://localhost:9999/ubuntu-security hoary-security main restricted universe multiverse
| |
| | |
| deb http://localhost:9999/marillat unstable main
| |
| | |
| deb http://localhost:9999/debian unstable main contrib non-free
| |
| deb http://localhost:9999/debian-non-US unstable/non-us main contrib non-free
| |
| deb http://localhost:9999/security sid main contrib non-free
| |
| </nowiki></pre>
| |
| === 初始化apt-proxy ===
| |
| | |
| 现在运行apt-get update来初始化apt-proxy的cache并把新的列表存入cache中。于是你便可以按老样子使用apt-*,好像根本没apt-proxy这玩意。
| |
| 导入apt的cache
| |
| | |
| 如果你之前已经用 apt-get 下载过包,这些包会缓存在 /var/cache/apt/archives 目录里。根据当前的包列表,你可以用 apt- proxy-import 把这些包导入到 apt-proxy cache 中。因此你应该首先运行 apt-get update 得到最新列表,然后只需简单运行如下命令:
| |
| <pre><nowiki>
| |
| apt-proxy-import -r -i /var/cache/apt/archives
| |
| </nowiki></pre>
| |
| 这样apt-proxy就会把apt cache里的所有包导入到它自己的cache中。
| |
| === 链接 ===
| |
| * [http://i18n.linux.net.cn/others/APT_and_Dpkg.php apt 和 dpkg 快速参考]
| |
| * http://apt-proxy.sourceforge.net
| |