2016年12月10日

cygwinの依存関係を調べよう

パッケージ削ると動かなくなるとかヒドすぎる。
インストーラが依存関係解析してるんじゃないのか。

などという愚痴が出た準備室で新しいお仕事である。
「なんかcygwinのインストーラがチェックする依存関係、かなり怪しい」という考えの下、提供されているツールからある程度依存関係を調べられないかということを相談していた。

で、cygcheckとlddという二つのコマンドで対処することにした。
1: exeとdllをディレクトリから漁り、どのパッケージ由来かをcygcheckで調べる
2: パッケージに現れるexeとdllをlddにかけて、依存するライブラリを調べる。そのライブラリが所属するパッケージへの依存関係が発生する。

まあ出来ないものじゃないし、とPerlでスクリプトを書いてやってみたのだが、cygcheckがやばいくらい遅い。
どうもcygcheckはパッケージ一覧とファイル一覧を持っていて、パッケージ由来は逆引きをやっているっぽいのだ。
多分ボトルネックになってるのは、HDDだからか、ファイルがバカみたいに増えて単に逆引き自体が遅いか(フルインストールなので60GBを越えている)、のどちらかだろう。
まあどちらにせよ解消しないといけない問題なので、別の方法で解決しようと考え中。

パッケージ一覧から作れば逆引きできるよねえ、Perlなんだし。
posted by chiguri at 00:15| Comment(338) | PC