s1090142

Top > s1090142

s1090142 - 6年目で卒業した男 卒業明記を忘れてた、~s1090142/以下のファイルは今はないので悪しからず

適当に遊べるゲーム Edit

/home/student/s1090142/pub/bin/lbreakoutブロック崩し
/home/student/s1090142/pub/bin/lgeneral戦車(?)
/home/student/s1090142/pub/bin/lpairsペア当て
/home/student/s1090142/pub/bin/ltrisテトリス

入れてみたらGUIが綺麗だった。が、hdwでの実行がうまく行ってないので要調査。

LGames http://lgames.sourceforge.net/index.php

学内ビルドのススメ Edit

学内で野良ビルドを作成する場合のテクニック。クセがあるので参考までに。

2006年現在、std?とhdw?ではOSのバージョンが異なる(SunOS 5.10, SunOS 5.8)ので同一バイナリは利用できない。 野良ビルドを作成する場合は両WSでビルドする必要がある。しかし、共通するリソースファイルまで両WS用に用意していると容量を大きく取りすぎる。また、重複したファイルが存在するのもスマートでない。

よって共通するファイルは共通ディレクトリに、OSに依存するファイルはそれぞれのディレクトリに分けてインストールすることにする。

ツリー構造 Edit

/home/student/$USER/usr/
                     +--- bin/共通バイナリ
                     +--- man/共有マニュアル
                     +--- lib/共通ライブラリ
                     +--- ...
                     +--- ...
                     |
                     + local/
                          +--- SUN5.10
                          |      +--- bin/5.10用バイナリ
                          |      +--- man/5.10用マニュアル
                          |      +--- lib/5.10用ライブラリ
                          |      +--- ...
                          |
                          +--- SUN5.8
                                 +--- bin/5.8用バイナリ
                                 +--- man/5.8用マニュアル
                                 +--- lib/5.8用ライブラリ
                                 +--- ...

ホームディレクトリ以下にusr/というディレクトリを設け、そのディレクトリに共通するファイルを保存する。更に、usr/以下にlocal/というディレクトリを作成し、その下に各OSに依存したファイルをOSバージョンで切り分けて保存する。

configure,make Edit

最近の*nixアプリケーションもconfigure, makeとすれば大概ビルドは成功するので、その辺は言及しない。

上のツリー構造に合わせたconfigure, makeのオプションでビルドを仕掛ける。

まずは、std?、SunOS 5.10用ビルドを作成する。

% rlogin std1dc1
% cd $SRC_DIR  ... ソースを展開したディレクトリ
% ./configure --prefix=$HOME/usr --exec-prefix=$HOME/usr/local/SUN5.10
% make
% make install

次に、hdw?、SunOS 5.8用ビルドを作成する。

% rlogin hdw1dc1
% cd $SRC_DIR  ... ソースを展開したディレクトリ
% ./configure --prefix=$HOME/usr --exec-prefix=$HOME/usr/local/SUN5.8
% make
% make install

"--prefix", "--exec-prefix"を適当に使って共通ファイル、依存ファイルのインストールディレクトリを指定してconfigureを実行する。後は、make, make installと実行して、アーカイブをインストールする。

これで以下のディレクトリにファイルが保存されるでしょう。

/home/student/$HOME/usr/local/SUN5.10/...
/home/student/$HOME/usr/local/SUN5.8/...
/home/student/$HOME/usr/...

共通起動スクリプト Edit

基本的に実行ファイルはOS依存なので、std?での起動は

% $HOME/usr/local/SUN5.10/bin/hoge

hdw?での起動は

% $HOME/usr/local/SUN5.8/bin/hoge

と使い分けが必要になります。

ログイン先に合わせてコマンドPATHを切り替えるのは面倒なので、以下のようなスクリプトを用意します。

#!/usr/local/bin/bash
 
PROGRAM=`echo $0 | sed -ne "s/.*\/\(\w\)/\1/p"`
USER=(要編集:学籍番号)
MACHINE=`/usr/local/bin/env PATH=/bin:/usr/bin uname -r`
APP=/home/student/$USER/usr/local/SUN$MACHINE/bin/$PROGRAM
 
if [ -x $APP ] ; then
    $APP $*
else
    $PROGRAM $*
fi

これを実行ファイルの名前、例えばhoge、で$HOME/usr/bin/以下に保存します。このファイルをユーザーが起動すると、それをトリガーにOS依存の実行ファイルを起動します。

/home/student/$USER/usr/
                     +--- bin/hoge ... ユーザーが起動するコマンド
                     |
                     + local/SUN5.10/bin/hoge  ... 実際に実行されるコマンド
                     + local/SUN5.8/bin/hoge  ... 実際に実行されるコマンド

よって、OS依存の実行ファイルが生成された場合でも、以下のコマンドでhdw?, std?の両WSでの起動がスムーズに行えるでしょう。

/home/student/$USER/usr/bin/hoge

環境変数(PATH, MANPATH) Edit

実行ファイル、MANファイル共にusr/以下に保存されているので、以下のようにパスを通しておけば良い。

setenv PATH $PATH:/home/student/$USER/usr/bin
setenv MANPATH $MANPATH:/home/student/$USER/usr/man

注意 Edit

クセがある手法の上、適当に説明を省いている所もあるので参考にする場合は注意されたし。

xrea