« 第2回「詳解Objective-C 2.0」読書会は、7/28(月) 池袋で | トップページ | 第2回 「詳解 Objective-C 2.0 読書会」行ってきた »

2008.07.27

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するので断念した。

|

« 第2回「詳解Objective-C 2.0」読書会は、7/28(月) 池袋で | トップページ | 第2回 「詳解 Objective-C 2.0 読書会」行ってきた »