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

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

yum パッケージダウンロードエラー
1
2
3
4
5
6
7
8
9
# 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 キャッシュクリア
1
2
3
4
5
6
# rm -rf /var/cache/yum/*

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

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

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

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

リポジトリ一覧表示
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
# 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 install
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 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 パッケージダウンロードエラー でした。