CentOS 5/6下安裝Axel插件加速yum下載

  • 2019 年 10 月 29 日
  • 筆記

axel插件是基於yum下的一個多執行緒下載插件,通過打開多個HTTP/FTP連接來將一個文件進行分段下載,從而達到加速下載的目的。對於下載大文件,該工具特別有用。可用於CentOS、RHEL、Fedora等使用yum的Linux發行版。暫時找不到rpm包,只能編譯安裝。使用Axel可以在低速網路環境里提高數倍的下載速度。

axel 是Linux 命令行下多執行緒的下載工具,支援斷點續傳,速度通常情況下是Wget的幾倍

官方主頁:http://axel.alioth.debian.org/

×××:

1

# curl  -O  https://alioth.debian.org/frs/download.php/3015/axel-2.4.tar.gz

編譯安裝:

123456

# tar -xvf axel-2.4.tar.gz  && cd axel-2.4# ./configure –prefix=/usr/local/axel# make && make install  導出axel執行路徑# echo 'PATH=/usr/local/axel/bin:$PATH' > /etc/profile.d/axel.sh && source /etc/profile

添加axel man手冊查找路徑

12

# vim /etc/man.config  MANPATH /usr/local/axel/share/man

常用選項:

1234

-n : 指定執行緒數-o : 指定另存為目錄-s   :  指定每秒的最大比特數-q  : 靜默模式

Axel插件加速yum下載:

12345

# wget https://github.com/crook/yum-axelget/archive/v1.0.5.tar.gz  # tar -xvf v1.0.5 # cd yum-axelget-1.0.5/# cp axelget.conf /etc/yum/pluginconf.d/# cp axelget.py  /usr/lib/yum-plugins/

補充:

 下載配置文件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

原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者資訊和本聲明。否則將追究法律責任。http://werewolftj.blog.51cto.com/1606482/1415174。原作者:ilove_vc