Yum
CentOS6

yumのダウンロードが遅い事象に対処する

More than 3 years have passed since last update.


はじめに

yumのダウンロードが遅いときの対処法を記述します。


環境


  • CentOS 6.5

  • yum 3.2.29

  • yum-plugin-fastestmirror 1.1.30


事前準備


  • リポジトリの設定を確認する


/etc/yum.repos.d/CentOS-Base.repo

# CentOS-Base.repo

#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

...(省略)...


「mirrorlist」行が有効になっていていることを確認しておきます。


  • yumの設定を確認する


/etc/yum.conf

[main]

cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

「plugins=1」(プラグインが有効)となっていることを確認します。


  • yum-plugin-fastestmirrorの設定を確認する


/etc/yum/pluginconf.d/fastestmirror.conf

[main]

enabled=1
verbose=0
always_print_best_host = true
socket_timeout=3
# Relative paths are relative to the cachedir (and so works for users as well
# as root).
hostfilepath=timedhosts.txt
maxhostfileage=10
maxthreads=15
#exclude=.gov, facebook
#include_only=.nl,.de,.uk,.ie

「enabled=1」(有効)となっていることを確認します。


対処


  • yumのキャッシュをクリアして状況が改善するか確認します。

$ sudo yum clean all

$ yum repolist


  • 選択されているダウンロード先を確認します。

$ yum repolist

Loaded plugins: fastestmirror, presto
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* extras: www.ftp.ne.jp

上記の場合は、「www.ftp.ne.jp」が選択されています。

海外のサイトが選択されている場合は、fastestmirrorプラグインの設定を変更します。


/etc/yum/pluginconf.d/fastestmirror.conf

[main]

enabled=1
verbose=1
always_print_best_host = true
socket_timeout=3
# Relative paths are relative to the cachedir (and so works for users as well
# as root).
hostfilepath=timedhosts.txt
maxhostfileage=10
maxthreads=15
#exclude=.gov, facebook
include_only=.jp
#prefer=ftp.iij.ad.jp

「include_only」でjpドメインのみ選択の対象となるように設定します。

また、「verbose=1」を指定して、サイトごとの速度を表示するようにします。

$ sudo yum clean all

$ yum repolist
Loaded plugins: fastestmirror, presto
Loading mirror speeds from cached hostfile
www.ftp.ne.jp already timed: 0.00651001930237
* www.ftp.ne.jp : 0.006510 secs
ftp.jaist.ac.jp already timed: 0.0173878669739
* ftp.jaist.ac.jp : 0.017388 secs
ftp.tsukuba.wide.ad.jp already timed: 0.0187709331512
* ftp.tsukuba.wide.ad.jp : 0.018771 secs
ftp.riken.jp already timed: 0.0195229053497
* ftp.riken.jp : 0.019523 secs
ftp.iij.ad.jp already timed: 0.01784491539
* ftp.iij.ad.jp : 0.017845 secs
...(省略)...
Including mirror: www.ftp.ne.jp
Including mirror: ftp.jaist.ac.jp
Including mirror: ftp.nara.wide.ad.jp
Including mirror: ftp.iij.ad.jp
Including mirror: ftp.tsukuba.wide.ad.jp
Including mirror: ftp.riken.jp
Including mirror: mirror.fairway.ne.jp
* base: www.ftp.ne.jp

ftp.jaist.ac.jp already timed: 0.0173878669739
* ftp.jaist.ac.jp : 0.017388 secs
www.ftp.ne.jp already timed: 0.00651001930237
* www.ftp.ne.jp : 0.006510 secs
ftp.tsukuba.wide.ad.jp already timed: 0.0187709331512
* ftp.tsukuba.wide.ad.jp : 0.018771 secs
ftp.iij.ad.jp already timed: 0.01784491539
* ftp.iij.ad.jp : 0.017845 secs
ftp.nara.wide.ad.jp already timed: 0.0176429748535
* ftp.nara.wide.ad.jp : 0.017643 secs
ftp.riken.jp already timed: 0.0195229053497
* ftp.riken.jp : 0.019523 secs
...(省略)...
Including mirror: www.ftp.ne.jp
Including mirror: ftp.jaist.ac.jp
Including mirror: ftp.nara.wide.ad.jp
Including mirror: ftp.iij.ad.jp
Including mirror: ftp.tsukuba.wide.ad.jp
Including mirror: ftp.riken.jp
Including mirror: mirror.fairway.ne.jp
* extras: www.ftp.ne.jp

複数の候補のなかから、jpドメインのみを対象として、一番速度の速いサイトが選択されます。

上記の場合は、「www.ftp.ne.jp」が選択されています。

jpドメインのうち特定のサイトが常に選択されるようにする場合は、「prefer」で指定します。


  • 海外のサイトが選択されてしまう場合

ミラーリストを確認します。

ミラーリストのURLは、以下の通りに指定されているため、

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

「$releasever」を「6」、「$basearch」を「x86_64」を指定してリストされるURLを確認します。

$ curl 'http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os'

http://www.ftp.ne.jp/Linux/packages/CentOS/6.5/os/x86_64/
http://ftp.iij.ad.jp/pub/linux/centos/6.5/os/x86_64/
http://ftp.tsukuba.wide.ad.jp/Linux/centos/6.5/os/x86_64/
http://ftp.riken.jp/Linux/centos/6.5/os/x86_64/
http://ftp.nara.wide.ad.jp/pub/Linux/centos/6.5/os/x86_64/
http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.5/os/x86_64/
http://mirror.fairway.ne.jp/centos/6.5/os/x86_64/
http://centos.mirror.secureax.com/6.5/os/x86_64/
http://mirror.vodien.com/centos/6.5/os/x86_64/
http://mirrors.hust.edu.cn/centos/6.5/os/x86_64/

上記の場合は、国内のサイト(.jpドメインなど)が含まれているため、国内のサイトが選択対象となります。

海外サイトのURLのみがリストされる場合は、fastestmirrorプラグインでは対応できないため、ダウンロード先を直接指定する対応を行います。


  • ダウンロード先を直接指定する


/etc/yum.repos.d/CentOS-Base.repo

[base]

name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://www.ftp.ne.jp/Linux/packages/CentOS/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

...(省略)...


「mirrorlist」行をコメントアウトし、「baseurl」行のコメントをはずします。

そして、「baseurl」にダウンロード先を直接指定することでダウンロードが遅い事象に対処します。

$ sudo yum clean all

$ yum repolist


参考