计算机‎ > ‎软件‎ > ‎Linux‎ > ‎

用魔改 Buffalo LS-WXL/E NAS 建立 yeeloong 8089d 的 debian 本地源安装软件

发布者:guo rue,发布时间:2016年1月20日 23:45   [ 更新时间:2016年1月21日 00:00 ]
在 yeeloong 8089d 上安装好 debian 之后,添加 ftp.us.debian.org 做为源安装 GCC 进行到一半时候自己中断了,说是依赖没解决。我删除一些包,打算重新安装关联的包,结果经验不足,把某些包删掉了,系统挂了。不得不重新安装系统。然后用 anheng 的源安装 GCC 竟然自动安装好了。

可是 anheng 的源毕竟是外网,要是有其他需要安装的,下载速度慢,而且万一没钱交网费(这的确会发生)就完蛋了。内网速度快而且免费,那么在内网建立一个源服务器。

登陆进 NAS 服务器
ssh -p 22 nong@192.168.2.11
切换到要存放源的目录
cd /mnt/disk1/update/wed/htdocs/netdl/software/ip033lemoteyeeloong8089d/

1.下载
由于没有发现 anheng 源提供 rsync 只好用 wget 下载,适当的配置了一些参数
wget -b -c -r -np -t 99999999 -w 3 http://www.anheng.com.cn/loongson/
下载另外一个目录
wget -b -c -r -np -t 99999999 -w 3 http://www.anheng.com.cn/loongson2f/

一般 wget 命令不加 -b 参数的时候会在终端上显示进度,上面的命令中 wget 加参数 -b 就会在后台运行,这样即使退出终端,程序也会继续运行,而且在当下目录生成一个 wget-log 文本文件记录进度。

另外,如果你让 wget 在后台运行,但是发现指定文件下载在错误的文件夹了,会导致空间不足,或者不想傻傻等下载完成后移动。可以用这个命令停止在后台运行的 wget 进程。
killall wget

2.察看进度
一般察看后台运行的 wget 进度 cat wget-log 是可以的,可是本次任务中文件实在太多,wget-log 将会非常大。到底有多大呢?
使用命令
ls -lh wget-log
或者
du -sh wget-log
就可以看见文件大小
直接打开这么一个(不断增长的)巨大的文件会消耗很多内存,是不明智的。庆幸的是,有个方法可以只打开后面若干行。
tail -n 124 wget-log
显示最后 124 行。通过这几行就可以判断 wget 的下载进度了。

3.继续下载
下载好上面两个目录之后,打算继续下载 bjlx/ 和 debian/ 这两个目录。可是 robots.txt 阻挡了。所幸找到突破的办法,那就是加上 --execute robots=off 选项
wget -b -c -r -np -t 99999999 -w 3 --execute robots=off http://www.anheng.com.cn/bjlx/
wget -b -c -r -np -t 99999999 -w 3 --execute robots=off http://www.anheng.com.cn/debian/

debian/pool/ 下面有很多包,目录非常巨大,可能会导致内存耗尽,内存耗尽也可能是某些字符对 wget 造成的。总之会有不好的事情发生。

可以事先写一个文本,起名字叫 url.txt 吧。然后往里面写入要下载的地址列表,例如

http://www.anheng.com.cn/debian/pool/main/a
http://www.anheng.com.cn/debian/pool/main/b
http://www.anheng.com.cn/debian/pool/main/c
http://www.anheng.com.cn/debian/pool/main/d
http://www.anheng.com.cn/debian/pool/main/e

稍微修改一下命令执行 
wget -c -r -np -t 99999999 -w 3 --execute robots=off -i url.txt
会运行很长时间的,想要后台运行的话记得加 -b 呢
wget -b -c -r -np -t 99999999 -w 3 --execute robots=off -i url.txt

4.统计数据
总算完成了,这四个目录都会很大,到底有多大呢?我估计会有 600GB 以上 800GB 以下。

4.2文件大小
列出当前目录下所有文件的大小,以及所有文件大小的统计总和。
ls -lht

也可以列出当前文件以及文件夹的大小。这个命令要注意:sh 与 * 之间要有个空格的。
du -sh * 

列出 home 目录所有文件大小的总和命令为:
du -s /home
du -sh /home

4.3文件数量
查看统计当前目录下文件的个数
ls -l | grep "^-" | wc -l
查看统计当前目录下文件的个数,包括子目录里的。
ls -lR| grep "^-" | wc -l
查看某目录下文件夹(目录)的个数,包括子目录里的。
ls -lR| grep "^d" | wc -l

loongson$ ls -lR| grep "^-" | wc -l
1443

loongson2f$ ls -lR| grep "^-" | wc -l
3171

bjlx$ ls -lR| grep "^-" | wc -l
1030

debian$ ls -lR| grep "^-" | wc -l
295477

真是不容易啊。

5.同步源
因为 anheng 是同步 debian 的源的,所以稍后可以直接 rsync 同步 debian 的源。不用再去 anheng 了。

rsync -Prtvhz --exclude-from="/mnt/disk1/update/wed/htdocs/netdl/software/ip033lemoteyeeloong8089d/list.txt" ftp.us.debian.org::debian /mnt/disk1/update/wed/htdocs/netdl/software/ip033lemoteyeeloong8089d/www.anheng.com.cn/debian/

上面这个是使用 rsync 程序同步 debian 源到本地,比 debian 官方的 rsync 脚本简单多了。
其中
--exclude-from="/mnt/disk1/update/wed/htdocs/netdl/software/ip033lemoteyeeloong8089d/list.txt"
这段是用一个 list.txt 文件,过滤其中标明的目录和文件。内容大概这样
dists
doc
indices
project
pool/contrib/
*_source.deb
*_all.deb
*_amd64.deb
*_arm64.deb
*_armel.deb
*_armhf.deb
*_hurd-i386.deb
*_i386.deb
*_ia64.deb
*_kfreebsd-amd64.deb
*_kfreebsd-i386.deb
*_mips.deb
*_mips64el.deb
*_powerpc.deb
*_ppc64el.deb
*_s390.deb
*_s390x.deb
*_sparc.deb
*.udeb
pool/non-free/
tools
有些目录被我过滤了,还有过滤了很多架构,当然没有过滤源代码包 和 mipsel 架构。

6.最后
到 yeeloong 8089d 上编辑 /etc/apt/sources.list 文件。注释原文件所有内容,写两行类似的,主要是主机地址搞成本地的:
deb http://192.168.2.11/netdl/software/ip033lemoteyeeloong8089d/www.anheng.com.cn/debian wheezy main non-free contrib
deb-src http://192.168.2.11/netdl/software/ip033lemoteyeeloong8089d/www.anheng.com.cn/debian wheezy main non-free contrib
编辑此文件后保存,使用 sudo apt-get update 命令,更新软件列表。