技術

Amazon Linux で yum が使えなくなった

お久しぶりです。

主に仕事とダークソウル2で多忙でした。
ダークソウル2は早々にクリアしてしまったんですが、噂によると1回も死なずにクリアしたり1回も篝火を使わずにクリアするとなんか指輪がもらえるらしく、現在はノーデス・ノー篝火縛りをひたすらやっております。
挑戦回数も27回目となりリアル亡者化してる感がありますが、最後の巨人〜忘れられた罪人〜鉄の古王までは集中が切れなければだいたい安定していける感じなってきてます。
このあたりはそのうちクリアが見えてきたら別途記事にする予定です。

ダークソウル2以外では、購入したSSDで一悶着あったり、購入したマザーボードで一悶着あったり、NUCでサーバー立ててみたり、Haswell RefreshでPC組んでみたり、osx86に関する知見が深まったりと色々あったんですが書く時間と気力がありませんでした。

さてタイトルの件ですが、Amazon Linux 2014.03でyumを実行すると以下のようなエラーが出てcheck-updateもupgradeもできなくなってしまいました。

読み込んだプラグイン:priorities, security, update-motd, upgrade-helper
Config error: コマンド「updateinfo」はすでに定義済みです

英語だとこうですかね。

Loaded plugins: priorities, security, update-motd, upgrade-helper
Config error: Command “updateinfo” already defined

でまぁこれは/etc/yum.confのpluginsを0にする(か、nopluginsオプションを付けて実行でもOKだと思う)ととりあえずは回避できました。
何かyumのプラグインに問題が起きてるらしいという事で/etc/yum/pluginconf.d/に入ってるプラグインの設定ファイルでひとつひとつオン・オフしながら確認したら、どうもsecurityプラグインに問題あるようでした。

これがまぁ当たり障りがなさそうなプラグインならオフにしたまま常用しても良いかなとは思ったんですが、securityってオフにしたらいかにもヤバそうな名前です。
そこでAWSのコンソールからLaunch More Like Thisしてまっ更な環境を立ち上げた後にyumで更新して様子を観察してみることにしました。
Launch More Like Thisといっても元のAMIがAmazon Linux 2012.09なのでそこからの更新です。

check-updateしてみたら以下のような出力があり(抜粋)、どうもyum本体のバージョンアップによりyum-plugin-securityが必要なくなったようです。

Obsoleting Packages
coreutils.x86_64                 8.21-13.31.amzn1                   amzn-main   
    coreutils-libs.x86_64        8.4-19.15.amzn1                    installed   
cryptsetup.x86_64                1.6.2-2.11.amzn1                   amzn-main   
    cryptsetup-luks.x86_64       1.2.0-7.11.amzn1                   installed   
cryptsetup-libs.x86_64           1.6.2-2.11.amzn1                   amzn-main   
    cryptsetup-luks-libs.x86_64  1.2.0-7.11.amzn1                   installed   
iptables.i686                    1.4.18-1.22.amzn1                  amzn-main   
    iptables.i686                1.4.12-2.15.amzn1                  installed   
iptables.x86_64                  1.4.18-1.22.amzn1                  amzn-main   
    iptables.x86_64              1.4.12-2.15.amzn1                  installed   
kmod.x86_64                      14-2.7.amzn1                       amzn-main   
    module-init-tools.x86_64     3.16-5.10.amzn1                    installed   
perl-core.x86_64                 5.16.3-280.36.amzn1                amzn-updates
    perl.x86_64                  4:5.10.1-127.15.amzn1              installed   
util-linux.x86_64                2.23.2-6.21.amzn1                  amzn-updates
    util-linux-ng.x86_64         2.17.2-13.15.amzn1                 installed   
yum.noarch                       3.4.3-137.51.amzn1                 amzn-main   
    yum-plugin-security.noarch   1.1.30-14.13.amzn1                 installed 

そして実際にupgradeした後に、/etc/yum/pluginconf.d/を見てみたらsecurity.confが無かったので、このsecurity.confが無い状態が正常のようです。

これで元の環境のほうもsecurity.confを削除することで問題は解決しましたが、しかしなぜsecurity.confが残ってたのかが気になります。

しかしこれは過去にやった作業を思い出したらすぐに分かりました。
今回yumが使えなくなったインスタンスを立ち上げた際、Amazon Linux 2014.03で動いてた旧インスタンスのルートディレクトリをrsyncでAmazon Linux 2012.09で立ち上げたインスタンス(今回のインスタンス)にコピーしたからでした。
rsyncでコピー先の余分なファイルを削除する設定にしてなかったため、Amazon Linux 2012.09に元々入ってるsecurity.confが残ってしまったものと思われます。

原因は私のしょっぱいオペミスですね。

コメントを残す

メールアドレスが公開されることはありません。



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください