MacPortsでインストールしたソフトウェアを依存関係を考えつつリストする
再インストールするときなどに使うため、MacPortsでインストールしたプログラムをリストアップしておきたい。これには、
% port installed
や
% port installed active
とすればよい。
だけどこれだけではvariantを指定してカスタマイズしているときに、インストールがうまくいかないことが起きるに決まっているので、依存関係を考慮してもう少し賢いリストを作りたい。
ということで書いてみた
使いかたはファイル中のusageにあるように実行すればよい。
% port installed active | grep -v '^The'| port-deps-tsort.rb libart_lgpl @2.3.20_0 libiconv @1.12_0 ncursesw @5.6_1 ncurses @5.6_0 => ncursesw expat @2.0.1_0 gettext @0.17_3 => libiconv,ncurses,expat glib2 @2.16.4_0+darwin_9 => gettext,libiconv : rb-redcloth @3.0.4_0 => ruby rb-gnomecanvas @0.17.0-rc1_0 => ruby,libgnomecanvas,rb-glib2,rb-gtk2 subversion-python25bindings @1.5.0_1+no_bdb => expat,neon,apr,apr-util,subversion,python25,gettext,libiconv,serf,cyrus-sasl2 rb-rote @0.3.4.r189_0 => ruby,rb-redcloth,rb-syntax,rb-rake %
というように、依存関係で上からインストールしていけば良いように順序を整理して出力する。 MacPortsのレジストリを見ているので、depends_runやdepends_buildは考慮されないけれど、実際問題としては問題にならないと思ってる。
ちょっと内部的な話を書くと、rubyのtcktkライブラリを使ってtclで書かれたMacPorts Registry APIを実行している。すごいよ、Ruby/Tk!
はじめはObjective-C用のMacPortsFrameworkをRubyCocoa経由で使おうとしたのだけどSEGVするので断念した。
| 固定リンク
最近のコメント