初心者もOK! FreeBSD質問スレッド その50
レス数が900を超えています。1000を超えると表示できなくなるよ。
0918名無しさん@お腹いっぱい。
NGNG> それともcurrentに出てたように、fgrep -l libstdc++で狙い撃ち?
> でもそれも大変よね?
grep と pkg_which をつかってスクリプト書けば、入れ直す
必要のあるportsを自動でリストアップできるよ。
漏れは5.3betaからRELENG_5に移行したのでlibstdc++問題は関係なかったけど、
以前からportsのバージョンうpがらみでちょくちょく似たことをしている。
漏れは毎回手でコマンドライン書くのでスクリプトにはしてないんだけど
for f in /usr/local/{bin,libexec,sbin}/* /usr/local/lib/lib*.so.*; do
file $f | egrep -qs 'ELF.*(dyn|share)' && ldd $f | egrep -q 'libstdc\+\+' && pkg_which $f
done | sort -u > /tmp/pkgs
みたいな感じ。ファイル全体をgrepさせるよりはfileとldd使う方が速い。
対象ファイルの指定は実際はもっといろいろ指定しないといけないけどね。
なぜこんなことしてるかというと、今のportsの依存関係は無条件で全部継承さ
れちゃうので、実際には関係ないのも依存関係が記録されるからなんだよね。
例えば、imakeはほとんどperlと関係ないにも関わらず、imakeがインストールす
る小さいperlスクリプトのためにperlにdependしてて、そのせいで全てのXクラ
イアントの依存対象にperlが記録されてしまう。
普通の人は時間がかかること以外はそれでも困らないと思うけど、
漏れはportsのインストールの途中またはインストール後に手を加えることも
わりとあって、portupgradeにお任せで全部入れ直しとはできないもんで。
レス数が900を超えています。1000を超えると表示できなくなるよ。