
背景
昔から動いているScientific Linuxにパッケージをインストールしたいと相談を受けたので、とりあえずyumコマンドでインストールしようとしたところ、以下のようなメッセージが表示されました
1 | http://ftp.scientificlinux.org/linux/scientific/6.5/x86_64/os/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found" |
404となっていたので、リポジトリのURLが変わってしまったのかなと思って調査した内容を記載します。
情報の収集
まず、サーバーの情報を集めます。
ディストリビューションについて
/etc/redhat-releaseを確認します。
1 | # more /etc/redhat-release |
リポジトリについて
/etc/yum.repos.d/の下のファイルを確認します。
1 | # ls /etc/yum.repos.d/ |
試しにyum updateを実行してみます。
1 | # yum update |
以上より、sl, sl-security, sl6x, sl6x-securityのみ有効になっていることがわかります。
それぞれsl.repo, sl6x.repoを修正すればよいことがわかります。
リポジトリのURLの修正
まず、既存のURLを確認します。
エラーになったURLは
1 | http://ftp.scientificlinux.org/linux/scientific/6.5/x86_64/os/repodata/repomd.xml |
でした。sl.repoでbaseurlが記載されていて
1 | baseurl=http://ftp.scientificlinux.org/linux/scientific/$releasever/$basearch/os/ |
となっていました。なので、一旦http://ftp.scientificlinux.org/linux/scientific/にアクセスしてみます。
すると、バージョンのディレクトリ一覧が表示されました。ここの階層まではディレクトリは存在するようです。しかしバージョンの中には今回の対象である6.5はありませんでした(一番古くても7.0)
バージョン名以外のディレクトリもあったので漁ってみると、obsoleteというディレクトリの下に6.5というディレクトリが存在しました!6.5のディレクトリ内はアーキテクチャの一覧があるので、これでアクセスできそうです!
repoファイルの修正
URLのscientificと6.5の間にobsoleteを追加すれば良いので、viで開いて一括置換します。
viで開いた後
1 | :%s/\/scientific\//\/scientific\/obsolete\//g |
というコマンドで一括置換し、保存します。sl.repo、sl6x.repoに対して行いました。
動作確認
正しくリポジトリにアクセスできるようになったか確認します。
1 | # yum update |
無事リポジトリへアクセスできるようになりました。
まとめ
今回は放置されていたサーバーで急な要件が発生して慌てて対応しました。しかし、本来は常日頃からメンテナンスを行い、日々のアップデートに追従していくのが重要だと思います。オンプレならではの問題と思われるかもしれませんが、クラウド移行してもコンテナやマシーンイメージのメンテナンスは重要だと思います。