LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 11618|回复: 24

pacman & aria2 ── pacman 终极提速[续]

[复制链接]
发表于 2006-12-18 19:31:07 | 显示全部楼层 |阅读模式
看了 tx-cary 版主的帖子,自己试用加上上官方论坛找资料和研究 aria2,发现原来的脚本有些不符合“国情”:一是没有续传的功能,因为 aria2不论下载是否完成都会返回0;二是源的添加不方便。于是改了一下,实现了上述的功能。

另外,将源的选择独立了出来,方便添加。安装只要三步。

1. $cat [color="Red"]/usr/bin/pacget

  1. #!/bin/bash
  2. #pacget script

  3. cachedir=/var/cache/pacman/pkg
  4. file=`echo $1|awk -F '/' '{ print $NF }'`
  5. echo Downloading: $file|sed 's,/,,'
  6. repo=`echo $1|awk -F '/' '{x=NF-3 } { print  $x }'`
  7. echo repo: $repo
  8. mirrors=`sed -n 's/^Server = //; s,$,/'"$repo/os/i686/$file"', ; /^ftp/p; /^http/p' /etc/pacget.conf`

  9. if [[ $2 = *.db.tar.gz.part || $repo = "testing" ]]; then
  10.        echo "(using one mirror)"
  11.        mirrors=$1
  12.        cachedir=/var/lib/pacman
  13. fi

  14. aria2c -t60 -m5 -l /var/log/pacget.log $mirrors -o $file.pacget
  15. if [ -f $cachedir/$file.pacget.aria2 ]; then
  16.     exit 130
  17. fi
  18. mv $file.pacget $2
复制代码


2. $cat [color="Red"]/etc/pacget.conf

  1. #pacget mirror list file

  2. http://download.ourlinux.net:81/Linux/ArchLinux
  3. ftp://cle.linux.org.tw/pub/ArchLinux
  4. ftp://ftp.archlinux.org
  5. http://mirror.lupaworld.com/archlinux
  6. http://ftp.belnet.be/linux/archlinux
  7. http://mirror.cs.vt.edu/pub/ArchLinux
  8. http://mirrors.easynews.com/linux/archlinux
  9. http://distro.ibiblio.org/pub/linux/distributions/archlinux
  10. http://ftp.gigabit.nu/archlinux
复制代码

如果想要加如其他源,就添加到这个文件里。

3. 同样,在 /etc/pacman.conf 里添加 [color="Red"]XferCommand = pacget %u %o 就可以了。

这种方法对于我这里的牛网(ping 网关经常丢包)还是有一定效果的。

P.S. 透漏一下,Judd 在和 aria2的作者商量,有意要在 pacman 中实现 aria2的部分功能,\^o^/ 一起期待吧。
发表于 2006-12-18 20:41:48 | 显示全部楼层
这么好啊 ! 呵呵 !!
正好我的网速最近很慢!看看能不能有些提升啊!
回复 支持 反对

使用道具 举报

发表于 2006-12-19 14:02:49 | 显示全部楼层
果然,与版主的方法相比,确实快了很多~~~
回复 支持 反对

使用道具 举报

