Fink の特徴
18/03/16 08:18
Fink は、 MacOSX/Darwin 用のパッケージ管理ツールで、Unix 用のソフトウェアをインストールすることができます。Fink の特徴は、以下のとおりです。
1. 依存性を解決
Unix ソフトウェアは、多くの場合他のソフトウェアに依存しています。依存関係を調べ、必要なソフトウェアを依存します。
Fink は、3つの依存関係があります。
2. バイナリ配布
Fink では、多くのパッケージがコンパイル済みのバイナリとして提供されます。このため、インストール時間を大幅に短縮することができます。
もちろん、自分でビルドすることも可能です。バイナリインストール後にビルドすることも可能です。
3. 複数バージョンのインストール
Fink は、複数バージョンをインストースできることが前提となっています。
これは少し複雑な仕組みとなっています。例えば、GDAL は、gdal (version 1) と gdal2 があります。他のソフトウェアは、libgdal.1.dylib に依存しているかもしれませんし、libgdal.20.dylib に依存しているかもしれません。
なぜこうなるかというと、ビルド時に必要なヘッダファイル (gdal-dev と gdal2-dev) は、同じファイル名のものが多いため、両方あると不適切だからです。まちがってインクルードされないように、ヘッダファイルをアンインストール/インストールできる仕組みを備えています。
4. ライブラリの指定
自分でビルドしたり、他のパッケージ管理システムを使用する場合、リンクは柔軟です。例えば、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 には多くの魅力があります。
--
作成 2016年3月18日
1. 依存性を解決
Unix ソフトウェアは、多くの場合他のソフトウェアに依存しています。依存関係を調べ、必要なソフトウェアを依存します。
Fink は、3つの依存関係があります。
依存 | ビルド時、実行時ともに依存します。 |
実行時依存 | 実行時にのみ依存します。ビルド時にはなくても構いません。 |
ビルド時依存 | ビルド時にのみ依存します。ビルド終了後はアンインストールしても構いません。 |
2. バイナリ配布
Fink では、多くのパッケージがコンパイル済みのバイナリとして提供されます。このため、インストール時間を大幅に短縮することができます。
もちろん、自分でビルドすることも可能です。バイナリインストール後にビルドすることも可能です。
3. 複数バージョンのインストール
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 | 最新のバイナリ |
なぜこうなるかというと、ビルド時に必要なヘッダファイル (gdal-dev と gdal2-dev) は、同じファイル名のものが多いため、両方あると不適切だからです。まちがってインクルードされないように、ヘッダファイルをアンインストール/インストールできる仕組みを備えています。
4. ライブラリの指定
自分でビルドしたり、他のパッケージ管理システムを使用する場合、リンクは柔軟です。例えば、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 には多くの魅力があります。
--
作成 2016年3月18日