media-libs/libpng-1.4.3 対応

emerge world したら libpng が 1.2 系から 1.4 系になった。そのままいろいろコンパイルしてたらこんな感じでコケまくったのでその対応についてのメモ。

/bin/grep: /usr/lib64/libpng12.la: No such file or directory
/bin/sed: can't read /usr/lib64/libpng12.la: No such file or directory
libtool: link: `/usr/lib64/libpng12.la' is not a valid libtool archive
make[3]: *** [libxfcegui4.la] エラー 1

古い libpng12 を見に行って落ちてますね。

対応方法

emerge のログを見ればわかるんだけど

LOG: postinst

Run /usr/sbin/libpng-1.4.x-update.sh to fix libtool archives (.la)


WARN: postinst
Old versions of installed libraries were detected on your system.
In order to avoid breaking packages that depend on these old libs,
the libraries are not being removed.  You need to run revdep-rebuild
in order to remove these old dependencies.  If you do not have this
helper program, simply emerge the 'gentoolkit' package.

  # revdep-rebuild --library libpng12.so.0

Once you've finished running revdep-rebuild, it should be safe to
delete the old libraries.  Here is a copy & paste for the lazy:
  # rm '/usr/lib64/libpng12.so.0'


となっているので、コレに従ってやっておくだけ。

1. libpng-1.4.x-update.sh を実行して fix する
$ sudo /usr/sbin/libpng-1.4.x-update.sh

何かメッセージが出るのかと思ったけど特に出ない。不安になる。
(一応ヒトコトだけ出る)

2. revdep-rebuild する

libpng.12.so.0 についてのみやればいいようだけど、念のため全部やっておく。

$ sudo revdep-rebuild

インストールしたパッケージの数によるけど、結構かかる。

3. 古いライブラリを削除

消さなくてもいいような気もするが、安全に削除できるって書いてあるし消してみる。

$ sudo rm /usr/lib64/libpng12.so.0


これだけでいいみたい。

あとはさっきコケた emerge を再開してちゃんと通ることを確認した。

$ sudo emerge --resume