次のページ 前のページ 目次へ

13. 付録 C : GRASS のソース・コードの入手方法とコンパイルのしかた

Linux 版の GRASS のバイナリは、ほとんど問題なく動作します。いったいどうして ソース・コードをいじりたいと思うのでしょうか?

質問の形をとって答えると、「何でこの GIS のソース・コードは手に入らないん だ? 手に入りさえすれば、どのように動作しているかを理解できるし、好きな ように機能をいじれるのに」(この質問の答えはおわかりですね。多くの商用パッ ケージは、このようにソース・コードがない形態で販売していますから)

お望みなら、

  1. ユーザが作成した、たくさんの alpha や contributed にある関数を追加 できる
  2. ある関数の動作を理解できる(プログラム上の工夫や性能向上のための改良 が、実際にどの程度その機能に影響を与えているか?)
  3. コードの改良と機能強化ができる(こうするつもりなら、 付録 Dを参照のこと)
  4. 何 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 から紹介しましょう。まだリリースされてから日がたっていないので、自分でこの ドキュメントを改訂していません。どうか他のバージョンのインストールとほとんど かわらないことを覚えておいてください。

13.1 GRASS 4.2 を簡単に動かすためのインストール方法

注意:この解説は、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」スクリプト が必要とするスクリプトとファイルがすべて含まれている

コンパイルの大まかな流れ

  1. 地域情報の選択やマシン依存の make に必要な情報を記述するファイルを 作成
  2. 地域情報のリストが記述されているファイルや、マシン依存のコンパイルに 必要な情報についてのリストが記述してあるファイルを編集する(プリンター、 デジタイザーやグラフィック・ドライバなど)
  3. コンパイル・スクリプトを動かす
  4. プログラムをリンクさせるスクリプトを動かす
  5. デバイス・ドライバ設定ファイルを編集する
  6. contrib ディレクトリや alpha ディレクトリにあるプログラムをコンパイル する
  7. GRASS に関連するもしくは GRASS が利用する/利用されるプログラムをコン パイルする

コンパイルの詳細なステップ

  1. 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 コマンドのオーナーとプライオリティのフラグ

  2. 地域情報と環境固有のプログラムのリストを含むファイルの編集 コンパイル対象となるディレクトリのリストが書いてあるファイルは、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 ファイルに移動させた方がよい と思います。
  3. GRASS をコンパイルするプログラムを動かす GISGEN スクリプトは、コンパイル作業を制御します。問題が何もなければ、GISGEN を動かしてただ待つだけです。コンパイルが完全に終わるには、早いワークステー ションなら 約 30 分、遅いものなら 約 8 時間かかります。 GISGEN は lists/GRASS や /lists/$ARCH、lists/local に指定してある コンパイル対象になるディレクトリ名を収集して、そのディレクトリごとに gmake4.2 を走らせます。画面には、GISGEN と UNIX の make プログラムが出す メッセージが表示されます。途中で失敗するとコンパイルが中断されます。失敗 した場合、下記の手順の内のどれかを行なうことになるでしょう。
    1. 失敗したディレクトリにあるコードを修正して、コンパイル上の問題を修正 する。修正後に GISGEN のあるディレクトリに戻り、GISGEN を再実行する。コンパ イルは失敗したディレクトリから再開され、成功すれば、リストにあげられている 次のディレクトリに移り、コンパイルを続行する
    2. GISGEN を再実行する。すでにコンパイルされたコードや ステップ 1 で設定したオプションの修正が必要な場合は、next_step/ $ARCH( ステップ 2 でアーキテクチャ名を設定 していないなら、next_step/next_step)を削除する。削除したなら、GISGEN を 再実行する
    3. 失敗したディレクトリを飛ばす。この場合は、失敗したディレクトリ名の次に コンパイルすることになっているディレクトリ名を list/GRASS や lists/$ ARCH、lists/local の中から捜さなければならない。失敗した名前が、 next_step/ $ARCH にあるので、その名前を次にコンパイルするディレクトリ名に置き換 える。置き換えたら GISGEN を再実行する
    GISGEN が完了すると、next_step ファイルに DONE という単語が書かれ、 画面に「DONE generating GIS binary code」と表示される
  4. GRASS プログラムをリンクする GISGEN はコンパイルしている過程で、ユーザから直接利用できないディレクトリに GRASS プログラムを隠蔽する。ユーザの多くが使うコマンドは、「front.end」と 呼ばれる 単体のプログラムにリンクされる。このプログラムは GRASS の各々 のプログラムにリンクされていなければならない。この作業は GISGEN が終った 後に行われる。ユーザの使用するプログラムにリンクを張る(張り直す)には MAKELINKS スクリプトを実行する
  5. デバイス・ドライバの設定ファイルを編集する グラフィック、印刷、デジタイザーのドライバの組合せはシステムによっていろ いろです。詳細は、GRASS のインストール・ガイドを参照のこと。 注意:グラフィック・ドライバのコンパイルで悩むことになったら、 $GIS/src/display/devices ディレクトリに移り、gmake4.2 を使って該当 するドライバをマニュアルでコンパイルすること
  6. contributed なもしくは alpha なプログラムをコンパイルする GRASS プログラムは、3 つに分類できる。
    MAIN

    ステップ 3 でコンパイルしたプログラム。 これらは十分なテストがほどこされ、信頼性の高いプログラム

    ALPHA

    Alpha プログラムは次のリリースで MAIN に含まれる予定のプログラム

    CONTRIB

    GRASS を使う上で、何らかの作業を遂行するための特定目的にあった プログラムが各サイトで数多く作られている。これらは alpha コードの分類に入れ られる程充分に洗練されていない

    ALPHA プログラムは、src.alpha ディレクトリにある。望みのプログラムをコン パイルしてみよう。そのディレクトリには、Gmakefile があるので、 gmake4.2 を実行するだけで OK 。

    CONTRIB プログラムは、src.contrib ディレクトリにある。これらのプログラム は多種多様である。中には gmake4.2 でコンパイルできるものもあるかもしれない。 これから新しいソフトウエアを書こうとしているプログラマーにとって、きっかけを つかむよい例になるものもある。

  7. GRASS 関連もしくはGRASS と共同して作業するプログラムのコンパイル GRASS のユーザたちは、GRASS と連携して動作させるととても便利なパブリック・ ドメインなプログラムがいくつかあることに気づいた。これらは、 src.related ディレクトリにある。それぞれのディレクトリにある解説にしたがって(解説が ない場合もある)コンパイルすること。 GRASS に関連したプログラム(単独もしくは複数)の機能と GRASS の機能を組み 合わせて動作するのがハイブリッドなプログラムである。これらは、src.garden ディレクトリにある。ハイブリッドなプログラムを動作させるには、関連した プログラムが既にコンパイルされていることが前提になる。また 一般的に gmake4.2 か Gmakefile を使ってコンパイルすることになる。
_____________________________________________________________

残りのコンパイルには少々時間がかかるはずです。GRASS のバイナリをインストール してあるなら、システムのバックアップを取っておいてください(少なくともコンパ イルによって動作しているバイナリに影響をあたえないようにしてください!)。

幸運を祈っています! ソース・コードからすべてをコンパイルしないなら、コン パイル済みのバイナリを利用できる算段をしておいてください。

_____________________________________________________________


次のページ 前のページ 目次へ