你好,游客 登录 注册 搜索
背景:
阅读新闻

CentOS 5/6下安装Axel插件加速yum下载

[日期:2015-08-22] 来源:Linux社区  作者:Linux [字体: ]

axel插件是基于yum下的一个多线程下载插件,通过打开多个HTTP/FTP连接来将一个文件进行分段下载,从而达到加速下载的目的。对于下载大文件,该工具特别有用。可用于CentOS、RHEL、Fedora等使用yum的Linux发行版。暂时找不到rpm包,只能编译安装。使用Axel可以在低速网络环境里提高数倍的下载速度。

1  下载axel插件的rpm包

下载地址 http://pkgs.repoforge.org/axel/

如果为centos 5  64位系统的话 使用http://pkgs.repoforge.org/axel/axel-2.4-1.el5.rf.x86_64.rpm

如果为centos 6  64位系统  使用 http://pkgs.repoforge.org/axel/axel-2.4-1.el6.rf.x86_64.rpm

2  安装rpm 包    rpm -ivh http://pkgs.repoforge.org/axel/axel-2.4-1.el6.rf.x86_64.rpm

可以直接运行命令安装

yum install axel

3  下载配置文件axelget.conf与axelget.py到yum里:
cd /etc/yum/pluginconf.d/
wget http://cnfreesoft.googlecode.com/svn/trunk/axelget/axelget.conf

也可以自己编辑,全文如下:

[main]
enabled=1
onlyhttp=1
enablesize=54000
cleanOnException=1

cd /usr/lib/yum-plugins/
wget http://cnfreesoft.googlecode.com/svn/trunk/axelget/axelget.py

也可以自己编辑,全文如下:

from yum.plugins import PluginYumExit, TYPE_CORE, TYPE_INTERACTIVE
from urlparse import urljoin
import os,time

requires_api_version = '2.3'
plugin_type = (TYPE_CORE, TYPE_INTERACTIVE)

enablesize=300000
trymirrornum=-1
maxconn=10
httpdownloadonly=False
cleanOnException=0

def init_hook(conduit):
 global enablesize,trymirrornum,maxconn,cleanOnException,httpdownloadonly
 enablesize = conduit.confInt('main','enablesize',default=30000)
 trymirrornum = conduit.confInt('main','trymirrornum',default=-1)
 maxconn = conduit.confInt('main','maxconn',default=10)
 httpdownloadonly=conduit.confBool('main','onlyhttp',default=False)
 cleanOnException=conduit.confInt('main','cleanOnException',default=0)
 return

def predownload_hook(conduit):
 global enablesize,cleanOnException,httpdownloadonly
 preffermirror=""
 PkgIdx=0
 TotalPkg=len(conduit.getDownloadPackages())
 for po in (conduit.getDownloadPackages()):
  PkgIdx+=1
  if hasattr(po, 'pkgtype') and po.pkgtype == 'local':
   continue
  totsize = long(po.size)
  ret = False
  if totsize <= enablesize:
   conduit.info(2, "Package %s download size %d less than %d,Skip plugin!"  % (po.repo.id,totsize,enablesize))
   continue
  else:
   conduit.info(2, "[%d/%d]Ok,we will try to use axel to download this big file:%d" % (PkgIdx,TotalPkg,totsize))
  local = po.localPkg()
  if os.path.exists(local):
   if not os.path.exists(local+".st"):
    fstate=os.stat(local)
    if totsize == fstate.st_size:
     conduit.info(2,"Target already exists,skip to next file!")
     continue
  localall = "%s %s" % (local,local+".st")
  rmcmd = "rm -f %s" % (localall)
  curmirroridx = 0
  conduit.info(2,"Before we start,clean all the key files")
  os.system(rmcmd)
  connnum = totsize / enablesize
  if connnum*enablesize<totsize:
   connnum+=1
  if connnum > maxconn:
   connnum = maxconn
  mirrors=[]
  mirrors[:0]=po.repo.urls
  if preffermirror != "":
   mirrors[:0] = [preffermirror]
  for url in mirrors:
   if url.startswith("ftp://") and httpdownloadonly:
    print "Skip Ftp Site:",url
    continue
   if url.startswith("file://"):
    print "Skip Local Site:",url
    continue
   curmirroridx += 1
   if (curmirroridx > trymirrornum) and (trymirrornum != -1):
    conduit.info(2, "Package %s has tried %d mirrors,Skip plugin!" % (po.repo.id,trymirrornum))
    break
   remoteurl =  "%s/%s" % (url,po.remote_path)
   syscmd = "axel -a -n %s %s -o %s" % (connnum,remoteurl,local)
   conduit.info(2, "Execute axel cmd:\n%s"  % syscmd)
   os.system(syscmd)
   time.sleep(2)
   if os.path.exists(local+".st"):
    conduit.info(2,"axel exit by exception,let's try another mirror")
    if cleanOnException:
     conduit.info(2,"because cleanOnException is set to 1,we do remove key file first")
     os.system(rmcmd)
    continue
   elif not os.path.exists(local):#this mirror may not update yet
    continue
   else:
    ret = True
    preffermirror=url
    break
  if not ret:
   conduit.info (2,"try to run rm cmd:%s"  % rmcmd)
   os.system(rmcmd)

最后确认 /etc/yum.conf中plugins=1

4  测试并安装yum-fastestmirror插件
yum install -y yum-fastestmirror
注:axel插件也可以当独立下载工具来使用。当成独立下载工具使用时,适用于绝大部分Linux发行版。
使用参数如下:
一般使用:axel url(下载文件地址);
限速使用:加上 -s 参数,如 -s 10240,即每秒下载的字节数,这里是 10 Kb;
限制连接数:加上 -n 参数,如 -n 5,即打开 5 个连接。

yum install axel
yum install yum-presto
yum install yum-fastestmirror
yum install yum-metadata-parser
yum install yum-downloadonly
yum install yum-priorities

更多YUM相关教程见以下内容

RedHat 6.2 Linux修改yum源免费使用CentOS源 http://www.linuxidc.com/Linux/2013-07/87383.htm

配置EPEL YUM源 http://www.linuxidc.com/Linux/2012-10/71850.htm

Redhat 本地yum源配置 http://www.linuxidc.com/Linux/2012-11/75127.htm

yum的配置文件说明 http://www.linuxidc.com/Linux/2013-04/83298.htm

RedHat 6.1下安装yum(图文) http://www.linuxidc.com/Linux/2013-06/86535.htm

YUM 安装及清理 http://www.linuxidc.com/Linux/2013-07/87163.htm

CentOS 6.4上搭建yum本地源 http://www.linuxidc.com/Linux/2014-07/104533.htm

更多CentOS相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14

本文永久更新链接地址http://www.linuxidc.com/Linux/2015-08/122072.htm

linux
相关资讯       CentOS yum  CentOS Axel 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款