Local Mirror (简体中文)

From ArchWiki
Revision as of 00:49, 14 January 2006 by Wd (Talk | contribs)

Jump to: navigation, search

Template:I18n links start Template:I18n entry Template:I18n entry Template:I18n links end

如何设置一个本地镜像

这篇文章将讲述如何在你的本地机器上面创建一个包含 "current" 和 "extra" 所有文件的Arch镜像,以及如何使其定时更新和如何设置使得pacman使用这个镜像。

  • 当然,首先确定你的Arch是最新的:
  pacman -Syu
  
  • 安装rsync:
  pacman -S rsync
  
  • 创建一个用来保存镜像文件的文件夹。到2005年3月,"current" 需要 500 MB 左右的空间,"extra" 大概需要 2.2 GB。如果你希望的话,你也可以镜像"testing" (800 MB) 和 "unstable" (350 MB). 同时修改权限,让一个普通用户(本例中为 "chris")作为属主。
  mkdir -p /mirror/{current,extra}
  # mkdir /mirror/{testing,unstable}
  chown -R chris /mirror
  
  • 使用你最喜欢的编辑器,创建一个包含下面内容的名为 /mirror/sync.sh 的文件。 如果你希望镜像 "testing" 和 "unstable" ,去掉相应行的注释符号(即#)。或许你还需要调整其中的镜像的地址为和你地理位置比较近的。
  #!/bin/sh
  rsync -avz --delete rsync.archlinux.org::current /mirror/current/
  rsync -avz --delete rsync.archlinux.org::extra /mirror/extra/
  # --delete to delete old files remove it if you want to keep them
  # rsync -avz --delete rsync.archlinux.org::ftp/testing /mirror/
  # rsync -avz --delete rsync.archlinux.org::ftp/unstable /mirror/
  
  • 使得新创建的文件可执行:
  chmod a+x /mirror/sync.sh
  
  • 确定已经安装了 dcron (应该已经安装好了):
  pacman -Q dcron
  
  • 创建一个定时执行的脚本,内容包含下面所示,文件名为 /etc/cron.daily/sync ,并且替换 "chris" 为你系统中的一个普通用户:
  #!/bin/sh
  SYNCLOGFILE="/var/log/sync.log"
  SYNCLOCKFILE="/var/lock/sync.lock"

  if [[ -f $SYNCLOCKFILE ]]; then
    # lock file already present, bail
    exit 1
  fi

  echo -n ">>> Sync log for " > $SYNCLOGFILE
  date >> $SYNCLOGFILE

  cd /mirror
  touch $SYNCLOCKFILE
  su - chris -c "/mirror/sync.sh" >> $SYNCLOGFILE
  rm -f $SYNCLOCKFILE

  
  • 设置权限:
  chmod 744 /etc/cron.daily/sync
  

此后镜像将在每天的 00:02 AM 进行同步。剩下的内容将讲述如何使本机使用这个镜像。

  • 修改 /etc/pacman.d/current 文件使其内容类似下面:
  #
  # CURRENT: Arch Linux core repository
  #
  [[current]]
  Server = file:///mirror/current/os/i686
  Server = ftp://ftp.archlinux.org/current/os/i686
  # Also include the rest of the mirrors if you want
  
  • 修改 /etc/pacman.d/extra 文件使其内容类似下面:
  #
  # The Extra Repository
  #
  [[extra]]
  Server = file:///mirror/extra/os/i686
  Server = ftp://ftp.ibiblio.org/pub/linux/distributions/archlinux/extra/os/i686
  # Also include the rest of the mirrors if you want
  
  • 对 "testing" 和 "unstable" 做相同的操作如果你对它们也进行了镜像。
  • 等镜像第一次同步结束之后 (检查 /var/log/sync.log 文件),试试看下面的命令是否能正常使用:
  pacman -Sy
  
  • 输出应该类似下面:
  :: Synchronizing package databases...
   current                  [[/mirror/current/os/i686/]] 100%    LOCAL
   extra                    [[/mirror/extra/os/i686/]] 100%    LOCAL
  

就是这样了。

我非常感谢在IRC中提任何评论和建议,我的昵称是 busfahrer ,我在 irc.freenode.net 的 #archlinux 频道。

(本文基于 [GFDL] 发布。)

更多的内容,看看 这里