Fedora16でPerlのパッケージが更新できなくなったと思ったら・・・

そもそもPerlを使わないので放置しておいたのですが・・・。

何とも気持ち悪いのでこの状態を解除しようと動いたわけです。

そもそもどういう状態?

yumによるアップデートで

トランザクションの確認エラー
file /usr/share/man/man3/Socket.3pm.gz from install of perl-Socket-2.001-1.fc16.x86_64 conflicts with file from package perl-4:5.14.2-195.fc16.x86_64

と出るわけです。とりあえずperl-Socketのパッケージとperl本体のパッケージが衝突しているために更新できない、ということを言ってきています。

それ自身の意味はわかるのですが、なぜこうなるか不明のまま放置しておいたわけです。

で、ちょっと見回ってみると

英語やら中国語やらでこの件について疑問を持っている人もいたようで私だけではなかった、と安心してしまいました。

そのページに書いてあったことから解決法らしき文章があったので状態を確認してみました。

ちょっとした不思議な状態

で、パッケージの状態を確認するために

# rpm -qa | grep perl | sort

と入れてみました。つまりperl関連のパッケージをすべて出力しなさい、といったわけですね。

そうすると・・・

mod_perl-2.0.5-7.fc16.x86_64
mod_perl-devel-2.0.5-7.fc16.x86_64
perl-5.14.2-195.fc16.x86_64
perl-5.14.2-197.fc16.x86_64
perl-AnyEvent-5.27-6.fc16.noarch
・・・

・・・ん?

なぜにperlのパッケージのバージョン違いが二つも入っている?

というわけで原因判明です。つまり、バージョン違いのパッケージがうまく更新されずに残ってしまったためにもう一つの方で依存性に引っかかってしまった、ということらしいです。

理由がわかれば後は簡単

つまり、古い方のパッケージを(依存性も含めて)吹っ飛ばせばいいわけです。

なので、

# yum erase perl-5.14.2-195.fc16.x86_64

で、古い方に依存している各パッケージを削除すれば状態は整合される、というわけですね。

まあ、削除すると時々上位側のファイルまで間違って吹っ飛ぶ可能性もあるので本当ならperl関連のパッケージをすべて削除した後に再インストールした方が安全なのですが、

今回はyum(というかrpm)に処理を任せました。

確認するとかなりの数のダブりがあったようで、よくもまあこれでパッケージ更新が出来ていたな、との感想を持ちました。

日本語で検索しても同じような記事がなかったので他の人は大丈夫?

ということが気になりました。どうなのでしょうかね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この記事のトラックバック用URL