« 最新映画音楽で悩む | トップページ | スピードスケートの手袋で悩む »

2018年3月19日 (月)

yumのエラーに悩む

この投稿は自分自身の覚え書きのためなので、「yum」が何のことだかわからないという方はスキップされることをお勧めします。

ええとまずはWindowsとかMacとかの同列にあたるLinuxというものがありまして、つまり「OS」の一種なわけですが、yum(ヤム)というのはLinuxの世界でにおける「アプリのインストーラ」という位置づけになります。

Linuxでは例えばAというアプリをインストールするのにBがインストールされていることが必要であったり、BをインストールするにはまたCが必要だったりするので、こういう「依存性の解決」を自動的にやってくれるyumは重宝されているのです。

yumはWindowsUpdateのような機能も持っているので、「yum update」と入力すると、あちこちのネットをアクセスして必要な情報を集めてupdateしてくれる。

そんなyumなのだが、昨年インストールしたCentOS6.9のyumは最初からおかしかった。こういうLinux系のOSをインストールすると、まずは「yum update」してOS環境を最新にするのだが、それがいきなりエラーになる。

[root@DELL15 ~]# yum update
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
更新処理の設定をしています
Loading mirror speeds from cached hostfile
epel/metalink                                                                                    | 6.3 kB     00:00
* base: ftp.iij.ad.jp
* epel: ftp.iij.ad.jp
* linuxtech-release: linuxsoft.cern.ch
* nux-dextop: mirror.li.nux.ro
* updates: ftp.iij.ad.jp
base                                                                                             | 3.7 kB     00:00
http://vault.centos.org/6.9/os/Source/i386/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
他のミラーを試します。
To address this issue please refer to the below knowledge base article

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please open a ticket with Red Hat Support.

エラー: Cannot retrieve repository metadata (repomd.xml) for repository: extras. Please verify its path and try again
[root@DELL15 ~]#

上で赤く色付けたURLが間違っているというご指摘だ。

このURLはたとえばiPhoneで言えばAppStoreに相当するものでrepo(リポジトリ)とよばれている、複数のURLがあるのはそれぞれミラーと言って、アクセスが集中しないように世界中に配置されているのだ。

そのURLが間違っているというのは、*.repoのファイル内容が間違っているのかもしれない。間違っているとされているURLからたどって正しそうなURLを発見し、なぜ間違うのかを調べることにする。

repoファイルの中を見るとこうなっていて、どうやら変数$releaseverがおかしいらしいことが分かった。しかし、yumの中身を触るわけにもいかなくて(yum自体はpythonで書かれている;私はpythonがあまり得意ではない)、やむを得ず(yumだけに)変数を直接書き換えて正しいIRLへアクセスできるようにする。


[root@DELL15 yum.repos.d]# more CentOS-Base.repo
[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-6

repoファイルをいくつも書き換えたが、最後にこういう不正URLが残った。何だか変なURLだが、i386というフォルダがないことがはっきりした。
[root@DELL15 ~]# yum update
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
更新処理の設定をしています
Loading mirror speeds from cached hostfile
* base: ftp.yz.yamagata-u.ac.jp
* epel: ftp.iij.ad.jp
* linuxtech-release: linuxsoft.cern.ch
* nux-dextop: mirror.li.nux.ro
* updates: ftp.iij.ad.jp
base                                                                                             | 3.7 kB     00:00
extras                                                                                           | 2.9 kB     00:00
extras/primary_db                                                                                | 741 kB     00:01
linuxtech-release                                                                                | 2.6 kB     00:00
http://mirror.li.nux.ro/li.nux.ro/nux/dextop/el7/i386/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
他のミラーを試します。
To address this issue please refer to the below knowledge base article

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please open a ticket with Red Hat Support.

http://li.nux.ro/download/nux/dextop/el7/i386/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
他のミラーを試します。
エラー: Cannot retrieve repository metadata (repomd.xml) for repository: nux-dextop. Please verify its path and try again
[root@DELL15 ~]#

そのrepoファイルの中身はこんな感じ。

[root@DELL15 yum.repos.d]# more nux-dextop.repo
[nux-dextop]
name=Nux.Ro RPMs for general desktop use
baseurl=http://li.nux.ro/download/nux/dextop/el7/$basearch/ http://mirror.li.nux.ro/li.nux.ro/nux/dextop/el7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-nux.ro
protect=0

[nux-dextop-testing]
name=Nux.Ro RPMs for general desktop use - testing
baseurl=http://li.nux.ro/download/nux/dextop-testing/el6/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-nux.ro
protect=0
[root@DELL15 yum.repos.d]#

ここでは$releaseverに加えて$basearchを書き換えるのが正解だったのだが、変なrepoは嫌だなぁと思って、このファイルの拡張子を変えてしまった。

そうしたら、なんとyum updateが動作するようになった。

しかし本来の目的は単なるupdaetだけじゃなくて、あるアプリケーション(lftp)をインストールすることだった。rpmでlftp*.rpmをインストるすることも試みたが、依存性の解決がとてもできなかったので、yumでインストールできるととても助かる。

「yum install lftp」が期待通りに動作してくれて、ftpクライアントが動作するようになった。これはうれしい。

しかし、3月18日現在で、なぜかupdateがsqliteでコケる。
http://ftp.nara.wide.ad.jp/pub/Linux/centos/6.9/os/i386/repodata/4f6c8f1366b087aa971f71dff8fb76ad492cd78df2e3378398e0b71799f7e61e-filelists.sqlite.bz2: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found" 他のミラーを試します。

他のミラーサーバーでも軒並みコケるので、repoの内容自体に問題があるのかもしれない。この点はもっと勉強しないとダメかも。

|

« 最新映画音楽で悩む | トップページ | スピードスケートの手袋で悩む »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« 最新映画音楽で悩む | トップページ | スピードスケートの手袋で悩む »