Amazon LinuxでYUMを使う時に気をつけるポイント
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
クラメソダー市田です。
今回はAmazon Linuxに関する小ネタです。
結論
最初に結論から言うと、Amazon Linuxには「yum-plugin-priorities」が入ってるから気をつけましょう。これに尽きます。
この記事は、私のドタバタを記録したものになりますが、どなたかの参考になれば幸いです。
経緯
ある検証のために、とあるパッケージをAmazon Linux上でEPELリポジトリからインストールしたかったので、--enablerepo=epelオプションを指定してインストールしました。
インストール自体は何事もなく終わったのですが、インストール時に出る結果表示をきちんと確認せずに、検証作業を進めていました。
その為、検証作業の途中で「期待しているバージョンの動作と違う。。。」という事態になり、改めてバージョンを確認すると、epelで入るはずのバージョンよりも古いバージョンになっていることが分かりました。
「epelリポジトリを指定したのになぜ?」となって、その原因を調べてみた、というのが今回の経緯になります。
原因
最初に書いた通り、Amazon Linuxにはデフォルトでリポジトリの優先度を設定できるプラグインがインストールされていて、その設定が入っています。
実際に/etc/yum.repos.d/amzn-main.repoの内容を確認してみます。
priority=10という設定があるので、「yum-plugin-priorities」というプラグインがインストールされているはずです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ソースコード[amzn-main]name=amzn-main-Basemirrorlist=http://repo.$awsregion.$awsdomain/$releasever/main/mirror.listmirrorlist_expire=300metadata_expire=300priority=10failovermethod=priorityfastestmirror_enabled=0gpgcheck=1enabled=1retries=5timeout=10report_instanceid=yes |
確認してみます。
1 2 | $ rpm -q yum-plugin-prioritiesyum-plugin-priorities-1.1.31-29.26.amzn1.noarch |
やはり入ってました。
動作確認してみる
では、例として、amzon-mainとepelの両方のリポジトリにあるパッケージとして「openvpn」で確認してみます。
デフォルトのままでopenvpnのバージョンを確認すると、どちらのコマンドの場合でも同じリポジトリを参照していることが分かります。
1 2 3 4 5 6 7 | # yum info openvpnVersion : 2.3.6Repo : amzn-main/latest# yum info --enablerepo=epel openvpnVersion : 2.3.6Repo : amzn-main/latest |
次にリポジトリの優先度を変更します。
Amazon Linuxのデフォルトの状態では、amzn-main.repoとamzn-updates.repoのリポジトリ以外は無効化されている(enabled=0)ので、「amzn-main」の優先度をデフォルトの99に変更すれば、--enablerepoオプションで指定のリポジトリを参照するようになります。
次のようにamzn-main.repoを変更します。
1 2 | -priority=10+priority=99 |
この状態で先ほどと同じように確認してみます。
1 2 3 | # yum info openvpnVersion : 2.3.6Repo : amzn-main/latest |
1 2 3 | # yum info --enablerepo=epel openvpnVersion : 2.3.11Repo : epel/x86_64 |
きちんと--enablerepoオプションでepelリポジトリを参照してくれました。
ということで、Amazon Linuxを使う時は、yum-plugin-prioritiesで優先度設定されていることに注意しましょう、という話でした。
以上になります。