Fink

Fink の特徴

More than 3 years have passed since last update.

Fink は、 MacOSX/Darwin 用のパッケージ管理ツールで、Unix 用のソフトウェアをインストールすることができます。Fink の特徴は、以下のとおりです。


1. 安定性

Fink は、非常に安定している枯れたパッケージ管理システムです。ドキュメントも頻繁には更新されませんが、それは書き換える必要がほとんどないからです。枯れてはいますが、各パッケージは最新のものに更新され続けています。


2. 依存性を解決

Unix ソフトウェアは、多くの場合他のソフトウェアに依存しています。依存関係を調べ、必要なソフトウェアを依存します。

Fink は、3つの依存関係があります。



  • 依存 ビルド時、実行時ともに依存します。


  • 実行時依存 実行時にのみ依存します。ビルド時にはなくても構いません。


  • ビルド時依存 ビルド時にのみ依存します。ビルド終了後はアンインストールしても構いません。


3. バイナリ配布

Fink では、多くのパッケージがコンパイル済みのバイナリとして提供されます。このため、インストール時間を大幅に短縮することができます。

もちろん、自分でビルドすることも可能です。バイナリインストール後にビルドすることも可能です。


4. 複数バージョンのインストール

Fink は、複数バージョンをインストースできることが前提となっています。

これは少し複雑な仕組みとなっています。例えば、GDAL は、gdal (version 1) と gdal2 があります。他のソフトウェアは、libgdal.1.dylib に依存しているかもしれませんし、libgdal.20.dylib に依存しているかもしれません。



  • gdal-dev gdal-dev にビルド依存する時だけ臨時にインストールされる。


  • gdal2-dev gdal2-dev にビルド依存する時だけ臨時にインストールされる。


  • gdal-shlibs libgdal.1.dylib


  • gdal2-shlibs libgdal.20.dylib


  • gdal 旧バージョンのバイナリ。gdal2 がインストールされると自動的にアンインストールされる。


  • gdal2 最新のバイナリ

-dev について、なぜこうなるかというと、ビルド時に必要なヘッダファイル (gdal-dev と gdal2-dev) は、同じファイル名のものが多いため、両方あると不適切だからです。まちがってインクルードされないように、ヘッダファイルをアンインストール/インストールできる仕組みを備えています。

gdal の場合、バイナリは同じファイル名のため複数バージョンはインストールできません。しかし、ほかの多くのパッケージはバイナリも複数バージョンに対応しています。

Python であれば、python27, python34, python35 など。Ruby であれば、ruby20, ruby21, ruby22, ruby23 があります。モジュールや gems などもそれぞれにあります。ファイル名は、それぞれ /sw/bin/python2.7 や /sw/bin/python3.5 となっているだけなので、モジュールの開発などにも便利です。


5. ライブラリの指定

自分でビルドしたり、他のパッケージ管理システムを使用する場合、リンクは柔軟です。例えば、foo は、libbar.dylib に依存しています。しかし、libbar.dylib は実際には libbar.1.dylib へのシンボリックリンクです。libbar.dylib がアップデートされ、libbar.2.dylib にバージョンアップされたとします。これにより、foo が機能しなくなることもありえます。

この問題を避けるため、Fink では、 foo は libbar.dylib ではなく、libbar.1.dylib にリンクします。これにより、libbar.1.dylib と libbar.2.dylib が両方あっても、変わることなく使うことができます。

foo が libbar.2.dylib でも問題なく動作することが確認されたら、あらためて foo のリビジョンがアップされます。

この他にも、Fink には多くの魅力があります。