Oh yeah!第100贴,撒花~~
安装ArchLinux痛苦么?一般来说是无痛的,网络条件允许的情况下下载安装二进制包那是唰唰的。可是如果碰到下面几种情况呢:
- 网速超慢
- 需要安装多台机器
- 需要装个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机更新一次,那也是一次飞行,终生相伴了,嗯。

