次のページ
前のページ
目次へ
Linux 版の GRASS のバイナリは、ほとんど問題なく動作します。いったいどうして
ソース・コードをいじりたいと思うのでしょうか?
質問の形をとって答えると、「何でこの GIS のソース・コードは手に入らないん
だ? 手に入りさえすれば、どのように動作しているかを理解できるし、好きな
ように機能をいじれるのに」(この質問の答えはおわかりですね。多くの商用パッ
ケージは、このようにソース・コードがない形態で販売していますから)
お望みなら、
- ユーザが作成した、たくさんの alpha や contributed にある関数を追加
できる
- ある関数の動作を理解できる(プログラム上の工夫や性能向上のための改良
が、実際にどの程度その機能に影響を与えているか?)
- コードの改良と機能強化ができる(こうするつもりなら、
付録 Dを参照のこと)
- 何 10 MB ものソース・コードをコンパイルしたい。そのためにこの付録が
ある。
付録 Eも参照のこと
まずソース・コードとインストール・ガイドを手に入れてください。プログラマー
ズ・マニュアルとユーザ・リファレンス・マニュアルも欲しくなると思います。
入手方法は、下記の通りです。
ftp moon.cecer.army.mil
login: anonymous
password: your email address
cd pub/grass/grass4.1/release/source
get README.4
get README.5
image
mget s4* (or s5*, your choice)
cd ../../documents
get installGuide.ps.Z
cd /manuals/programmer/postscript
get progman.ps.Z
cd ../../user/postscript
get refman.ps.Z
bye
このサイトは忘れずに。より高度なプログラムのチュートリアルが
pub/grass/grass4.1/document にいくつかあります。ダウンロードできるソース・
コードは 2 種類あります(ここでは GRASS 4.14 について触れていますが、4.15
も利用できます)。pub/grass/outgoing ディレクトリにはユーザから寄せられた
数多くの関数があります(あなたのシステムを強化できる候補となる関数が他にも
たくさんあります)
GRASS バージョン 4.14(4.1.4 とも呼ばれる)のソース・コードをインストール
するには README.4 ファイル、GRASS バージョン 4.15(4.1.5 とも呼ばれる)の場合
は README.5 ファイルにしたがってください。
ソース・コードをインストールしたら、installGuide.ps.Z の圧縮を解いて
印刷してください(もし troff 版が欲しいならとなりのディレクトリから持って
きてくださいたい)。同時に refman.ps.Z と progman.ps.Z も同じようにしたく
なるかもしれませんね。progman.ps.Z はプログラマーズ・マニュアルと呼ばれる
ものですが、データ・フォーマットやディレクトリ構造といった価値ある情報も
含まれています。中堅ユーザ以上なら GRASS のシステム・ユーティリティも知り
たくなるかもしれません。たとえ GRASS のコードからそれらをコールしていなく
ても、です。
それでは、GRASS インストール・ガイド(installGuide.ps.Z)を使って、インス
トールをはじめてください。インストール・ガイドの薄さに最初はとまどうかも
しれませんが、Linux をご自分でインストールしたことがあるなら、GRASS の
インストールに取り掛かる準備ができたも同然です。1、2 個の関数がコンパイル
できなくても気にしないでください。
私のシステムには、ずっとコンパイルしていない関数がいくつもあります。幸いな
ことに、私はそれらの関数を利用しません。いつの日か、それらを直してコンパイ
ルする日がくるのでしょうか!?
_____________________________________________________________
ここで遅ればせながら、新しいリリースの GRASS 4.2 のインストール方法を
ベイラー大学の Web
から紹介しましょう。まだリリースされてから日がたっていないので、自分でこの
ドキュメントを改訂していません。どうか他のバージョンのインストールとほとんど
かわらないことを覚えておいてください。
注意:この解説は、GRASS 4.2 に関するものです。より詳細なインス
トール方法を見てみたいと望まれるなら、インストール・ガイドを参照すること
をお勧めします。
$GIS/src このディレクトリには、GRASS をコンパイルする時に必要な
スクリプトとファイルがあります。そこにあるスクリプト類を動かし、プログ
ラムの設定リストを変更すれば、あなたのシステムにあった GRASS が構築されます。
ソースをコピーしなくても、別のマシンから GRASS のソースがあるディスクをマウ
ントして、コンパイルをすることができます。下記の手続きにしたがって、インス
トールしたいマシンで実行してください。
注意:これらの方法は、あなたが UNIX や C言語、make、シェルスクリ
プトに熟知していることを前提にしています。マーフィーの法則は GRASS にも
ちゃんと当てはまります。マーフィー氏に対抗できるかどうかは、あなたの熟練度
次第です。
注意:GRASS をコンパイルするために、この解説とスクリプトはさま
ざまな種類のマシンで利用されています。この解説を使ってコンパイルしたプラッ
トフォームとオペレーティング・システムを
grass@baylor.edu宛にメール
してください。
ディレクトリ構成
- GISGEN
GRASS をコンパイルするスクリプト
- MAKELINKS
GISGEN を実行した後に使用するスクリプト。ユーザが
実行できるコマンドを作成する
- VERSIO
この GRASS のリリースのバージョンと日付
- generic/
gmake を実行する時に必要なシステムに非依存なファイルが
あるディレクトリ。
- gmake
コンパイルを行うシェル・スクリプト
- make.def
変数を定義する
- make.tail
make 時の追加規則を定義する
- head/
gmake のヘッダー・ファイルのあるディレクトリ。サイトに
よって異なる。ヘッダー・ファイルは、/utils/setup コマンドによって作成される
- lists/
コンパイル対象のプログラムリスト
- GRASS
GRASS 標準のプログラム
- local
サイト固有のプログラム
- ...
アーキテクチャ依存のプログラム
- next_step/
コンパイルの履歴を管理するファイルがあるディレクトリ
で、GISGEN によって使用される。GISGEN が何らかの理由で失敗した時に、失敗
したところから再処理する場合に使用される
- utils/
「setup」スクリプトがあるディレクトリ。「setup」スクリプト
が必要とするスクリプトとファイルがすべて含まれている
コンパイルの大まかな流れ
- 地域情報の選択やマシン依存の make に必要な情報を記述するファイルを
作成
- 地域情報のリストが記述されているファイルや、マシン依存のコンパイルに
必要な情報についてのリストが記述してあるファイルを編集する(プリンター、
デジタイザーやグラフィック・ドライバなど)
- コンパイル・スクリプトを動かす
- プログラムをリンクさせるスクリプトを動かす
- デバイス・ドライバ設定ファイルを編集する
- contrib ディレクトリや alpha ディレクトリにあるプログラムをコンパイル
する
- GRASS に関連するもしくは GRASS が利用する/利用されるプログラムをコン
パイルする
コンパイルの詳細なステップ
- make で使用するファイルを作成する。
GRASS をコンパイルする方法は、マシンや選択した地域情報によってさまざまな
ケースが考えられます。
- コンパイルとライブラリをリンクする時のフラグ
- システムに既にあるライブラリ
- インストールするディレクトリ
- デフォルトのデータベースと選択した地域
/utils/setup シェル・スクリプトを使えば、make で必要な数多くのオプション
および定義の設定が簡単になります。これらの設定は、コンパイルする度に作成
される makefile (約 350 個)が対象になります。あわせて個々の GRASS プログ
ラムをコンパイルするためのシェル・スクリプト(gmake4.2)も作成します。
「utils/setup」を動かして、質問に答えていってください。
makefile の一部は head/ 配下に置かれます。/utils/setup を実行する間に
あなたが指定(もしくは許可)した名前になっています。コンパイルを制御する
ための実行可能なスクリプトは、デフォルトで /usr/local/bin に置かれます。
head/ にできたファイルを調べて、万事 OK か確かめてください。定義された
変数についての簡単な説明は下記の通りです。
- ARCH
GRASS をコンパイルするマシンのアーキテクチャを意味するキーワード
- UNIX_BIN
GRASS の使いはじめに使用するプログラムや gmake が含まれる
ローカル・ディレクトリ
- DEFAULT_DATABASE
ローカルな GRASS のデータベースが含まれるディレクトリ
- DEFAULT_LOCATION
ユーザが最初の段階で使用する GRASS データベース
- COMPILE_FLAGS
コンパイルのフラグ
- LDFLAGS
ライブラリのリンクフラグ
- COMPILE_FLAGS
コンパイルのフラグ
- TERMLIB
低レベルでカーソルの動作を制御するシステム付属のライブラリ
- CURSES
スクリーン上でカーソルを制御するシステム付属のライブラリ
- MATHLIB
システム付属の算術ライブラリ
- LIBRULE
ライブラリをアーカイブ、乱数化する方法
- USE_TERMIO
termio ライブラリが利用可能な場合に使うフラグ
- USE_MTIO
mtio ライブラリが利用可能な場合に使うフラグ
- CAN_CLEAR
端末スクリーンがクリアできるかどうかのフラグ
- DIGITFLAGS
v.digit コマンドのオーナーとプライオリティのフラグ
- 地域情報と環境固有のプログラムのリストを含むファイルの編集
コンパイル対象となるディレクトリのリストが書いてあるファイルは、lists/
ディレクトリにあります。ディレクトリ名は、GRASS の src ディレクトリの相対
パスで記述してあります。lists/GRASS ファイルはどの環境でもコンパイルされる
基本的な GRASS のプログラムがリストされています。/lists/local
と lists/$ARCH がそのファイルに当たります。
-----------------------------------------------------------------
$ARCH はアーキテクチャ名です。utils/setup script を実行する間に
設定することになります。下記のコマンドでどのアーキテクチャにするかを決める
ことができます。
gmake4.2 -sh | grep ARCH
-----------------------------------------------------------------
lists/$ARCH ファイルはもともとは存在しませんが、勝手にこのファイルを
作成して、このアーキテクチャ上で自分がコンパイルしたいプログラムを追加する
ことができます。このアーキテクチャ依存リストを使えば、NFS 経由でソース・
コードをリンクすることによって、マシン毎にいろいろな組合せでプログラムの
コンパイルが可能になります。NFS 経由でマウントすることによって、同一
のソース・コードを共有したマシンは、lists/local にリストされているディレク
トリをコンパイルすることになります。
コメント行がリストすべてに含まれていると思います。# が行頭にある
部分がそれに当たります。lists/local ファイルには、すべてのデジタイザー、
グラフィック、印刷(ハード・コピー)ドライバがリストされています。
マシン固有のドライバはすべてコメントアウトされています。あなたの環境とアー
キテクチャにあったものは、コメントをはずす必要があります。グラフィック・
ドライバ関連は、該当する lists/$ARCH ファイルに移動させた方がよい
と思います。
- GRASS をコンパイルするプログラムを動かす
GISGEN スクリプトは、コンパイル作業を制御します。問題が何もなければ、GISGEN
を動かしてただ待つだけです。コンパイルが完全に終わるには、早いワークステー
ションなら 約 30 分、遅いものなら 約 8 時間かかります。
GISGEN は lists/GRASS や /lists/$ARCH、lists/local に指定してある
コンパイル対象になるディレクトリ名を収集して、そのディレクトリごとに
gmake4.2 を走らせます。画面には、GISGEN と UNIX の make プログラムが出す
メッセージが表示されます。途中で失敗するとコンパイルが中断されます。失敗
した場合、下記の手順の内のどれかを行なうことになるでしょう。
- 失敗したディレクトリにあるコードを修正して、コンパイル上の問題を修正
する。修正後に GISGEN のあるディレクトリに戻り、GISGEN を再実行する。コンパ
イルは失敗したディレクトリから再開され、成功すれば、リストにあげられている
次のディレクトリに移り、コンパイルを続行する
- GISGEN を再実行する。すでにコンパイルされたコードや
ステップ 1 で設定したオプションの修正が必要な場合は、next_step/
$ARCH(
ステップ 2 でアーキテクチャ名を設定
していないなら、next_step/next_step)を削除する。削除したなら、GISGEN を
再実行する
- 失敗したディレクトリを飛ばす。この場合は、失敗したディレクトリ名の次に
コンパイルすることになっているディレクトリ名を list/GRASS や lists/$
ARCH、lists/local の中から捜さなければならない。失敗した名前が、 next_step/
$ARCH にあるので、その名前を次にコンパイルするディレクトリ名に置き換
える。置き換えたら GISGEN を再実行する
GISGEN が完了すると、next_step ファイルに DONE という単語が書かれ、
画面に「DONE generating GIS binary code」と表示される
- GRASS プログラムをリンクする
GISGEN はコンパイルしている過程で、ユーザから直接利用できないディレクトリに
GRASS プログラムを隠蔽する。ユーザの多くが使うコマンドは、「front.end」と
呼ばれる 単体のプログラムにリンクされる。このプログラムは GRASS の各々
のプログラムにリンクされていなければならない。この作業は GISGEN が終った
後に行われる。ユーザの使用するプログラムにリンクを張る(張り直す)には
MAKELINKS スクリプトを実行する
- デバイス・ドライバの設定ファイルを編集する
グラフィック、印刷、デジタイザーのドライバの組合せはシステムによっていろ
いろです。詳細は、GRASS のインストール・ガイドを参照のこと。
注意:グラフィック・ドライバのコンパイルで悩むことになったら、
$GIS/src/display/devices ディレクトリに移り、gmake4.2 を使って該当
するドライバをマニュアルでコンパイルすること
- contributed なもしくは alpha なプログラムをコンパイルする
GRASS プログラムは、3 つに分類できる。
- MAIN
ステップ 3 でコンパイルしたプログラム。
これらは十分なテストがほどこされ、信頼性の高いプログラム
- ALPHA
Alpha プログラムは次のリリースで MAIN に含まれる予定のプログラム
- CONTRIB
GRASS を使う上で、何らかの作業を遂行するための特定目的にあった
プログラムが各サイトで数多く作られている。これらは alpha コードの分類に入れ
られる程充分に洗練されていない
ALPHA プログラムは、src.alpha ディレクトリにある。望みのプログラムをコン
パイルしてみよう。そのディレクトリには、Gmakefile があるので、 gmake4.2
を実行するだけで OK 。
CONTRIB プログラムは、src.contrib ディレクトリにある。これらのプログラム
は多種多様である。中には gmake4.2 でコンパイルできるものもあるかもしれない。
これから新しいソフトウエアを書こうとしているプログラマーにとって、きっかけを
つかむよい例になるものもある。
- GRASS 関連もしくはGRASS と共同して作業するプログラムのコンパイル
GRASS のユーザたちは、GRASS と連携して動作させるととても便利なパブリック・
ドメインなプログラムがいくつかあることに気づいた。これらは、 src.related
ディレクトリにある。それぞれのディレクトリにある解説にしたがって(解説が
ない場合もある)コンパイルすること。
GRASS に関連したプログラム(単独もしくは複数)の機能と GRASS の機能を組み
合わせて動作するのがハイブリッドなプログラムである。これらは、src.garden
ディレクトリにある。ハイブリッドなプログラムを動作させるには、関連した
プログラムが既にコンパイルされていることが前提になる。また 一般的に
gmake4.2 か Gmakefile を使ってコンパイルすることになる。
_____________________________________________________________
残りのコンパイルには少々時間がかかるはずです。GRASS のバイナリをインストール
してあるなら、システムのバックアップを取っておいてください(少なくともコンパ
イルによって動作しているバイナリに影響をあたえないようにしてください!)。
幸運を祈っています! ソース・コードからすべてをコンパイルしないなら、コン
パイル済みのバイナリを利用できる算段をしておいてください。
_____________________________________________________________
次のページ
前のページ
目次へ