これは2003年6月に(株)アスキーより発売されました「 Cygwin+Cygwin JE−Windowsで動かすUNIX環境」のサポートページです。 (株)アスキーによる公式なものではないことなどから 「限定バージョン」とさせていただきます。
ここでは本書やCygwinに関連するいろいろなことを書いてみようと思います。
以下は私見ですが、他の著者やアスキーの意向とは若干違うところがあるかもしれませんが そんなに大きく違わないはずです。
先行するCygwin本(ソフトバンク本、D-art本)はおそらくUNIX入門者をメインターゲットに しているものと思いますが、本書の場合はUNIXコマンド一般は知っていて一応は使用できる人を 想定しています。したがって、先発本にあるような「UNIXコマンド解説」はほとんど行って いません。Cygwin環境独自の話題やCygwin環境のクセに対する記述に力を入れ、導入部分 (インストール方法や環境設定)と少々突っ込んだ解説(Windowsのセキュリティや Cygwinコマンド解説)を充実させています。
付属CD-ROMには本書の共著者である佐藤氏により構築された"Cygwin JE"を 収録しています。これは日本語環境で有用なアプリケーションのソースやそれらをCygwin環境下で コンパイルするためのパッチをもとに、setup.exeを利用して導入できる形で佐藤氏がパッケージ化 したものです。内容的にはすでにあちこちのWeb上で公開されていたり "X on Windows"のパッケージに含まれているものがほとんどですから、 この"Cygwin JE"を目的に本書を購入するのは、正直あまりおすすめしません。 というか、そういう人にはこの本は高価に感じられるのではないでしょうか?
"Cygwin JE"の入手が目的であれば、佐藤氏によって公開されたhttp版 を入手するほうがよいかもしれません。
本書に収録されているバージョンのCygwinは動作しません。
バージョン1.5.0以降のCygwin(cygwin1.dll)であれば使えるかもしれませんが、
私は現在「Windows2003 Server日本語版」を試用できる環境にないので確認できていません。
聞いたところでは、bash は動作しないがそれ以外は動くらしいです。
あの分類は、開発者向けはともかくあとは結構適当というか完全に主観に基づいています。 まあアクセス権が設定された環境のユーザか管理者でなければふつうはsetfaclなどは 使わなさそうなのでああなっています。
いくつかのコマンドやオプションの説明は誌面の都合で削除されました。特に、開発者向けの ところではdlltoolのみ残っていますがこれはどうにか押し込むことができました。 その他のコマンドについてはコマンド名だけ冒頭にあげていますが、これはまともに機能しない コマンドがあるのでそのことに関する注釈を入れたかったのが個人的な理由です。
「2ちゃんねる」のCygwinスレッド(UNIX板)では「なぜインストーラが日本語化されていない のか」という声もありました。これはそもそも検討自体していなかったと思いますが、 (後付けの)理由としては以下のようなことがあります:
先行するソフトバンク本のような、UNIX入門者をターゲットとする形態であれば「メッセージが 日本語化されたインストーラ」を収録するのもいいかと思いますが、前述の理由から今回の この本には必要とはあまり思っていません。
以下の校正漏れや修正ミスを確認しています。
※ 一部ではすでに第二刷が流通しており、そちらではいくつかは修正済みです。
-l
"オプションの説明文中-x
"、"-c
"オプションの
説明文中-i
"オプションの説明文中-n
"オプションの説明文中-n
オプションを複数指定すると、
ライブラリファイルの作成に使用した〜
他にも見つかりましたらお知らせください。
※ 3ページ目の日付が「2002年5月」なのは有名なので
言わなくていいです…
参考までに、校了に間に合わなかった記事の個人的修正版を公開します。
※ 一部ではすでに第二刷が流通しており、そちらでは差し替えられている記事もあります。
締め切り等の都合で本文に入れられなかった情報を示します。
コマンドリファレンスで説明していないオプション"-Q"があります。
$ cygrunsrv -Q Dhcp [Enter] Service Dhcp exists ────────────────(サービスとその有無) Type : Share Process ────────(プロセスの種類) Current State : Running ────────────(現在の状態) Controls Accepted : Accept Stop, Accept Shutdown ──(現在可能な制御) $ cygrunsrv -Q sshd [Enter] Service sshd exists Type : Own Process Current State : Stopped Controls Accepted : $
参考のために用意した補足情報です。書籍本文とあわせてお読みください。
WinXP Home の場合、Windowsのログオンに使用するユーザ名を変更することは できません(コントロールパネルから変更できるのはユーザの氏名情報です)。 これは WinXP Home の仕様です。
従って、WinXP Home をご利用ですでに「ユーザ名が日本語文字のアカウント」で使用している 場合は別の新しいユーザを作成する必要があります。ちなみに、WinXP Professional では 欄外注にある通り、管理ツールを使用してユーザ名を変更することができます。
説明文では「Cygwinを利用するアプリケーションを、 ソースコードを開示せずに配布するような場合」とかかれていて、 箇条書きのところが「Cygwinを商用利用する場合は〜」となっています。 これはもちろん、 「Cygwinを利用するアプリケーションを、ソースコードを開示しないで配布するような 場合はRedHatからライセンスを別途購入する必要がある」というのが正しい説明です。 GPLの要件を満たすかどうかと、それが商用利用かどうかは無関係です。
GPLのもとでライセンスされるソフトウエアを有償で頒布しても何ら問題ありませんし、
ふつうに行われています。
もっとも、コストに比してあまりにも法外な額の金銭を得ようとするのは
無理があるでしょう。
また、たとえばあるプロセッサ用にカスタマイズしたGCCをプロセッサのメーカAに
有償で提供する際、「カスタム版GCC」の開発者は、「カスタム版GCC」をメーカA
以外に全く公開しなくても(メーカAとの間でそのような契約を締結しても)、
GCC自体のライセンスがGPLのままなのであれば問題ありません。
メーカAも、開発者から得た「カスタム版GCC」を社外に公開しなくてもGPLには違反していません。
ただし、もしメーカAが社外に対しても(あるいは開発者がメーカA以外に対しても)
「カスタム版GCC」を公開する場合はGPLに従って、
バイナリパッケージとともにそのソースコードも、
バイナリパッケージを入手した人が望むなら入手できるようにしないといけません。
参照: FSFによる説明
gccの"-shared
"オプションを用いないでDLLを
構築しようとしてもp291の例のとおりにはいかないかもしれません
(この例はdlltoolコマンドのオンラインマニュアルにあるがままです)。
実際にそれで困ることはないかと思いますが、興味があるかたのために
"-shared
"オプションを用いない場合の例を示しておきます。
p292にあるhello-dll.cのソースに次の記述を追加してください。
#include
文の次あたりでいいでしょう。
asm (".section .drectve");
asm (".ascii \"-export:hello\"");
以下の手順でコマンドを投入します。同じようなことを2回やっているように見えますが、 リロケータブルなDLLを作るためにこうしています。
$gcc -c hello-dll.c
── オブジェクトファイルを生成 $dlltool --dllname cyghello.dll -z cyghello.def -e exports.o -l libhello.dll.a hello-dll.o
── エクスポートシンボル定義ファイル、エクスポートファイルを生成 $gcc -mdll -o junk.tmp -Wl,--base-file,base.tmp hello-dll.o exports.o
── ベースファイルを生成(この後"junk.tmp
"は不要) $dlltool --dllname cyghello.dll --base-file base.tmp --output-exp _temp.exp --def cyghello.def
── エクスポートファイルを生成(この後"base.tmp
"は不要) $gcc -mdll -o cyghello.dll hello-dll.o -Wl,_temp.exp
── DLLを生成 $gcc -o hello main.c -L. -lhello.dll
── 試しに、DLLを使うプログラムをコンパイル
このようにしてDLLを構築できますが、実際にはp292のように
gccの"-shared
"オプションで済ませる方が
はるかに簡単でしょう。なお、"-shared
"オプションでDLLを
構築した場合はインポートライブラリが構築されません。DLLとは別に用意する必要が
あるなら
Cygwin User's Guideの
Building and Using DLLs
に示されている次のようなコマンドを実行すればよいでしょう。
gcc -shared -o cyg${
module}.dll \ -Wl,--out-implib=lib${
module}.dll.a \ -Wl,--export-all-symbols \ -Wl,--enable-auto-import \ -Wl,--whole-archive ${
old_lib} \ -Wl,--no-whole-archive ${
dependency_libs}
ここで、"${
module}
"は
構築するDLL名、"${
old_lib}
"は
全てのオブジェクトファイル
(スタティックライブラリに含まれるオブジェクトファイル、
単体のオブジェクトファイル)、
"${
dependency_libs}
"は
リンクに必要なインポートライブラリを(あれば)指定します。
Emacs をインストールしただけでは、WnnやCannaによる日本語入力はできません。 (Emacs の仕様)
WnnやCannaを用いて日本語入力を行うには、 Tamagoや YC のようなEmacsLispパッケージ を自分でインストールして適切に設定する必要があります。
Cygwinは、管理者によって適切な設定が行われたUNIXマシンでもなければ、 必要なソフトウエア込みでインストールできるLinuxディストリビューション でもありません。日本語を扱う上で必要なものは自分で導入する必要があります。
「Cygwin+Cygwin JE」に関するリンクを次に示します。