最近,宿舍巨慢,可能是被限速了。Ubuntu的安装软件速度太慢,有如老牛拉破车,看着缓缓移动的进度条,真是一种煎熬。
没有办法,想一种加速的方法吧!
终于找到了一种方法。
说一些原理:
如果Ubuntu安装一个软件,大体过程应该是这样的:
1 、搜索软件源里面的软件名称。如果存在,解析这个软件需要的包。
2、查找所需的包是否已经安装。如果没有安装,下载到本地,位置在/var/cache/apt/archives目录下面。
3、开始安装。
从第2步可以看出:
推论1、如果cahche目录里面已经有了所有的包,就会自动开始安装。
推论2、如果我们把这些包下载到cache目录,就会免除网络下载的过程。
推论3、如果我们用多线程工具下载,就会大大节省下载时间。如果我们知道这些包的下载地址,哪怕到Windows下面用迅雷下载以后,再拷贝到cache目录也是可以的。
问题是,如何找到需要的软件包的下载地址?
其实问题的答案非常简单,apt-get的一个参数帮了大忙。
apt-get有一个参数print-uris就是我们需要的参数,他会告诉我们下载包的地址。
譬如寻找java5,可以使用:
apt-get --print-uris -y install sun-java5-jdk | grep http | awk '{print $1}' | sed "s/'//g"
这一行会自动打印出安装sun-java5-jdk需要的Package(包)。
那么问题就非常简单了。
问题解决:
1、用Linux下面的多线程下载工具axel来下载,命令行:
apt-get --print-uris -y install sun-java5-jdk | grep http | awk '{print $1}' | sed "s/'//g" | xargs -l1 axel -n5 -a
这样就可以多线程下载需要的软件包。
下载完成以后,把下载的软件包,拷贝到/var/cache/apt/archives目录,然后:
sudo cp *.deb /var/cache/apt/archives
sudo aptitude instal sun-java5-jdk.
2、生成一个包的列表文件:
apt-get --print-uris -y install sun-java5-jdk | grep http | awk '{print $1}' | sed "s/'//g" > jdk5.lst
然后到Windows下面用迅雷下载完成以后,在拷贝到cache目录也是一样的。
补充:这个方法的缺点:没有了包的MD5校验.
这种方法,甚至可以帮助没有网络连接的Ubuntu电脑安装软件。只要把从有网络连接的电脑上面下载完成的文件拷贝到U盘上,再拷贝到没有网络的电脑的cache目录下面就可以了,或者直接dpkg -i就可以了!
阅读(1206) | 评论(0) | 转发(0) |