cygwin のパッケージ管理

今回は久々にコンピュータ関連のエントリで、cygwin のパッケージ管理についての覚書です。

1. パッケージ情報の取得

パッケージ情報はコマンド cygcheck を使うことで取得できます。 いくつかの実行例を挙げておきます。

インストールされているパッケージの一覧

$ cygcheck -c
Cygwin Package Information
Package                  Version             Status
_update-info-dir         00899-1             OK
alternatives             1.3.30c-10          OK
autoconf                 8-1                 OK
autoconf2.1              2.13-10             OK
autoconf2.5              2.65-1              OK
(略)

パッケージが何を含むかを表示

$ cygcheck -l zlib
/usr/share/doc/Cygwin/zlib.README
/usr/share/doc/zlib/ChangeLog
/usr/share/doc/zlib/FAQ
/usr/share/doc/zlib/README

あるファイルがどのパッケージに含まれているのかを確認

$ cygcheck -f /usr/bin/clear
ncurses-5.7-18

2. ソースパッケージのインストール

setup.exe のパッケージ選択画面で、パッケージ名に「(source)」あるいは「(sources)」と付いているものはソースパッケージで、インストールしてもソースがファイルシステムに置かれるだけです。 これらを使うためにはマニュアルでビルド、インストールする必要があります。

ソースパッケージをビルド、インストールするためにはコマンド cygport を使用します。 元々 cygport はパッケージを作成するためのコマンドの様ですが、ソースパッケージのインストールにも使います。

例えば setup.exe より cairo-1.8.10-1 のソースパッケージをインストールすると、/usr/src の下に必要なソースがインストールされます。 このうちの cairo-1.8.10-1.cygport というファイルを引数として cygport を呼び出します。

$ cd /usr/src
$ cygport cairo-1.8.10-1.cygport prep		(ビルドディレクトリ作成、ソース展開、パッチ適用)
$ cygport cairo-1.8.10-1.cygport compile	(ビルド)
$ cygport cairo-1.8.10-1.cygport test		(テスト)
$ cygport cairo-1.8.10-1.cygport install	(インストール)

この他ダウンロードから作業ディレクトリ削除まで一通り実施する「all」というコマンドオプションも用意されています。 詳細はオンラインマニュアルやコマンドヘルプで確認してください。

なお、実際にインストールされるバイナリパッケージの名称は .cygport ファイルの PKG_NAMES で指定されたものになります。 ソースパッケージとバイナリパッケージは1対1に対応しているわけでなく、一つのソースパッケージから複数のバイナリパッケージがインストールされることがあります。(どちらかというとそっちの方が多いのかも)

3. おまけ

最近になってから cygpath というパス名の Windows 表記 - Cygwin 表記変換を実行するプログラムの存在を知りました。 何かの時に役に立つかも知れません。

$ cygpath -w /usr/bin
C:\cygwin\bin