結果だけでなく過程も見てください

たい焼きさんの日々の奮闘を綴る日記です。

yum Tips

決してタイトル考えるのが面倒くさいとかそんなことはないです。信じてください。

久々にyum updateするとエラーで更新できなくなってました。
yumはネットワーク絡みでエラーになることが非常に多いので、
備忘録として詰まった部分はここに書いていこうと思います。例によって適宜更新します。

私の環境はCentOS6.6(Final)です。
CentOS7以降の環境については後々気が向けば追記して行こうと思います。

基本中の基本。クライアント側のネットワークの設定。

ゲートウェイの設定(デフォルトゲートウェイ)の設定
netstat -rn

もしくは

route

デフォルトゲートウェイが設定されているか確認してください。

ダメな例ゲートウェイが設定されていません。

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1

/etc/yum.repos.d/network.confに以下を追記してください。
デフォルトゲートウェイのアドレスはご自身の環境に合わせてくださいね。

GATEWAY=192.168.1.1

ネットワークサービスを再起動します。

service network restart

デフォルトゲートウェイ(0.0.0.0)が追加されました。これでOK。

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth1
ネームサーバー(DNSサーバー)の設定

DHCPの場合は自動で設定されているかもしれません。

/etc/resolv.confにnameserverのエントリがない場合は追記してください。
自分の場合は自動で入っていました。(以下例です)

; generated by /sbin/dhclient-script
nameserver 192.168.1.1
yumリポジトリのお掃除

忘れがち。
yum installやupdate実行前に必ずクリーンしましょう。

yum clean all
エラーが起こっているyumリポジトリを無効にする

自分はDVDをyumリポジトリに設定しているのですが、うっかりマウントし忘れていたりすると
エラーが発生し以降の処理が打ち切られてしまっていました。(以下はエラーの例です)

エラーが発生しているyumリポジトリのファイルを開いてenable=0としておきましょう。

[root@hogehoge ~]# yum update
読み込んだプラグイン:fastestmirror
更新処理の設定をしています
Determining fastest mirrors
:
base                                                                                     | 3.7 kB     00:00
base/primary_db                                                                          | 4.6 MB     00:01
file:///mnt/media/repodata/repomd.xml: [Errno 14] Could not open/read file:///mnt/media/repodata/repomd.xml
他のミラーを試します。
エラー: Cannot retrieve repository metadata (repomd.xml) for repository: centos-media. Please verify its path and try again
プロキシの下にいる場合

プロキシサーバーのアドレスと認証があればIDとパスワードが必要です。
/etc/yum.confに以下を記載してください。

proxy=http://proxy.net:8080
proxy_username=user1
proxy_password=user1foo

ミラーリストやパッケージ等の接続先サーバーの設定

長い間放置しているとエラーになることがあります。
例えば自分の場合/etc/redhat-releaseをみると6.6 (Final)なので、
/etc/yum.repos.d/CentOS-Base.repoの[base]のmirrorlistは

http://mirrorlist.centos.org/?release=6.6&arch=x86_64&repo=os&infra=stock

となります。実際ブラウザなどで見に行くと・・・

http://mirror.fairway.ne.jp/centos/6.6/os/x86_64/
http://ftp.riken.jp/Linux/centos/6.6/os/x86_64/
http://ftp.tsukuba.wide.ad.jp/Linux/centos/6.6/os/x86_64/
http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.6/os/x86_64/
http://ftp.iij.ad.jp/pub/linux/centos/6.6/os/x86_64/
http://ftp.nara.wide.ad.jp/pub/Linux/centos/6.6/os/x86_64/
http://www.ftp.ne.jp/Linux/packages/CentOS/6.6/os/x86_64/
http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/6.6/os/x86_64/
http://mirror.nus.edu.sg/centos/6.6/os/x86_64/
http://mirror.vodien.com/centos/6.6/os/x86_64/

となってます。理研あたりを見に行ってみると・・・
Not Found
ギャー!

ということで接続先が消えている場合があります。
こんなときはmirrorlistのアドレスを6.xのようにリビジョンまで指定せず
単に「6」としておけばよいです。最新のリビジョンへの接続先のリストが返ってきます。

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

リストのうち1つは以下です。6.7が返ってきていますね!

:
http://ftp.riken.jp/Linux/centos/6.7/os/x86_64/
:

※といってもなぜか普通にyum updateできることもあります。よくわかっていません。

上記を対応するだけで解決したエラー

(注意)下記エラーは発生する原因が1つではありません。よって上記対応を行っても他に原因があれば以下のエラーメッセージが出力されることがあります。ご注意ください。

errno:14(EFAULT, bad address)で失敗していますね。

Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=stock error was
14: PYCURL ERROR 7 - "Failed to connect to 2a02:2498:1:3d:5054:ff:fed3:e91a: ネットワークに届きません"

baseurlと言ってますが、別にいじらなくても解決できることもあるようです。

エラー: Cannot find a valid baseurl for repo: base

上でも書いたけどまぁいちおうもう一度書いときます。

file:///mnt/media/repodata/repomd.xml: [Errno 14] Could not open/read file:///mnt/media/repodata/repomd.xml
他のミラーを試します。
エラー: Cannot retrieve repository metadata (repomd.xml) for repository: centos-media. Please verify its path and try again

参考サイト

はにらぼ☆てっく様
yum update でエラーの場合の対応
https://www.honeycomb-lab.co.jp/blog/tech/?p=866

hogehoge foobar Blog Style5 様
yum/wgetをproxy経由で使う方法(CentOS)
http://d.hatena.ne.jp/mrgoofy33/20110125/1295966614