发表于 2006-12-21 09:45:00 | 显示全部楼层
我的为啥停在这儿就没动静了,奇怪
$ sudo pacman -Syuv
config: new section 'options'
config: log file: /var/log/pacman.log
config: noupgrade: etc/passwd
config: noupgrade: etc/group
config: noupgrade: etc/shadow
config: noupgrade: etc/sudoers
config: noupgrade: etc/fstab
config: noupgrade: etc/raidtab
config: noupgrade: etc/ld.so.conf
config: noupgrade: etc/rc.conf
config: noupgrade: etc/rc.local
config: noupgrade: etc/modprobe.conf
config: noupgrade: etc/modules.conf
config: noupgrade: etc/lilo.conf
config: noupgrade: boot/grub/menu.lst
config: holdpkg: pacman
config: holdpkg: glibc
config: xfercommand: pacget %u %o
config: new section 'testing'
config: new section 'current'
config: current: server: ftp ftp.ibiblio.org /pub/linux/distributions/archlinux/current/os/i686/
config: current: server: ftp mirror.pacific.net.au /linux/archlinux/current/os/i686/
config: current: server: http download.ourlinux.net:81 /Linux/ArchLinux/current/os/i686/
config: new section 'extra'
config: extra: server: ftp ftp.ibiblio.org /pub/linux/distributions/archlinux/extra/os/i686/
config: extra: server: ftp mirror.pacific.net.au /linux/archlinux/extra/os/i686/
config: extra: server: http download.ourlinux.net:81 /Linux/ArchLinux/extra/os/i686/
config: extra: server: http mirror.lupaworld.com /archlinux/extra/os/i686/
config: new section 'unstable'
config: unstable: server: ftp ftp.ibiblio.org /pub/linux/distributions/archlinux/unstable/os/i686/
config: unstable: server: ftp mirror.pacific.net.au /linux/archlinux/unstable/os/i686/
config: new section 'community'
config: community: server: ftp ftp.ibiblio.org /pub/linux/distributions/archlinux/community/os/i686/
config: community: server: ftp mirror.pacific.net.au /linux/archlinux/community/os/i686/
config: community: server: ftp ftp.tu-chemnitz.de /pub/linux/sunsite.unc-mirror/distributions/archlinux/community/os/i686/
config: new section 'nooms'
config: nooms: server: http arch.nooms.de /pkg/i686/
Installation Root: /
Top-level DB Path: /var/lib/pacman
Targets: None
:: Synchronizing package databases...
pacsync: new mtime for testing:
failed to synchronize testing
running command: pacget ftp://ftp.ibiblio.org/pub/linux/ ... 6/current.db.tar.gz current.db.tar.gz.part
Downloading: current.db.tar.gz
repo: current
(using one mirror)
73,256/73,262 Bytes 99% - 0.00 KB/s 1 connections
而且用的源是pacman。conf上的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-21 09:56:18 | 显示全部楼层
试试直接用 pacget 下载这个包:
pacget ftp://ftp.ibiblio.org/pub/linux/dist...rent.db.tar.gz current.db.tar.gz.part
应该不是脚本的问题。
回复 支持 反对

使用道具 举报

发表于 2006-12-21 10:18:16 | 显示全部楼层
如下
pacget ftp://ftp.ibiblio.org/pub/linux/dist...rent.db.tar.gz current.db.tar.gz.part
Downloading: dist...rent.db.tar.gz
repo: ftp.ibiblio.org
(using one mirror)
0/0 Bytes 0% - 0.00 KB/s 1 connections                                       
The download was not complete because of errors. Check the log.
aria2 will resume download if the transfer is restarted.
aria2有问题?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-21 13:17:56 | 显示全部楼层
看看 /var/log/pacget.log,并且用 aria2c ftp://ftp.ibiblio.org/pub/linux/ ... 6/current.db.tar.gz current.db.tar.gz.part 测试一下,我这里是没问题的。最好把你的 log 也贴出来,便于分析。
回复 支持 反对

使用道具 举报

发表于 2006-12-21 19:58:55 | 显示全部楼层
将log文件清空就好了,
存在延迟现象,小文件反而慢些,大文件快
谢谢sssslang
现在可以按情况来选择pacman方式
回复 支持 反对

使用道具 举报

发表于 2006-12-22 07:18:16 | 显示全部楼层
不错,下载速度持续在200K/s以上!



为什么 到达 99%的时候 速度会很慢!!
回复 支持 反对

使用道具 举报

发表于 2006-12-22 09:14:55 | 显示全部楼层
设置的源了多也麻烦,毕竟搜索源也是需要时间的~~~
如果脚本能根据文件大小来自动选择源的使用数量的话就好了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表