利用pacman的包缓存无痛安装ArchLinux

Oh yeah!第100贴,撒花~~

装ArchLinux痛苦么?一般来说是无痛的,网络条件允许的情况下下载安装二进制包那是唰唰的。可是如果碰到下面几种情况呢:

  1. 网速超慢
  2. 需要安装多台机器
  3. 需要装个ArchLinux虚拟机尝试新功能

虽然说这些情况用pacman也是OK的,但是,慢速下载或者重复下载就是一件非常痛苦的事情了。

碰到这样的情况,特别是需要安装多台archlinux的时候,大家应该会想到,要不然就自己建一个软件包镜像呗。可是怎么做?用rsync ?那网络慢的时候不还是没法解决这个问题么?而且事实上没有必要保存一个完整的镜像,基本上平时要用的也就那么几个包而已。

那让我们增加一个条件,假如有一台已经安装好的ArchLinux,能不能用它做些什么呢?答案是肯定的。

在没有改变pacman的设置的情况下,pacman会将下载的二进制包保存在/var/cache/pacman/pkg/目录下,这些其实是可以供其他机器使用的,只要调用pacman -U <package filename>就可以从指定文件安装。那剩下的问题就是如何把这些包传到需要安装的机器上去了。

且慢,这样好像还是挺麻烦的,每个包都要手动指定安装,别说多台机器了,一台机器都嫌烦哪。

再换个思路,想起每次使用pacman -Sy的时候,pacman都会去重新下载$repo.db.tar.gz这样的文件。如果在pkg目录下启用http或者ftp,然后提供这样的文件,客户机能不能从这儿获取二进制包进行升级呢?

立刻就做一下实验吧

# cd /var/cache/pacman/pkg/
# for i in core extra community; do wget http://mirrors.sohu.com/archlinux/$i/os/i686/$i.db.tar.gz; done
# python -m SimpleHTTPServer 80

这样就在起了一个以pkg目录为根目录的HTTP服务。

接下来在新安装ArchLinux的时候,选择从网络安装,配置好网络后后选Custom源,输入http://<目标机器ip>。接下来尝试安装。只见说时迟那时快,唰唰地就下完了,速度比涮羊肉都快 = =

既然行得通,安装完就立刻把/etc/pacman.conf给修改了,加上

Server = http://<目标机器ip>
Server = http://mirrors.sohu.com/archlinux/$repo/os/i686

之后每次使用pacman的时候,就会默认先从指定机器的包缓存中查找更新,失败的话才会再去尝试使用公用源。

这种方法看来是相当便捷的,充分利用了已保存的包文件,即节省时间,也没啥空间浪费。不过要记住了,每次主机别忘了更新相应的$repo.db.tar.gz哦。现在在VirtualBox下弄一个当前系统的镜像,尝试新的功能啊设置啊就非常的方便了。即便是速度慢如我公司网络一样,只要Host机更新一次,那也是一次飞行,终生相伴了,嗯。

发表评论

评论备注:

  1. 留言时的头像是Gravatar提供的服务。
  2. By submitting a comment here you grant this site a perpetual license to reproduce your words and name/web site in attribution. So, you don't fully own your words, so to speak.