Copyright © 2010-2013 j8takagi

要件
**

YACASL2は、LinuxやMac OS Xなど、UNIX系のOS上で動作します。現在動作を確認しているのは、Ubuntu LinuxとVine Linux、Mac OS Xです。

インストール時に、tar gcc makeが必要です。Linuxでは多くの場合、標準でインストールされています。Mac OS Xの場合、Xcodeの「Command Line Tools」に含まれます。

インストールの手順
*********

YACASL2ファイルのダウンロード
==================

YACASL2のサイト (http://www.j8takagi.net/yacasl2/)から、tar.gzまたはtar.xzファイルと、対応する検証用ファイルをダウンロードします。githubのダウンロードページ (http://github.com/j8takagi/YACASL2/downloads/)からtar.gzなどのファイルをダウンロードすることもできます。

YACASL2ファイルの検証
==============

ダウンロードが完了したら、圧縮ファイルが改竄されていないか検証します。検証にはGnuPG分離署名か、MD5ハッシュ値を使います。

GnuPG分離署名での検証
-------------

GnuPGのgpgで圧縮ファイルを検証します。この検証を行うには、GnuPGがインストールされ、自分の秘密鍵と公開鍵のペアが作成されている必要があります。

     $ gpg --verify yacasl2.tar.xz.asc
     gpg: Signature made Sat Oct 27 02:17:16 2012 JST using RSA key ID 25B62DD1
     gpg: Can't check signature: public key not found
     $ gpg --recv-keys 25B62DD1
     gpg: requesting key 25B62DD1 from hkp server keys.gnupg.net
     gpg: key 25B62DD1: public key "j8takagi <j8takagi@nifty.com>" imported
     gpg: Total number processed: 1
     gpg:               imported: 1  (RSA: 1)

     $ gpg --lsign-key 25B62DD1

     pub  2048R/25B62DD1  created: 2012-09-29  expires: never       usage: SC
                          trust: unknown       validity: full
     sub  2048R/92E25C29  created: 2012-09-29  expires: never       usage: E
     [  full  ] (1). j8takagi <j8takagi@nifty.com>

     pub  2048R/25B62DD1  created: 2012-09-29  expires: never       usage: SC
                          trust: unknown       validity: full
      Primary key fingerprint: ...

          .* <.*@.*>

     Are you sure that you want to sign this key with your
     key ".* <.*@.*>"

     The signature will be marked as non-exportable.

     Really sign? (y/N) y

     You need a passphrase to unlock the secret key for
     user: ".* <.*@.*>"
     2048-bit RSA key, ID ........, created 20..-..-..

     <input password> password

     $ gpg --verify yacasl2.tar.xz.asc
     gpg: Signature made Sat Oct 27 02:17:16 2012 JST using RSA key ID 25B62DD1
     gpg: checking the trustdb
     gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
     gpg: depth: 0  valid:   1  signed:   4  trust: 0-, 0q, 0n, 0m, 0f, 1u
     gpg: depth: 1  valid:   4  signed:   0  trust: 4-, 0q, 0n, 0m, 0f, 0u
     gpg: Good signature from "j8takagi <j8takagi@nifty.com>"

MD5ハッシュ値での検証
------------

opensslとdiffで圧縮ファイルを検証します。

     $ openssl md5 yacasl2.tar.gz | diff -s yacasl2.tar.gz.md5sum -
     Files yacasl2.tar.gz.md5sum and - are identical

YACASL2ファイルの展開
==============

YACASL2ファイルをダウンロードしたら、tarコマンドで展開します。

     $ tar xvzf yacasl2.tar.gz

casl2 comet2 dumpwordのビルド
=========================

展開したら、makeコマンドでcasl2 comet2 dumpwordをビルドします。

     $ cd yacasl2
     $ make
     make -C src
     make[1]: Entering directory ‘/home/kazubito/yacasl2/src’
     gcc -c -g -Wall -I ../include casl2.c
     gcc -c -g -Wall -I ../include word.c
     gcc -c -g -Wall -I ../include hash.c
     gcc -c -g -Wall -I ../include cerr.c
     gcc -c -g -Wall -I ../include struct.c
     gcc -c -g -Wall -I ../include cmd.c
     gcc -c -g -Wall -I ../include assemble.c
     gcc -c -g -Wall -I ../include token.c
     gcc -c -g -Wall -I ../include label.c
     gcc -c -g -Wall -I ../include macro.c
     gcc -c -g -Wall -I ../include exec.c
     gcc -c -g -Wall -I ../include dump.c
     gcc -g -Wall -I ../include -o ../casl2 casl2.o word.o hash.o cerr.o st
     ruct.o cmd.o assemble.o token.o label.o macro.o exec.o dump.o
     gcc -c -g -Wall -I ../include comet2.c
     gcc -g -Wall -I ../include -o ../comet2 comet2.o word.o hash.o cerr.o
     struct.o cmd.o exec.o dump.o
     gcc -c -g -Wall -I ../include dumpword.c
     gcc -g -Wall -I ../include -o ../dumpword dumpword.o word.o cerr.o
     make[1]: Leaving directory ‘/home/kazubito/yacasl2/src’

casl2の実行テスト
===========

ビルドしたら、次のコマンドが正常に実行できるかを確認します。正常に実行された場合は、「Hello, World!」と表示されます。

     $ ./casl2 as/hello.casl
     Hello, World!

詳細なテスト
======

make checkコマンドを実行すると、正常にビルドできているかどうかを詳細にテストできます。テストには、しばらく時間がかかります。

     $ make check
     195 / 195 tests passed. Details in /home/username/yacasl2/test/integra
     tion/casl2/Test.log
     All tests are succeded.
     149 / 149 tests passed. Details in /home/username/yacasl2/test/integra
     tion/comet2/Test.log
     All tests are succeded.
     4 / 4 tests passed. Details in /home/username/yacasl2/test/integration
     /dumpword/Test.log
     All tests are succeded.

インストール
======

ビルドが成功したら、make installコマンドで必要なファイルをインストールできます。初期設定では、ホームディレクトリー以下にYACASL2のファイルがインストールされます。

     $ make install

コマンド実行時にオプションを指定することで、インストール先のディレクトリーを変更できます。例えば、/usr/local以下にファイルをインストールするには、次のようにコマンドを実行します。

     $ sudo make install prefix=/usr/local

オプションの詳細は次のとおりです。

オプション   説明   初期設定
PREFIX   インストール時のルートファイル   ~
BINDIR   実行ファイルのインストール先   $prefix/bin
INFODIR   infoファイルのインストール先   $prefix/share/info
CASL2LIBDIR   CASL II ライブラリファイルのインストール先   $prefix/share/casl2lib

環境変数の設定
=======

環境変数PATHやCASL2LIBを設定することで、YACASL2が使いやすくなります。環境変数は、使っているシェルを確認してから設定します。

シェルの確認
------

環境変数の設定方法は使っているシェルによって異なります。シェルは、次のコマンドで確認できます。

     $ echo $SHELL
     /bin/bash

現在もっとも多く使われているシェルは、Bashでしょう。以下、Bashでの設定方法を説明します。

PATHの設定
-------

PATHにYACASL2の実行ファイルのインストール先を追加すると、ディレクトリーの指定を省略してcasl2 comet2 dumpwordを実行できます。例えば、初期設定のまま実行ファイルを~/binにインストールしたときは、次のコマンドで設定できます。

     $ PATH=$PATH:~/bin && export PATH

環境変数の設定は、シェルの初期設定ファイルに追加することでログインしたあと自動的に反映されるようになります。Bashでは~/.bashrcが初期設定ファイルです。次のコマンドで追加できます。

     $ echo ’PATH=$PATH:~/bin && export PATH’ >>~/.bashrc

INFOPATHの設定
-----------

INFOPATHにYACASL2のInfoファイルをインストールしたディレクトリーを追加すると、ディレクトリーの指定を省略してcasl2 comet2 dumpwordを実行できます。例えば、初期設定のままInfoファイルを~/share/infoにインストールしたときは、次のコマンドで設定できます。

     $ INFOPATH=$INFOPATH:~/share/info && export INFOPATH

~/.bashrcには次のコマンドで追加できます。

     $ echo 'INFOPATH=$INFOPATH:~/share/info && export INFOPATH' >>~/.bashrc

CASL2LIBの設定
-----------

環境変数CASL2LIBを設定しておけば、CASL IIプログラム作成時に共通ライブラリを呼び出す手間が小さくなります。例えば、CASL2LIBを~/share/casl2libにインストールしたときは、次のコマンドで設定できます。

     $ CASL2LIB=~/share/casl2lib && export CASL2LIB

~/.bashrcには次のコマンドで追加できます。

     $  echo 'CASL2LIB=~/share/casl2lib && export CASL2LIB' >>~/.bashrc