Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4842954
  • 博文数量: 930
  • 博客积分: 12070
  • 博客等级: 上将
  • 技术积分: 11448
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 16:57
文章分类

全部博文(930)

文章存档

2011年(60)

2010年(220)

2009年(371)

2008年(279)

分类: LINUX

2008-10-15 19:07:28

最近,宿舍巨慢,可能是被限速了。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) |
0

上一篇:vi编辑器详解

下一篇:linux shell学习总结

给主人留下些什么吧!~~