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リポジトリを無効にする
自分は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