yum が「パッケージのダウンロードエラー」で動かない

yum でパッケージをインストールしようとしたら以下のエラーで失敗。

yum パッケージダウンロードエラーRaw Code(S)Raw Code(T)
# yum -y install make gcc gcc-c++
・・・
http://www.ftp.ne.jp/Linux/packages/CentOS/6.7/os/x86_64/Packages/ppl-0.10.2-11.el6.x86_64.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
他のミラーを試します。

パッケージのダウンロードでエラー:
  mpfr-2.4.1-6.el6.x86_64: failure: Packages/mpfr-2.4.1-6.el6.x86_64.rpm from base: [Errno 256] No more mirrors to try.
  gcc-c++-4.4.7-16.el6.x86_64: failure: Packages/gcc-c++-4.4.7-16.el6.x86_64.rpm from base: [Errno 256] No more mirrors to try.
  ・・・

RedHat によると原因として以下が考えられると記載がありました。 (参照元のリンクは、リンク切れのため消しました)

  • yum キャッシュの破損
  • システムからリポジトリの URL へのアクセス不可
  • カスタマイズしたリポジトリ、またはその他のメディアリポジトリが存在する

リポジトリカスタマイズはしたことないし、デフォルトリポジトリしか存在しなかったので、考えられるのは、yum キャッシュが壊れたリポジトリ URL にアクセス出来ない かどちらかですね。

確かに、エラーメッセージに出ている URL へ接続してみたところ、中身が空っぽになっていました。

http://www.ftp.ne.jp/Linux/packages/CentOS/6.7/

CentOS 6.7 ダウンロード URL リンク切れ

さらに上位階層へ移動してみたら知らないうちに新しいバージョンが出ていました。

新しいバージョンがリリースされると古いバージョンの中身は空っぽになってしまうので、ダウンロードできなくて当然ですね。

古いバージョンの URL が yum のキャッシュに保存されていたせいで、yum install が失敗に終わったんだと思います。

CentOS 6.8 ダウンロード URL

対策 : yum キャッシュクリア

対策方法として、以下を実施します。

  • 古い yum キャッシュクリア
  • yum のリポジトリ一覧確認
  • yum インストールしてみる

Step 1. 古い yum キャッシュクリア

以下のコマンドを実行し、システム上の古い yum キャッシュを削除します。

yum キャッシュクリアRaw Code(S)Raw Code(T)
# rm -rf /var/cache/yum/*

# yum clean all
読み込んだプラグイン:fastestmirror, security
リポジトリーを清掃しています: base extras updates
すべて掃除しています

Step 2. リポジトリ一覧表示

後は、以下のコマンドを実行し、リポジトリリストが問題なく表示されることを確認します。

以下のように、特にエラーメッセージが表示されなければ OK です。

リポジトリ一覧表示Raw Code(S)Raw Code(T)
# yum repolist
読み込んだプラグイン:fastestmirror, security
Determining fastest mirrors
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: centos.usonyx.net
base                    | 3.7 kB     00:00
base/primary_db         | 4.7 MB     00:00
extras                  | 3.4 kB     00:00
extras/primary_db       |  37 kB     00:00
updates                 | 3.4 kB     00:00
updates/primary_db      | 748 kB     00:00
リポジトリー ID          リポジトリー名          状態
base                     CentOS-6 - Base         6,696
extras                   CentOS-6 - Extras          61
updates                  CentOS-6 - Updates        137
repolist: 6,894

Step 3. yum インストールしてみる

最後に、yum インストールが問題なく実行できることを確認します。

# yum -y install make gcc gcc-c++
・・・

依存性を解決しました

・・・

インストール:
  gcc.x86_64 0:4.4.7-17.el6      gcc-c++.x86_64 0:4.4.7-17.el6

依存性関連をインストールしました:
  cloog-ppl.x86_64 0:0.15.7-1.2.el6              cpp.x86_64 0:4.4.7-17.el6
  glibc-devel.x86_64 0:2.12-1.192.el6            glibc-headers.x86_64 0:2.12-1.192.el6
  kernel-headers.x86_64 0:2.6.32-642.1.1.el6     libgomp.x86_64 0:4.4.7-17.el6
  libstdc++-devel.x86_64 0:4.4.7-17.el6          mpfr.x86_64 0:2.4.1-6.el6
  ppl.x86_64 0:0.10.2-11.el6

更新:
  make.x86_64 1:3.81-23.el6

依存性を更新しました:
  glibc.x86_64 0:2.12-1.192.el6 glibc-common.x86_64 0:2.12-1.192.el6
  libgcc.x86_64 0:4.4.7-17.el6 libstdc++.x86_64 0:4.4.7-17.el6
  tzdata.noarch 0:2016e-1.el6

完了しました!

終わりに

今まで問題なく使えてたのに、いきなり使えなくなると困るし、原因調査や対策に時間とられるので少し嫌ですが、深刻なトラブルでもないですし、しょうがないかなという気もします。

以上、yum : No more mirrors to try パッケージダウンロードエラー でした。