yum実行時にエラーがでる原因、そもそもyumとはどう動いているか
掲載日:2020年12月27日
INFOMARTION > yum実行時にエラーがでる原因、そもそもyumとはどう動いているか
概要
yumが上手く動作しない人向けに、そもそもyumとはどう動いているかについて説明します。上手く動作しない場合「Could not retrieve mirrorlist http://mirrorlist.centos.org/?・・・」と表示されたり、「curl#6 - "Could not resolve host: mirrorlist.centos.org; 不明なエラー"」と表示されたりすると思います。結論から言うとDNSの設定やネットワークの設定が上手く出来ていない可能性が高いです。yumの仕組みを説明しながら対処方法を説明したいと思います。
目次
- yumとは
- 1-1. yumの仕組み
- yumが上手く動作しない原因
- 2-1. 原因①ネットワークに繋がっていない
- 2-2. 原因②DNSの設定がされていない
- 2-3. 原因③自サーバにレポジトリ情報がない
- まとめ
1. yumとは
普段何となく「yum install httpd」などと実行して色々インストールしていると思いますが、yumとは一言で説明するならばパッケージ管理ツールです。 何となく気付いていると思いますが、yumはインターネットからファイルを取得しています。
1-1. yumの仕組み
ざっくり説明すると以下の流れで動作します。
・自サーバのyumのレポジトリ情報から取得先サーバを選択
・取得先サーバからデータを取得
図に表すと以下の通りです。
「/etc/yum.repos.d/」配下に取得先のレポジトリ情報を持っています。この情報を元にデータを取得します。
「/etc/yum.repos.d/」配下を見てもらうと分かりますが、以下の様な情報が書かれています。
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
上記の「mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra」が取得先となります。「$releasever」「$basearch」「$infra」は変数となりますので、私の環境に合わせると実際のURLは「http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=」となります。
ブラウザでもなんでも良いですが、このURLにアクセスすると以下の情報が返ってきます。
http://ftp.riken.jp/Linux/centos/7.9.2009/os/x86_64/
http://ftp.nara.wide.ad.jp/pub/Linux/centos/7.9.2009/os/x86_64/
http://ftp.jaist.ac.jp/pub/Linux/CentOS/7.9.2009/os/x86_64/
http://mirrors.cat.net/centos/7.9.2009/os/x86_64/
http://ftp.iij.ad.jp/pub/linux/centos/7.9.2009/os/x86_64/
http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/7.9.2009/os/x86_64/
http://ty1.mirror.newmediaexpress.com/centos/7.9.2009/os/x86_64/
http://ftp-srv2.kddilabs.jp/Linux/packages/CentOS/7.9.2009/os/x86_64/
http://mirror.vastspace.net/centos/7.9.2009/os/x86_64/
http://mirror.nus.edu.sg/centos/7.9.2009/os/x86_64/
上記のURLからソフトウェアのパッケージファイル(RPMファイル)を取得しています。
2. yumが上手く動作しない原因
yumの仕組みを元に動作しない原因を考えていきたいと思います。
2-1. 原因①ネットワークに繋がっていない
先ほど説明した通り、yumは外部のサーバにソフトウェアのパッケージファイル(RPMファイル)を取得しにいきます。そのため、ネットが繋がっていない場合はyumは実行できません。
「ping 8.8.8.8」(8.8.8.8はグーグルのDNSサーバとなります。)などを実行してレスポンスがあるか確認しましょう。反応が無い場合ネットが繋がっていないことが原因である可能性が高いです。
2-2. 原因②DNSの設定がされていない
yumは外部のサーバにソフトウェアのパッケージファイル(RPMファイル)を取得しにいきますが、IPアドレス直打ちではなく「http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=」などで取得します。 そのため「mirrorlist.centos.org」の名前解決(紐づくIPアドレス)が分からない場合はyumは失敗します。
「ping google.com」などを実行してレスポンスがあるか確認しましょう。反応が無い場合はDNSの設定が上手く出来ていない可能性がが高いです。
こちらにDNSの設定方法が記載されているので参考にしてください。
2-3. 原因③自サーバにレポジトリ情報がない
yumの仕組みで説明しましたが、yumは自サーバのレポジトリ情報を見て取得先を探しにいきます。ネットに繋がっていてDNSの設定もされている場合は「/etc/yum.repos.d/」配下の設定が間違っている可能性が高いです。
参考に記載すると、以下の様なベースとなる設定がないと動作しません。
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
3. まとめ
yum実行時に上手く動作しない場合の対処方法について記載させていただきました。
私の場合はDNSの名前解決が上手く出来ていなくて繋がっていませんでした。困っている人の参考になればと思います。
最後までご覧いただきありがとうございました。