YACASL2は、LinuxやMac OS Xなど、UNIX系のOS上で動作します。現在動作を確認しているのは、Arch LinuxとUbuntu Linux、Mac OS Xです。
インストール時に、tar gcc makeが必要です。Linuxでは多くの場合、標準でインストールされています。Mac OS Xの場合、Xcodeの「Command Line Tools」に含まれます。
YACASL2のサイトから、tar.gzまたはtar.xzファイルと、対応する検証用ファイルをダウンロードします。githubのダウンロードページからtar.gzなどのファイルをダウンロードすることもできます。
ダウンロードが完了したら、圧縮ファイルが改竄されていないか検証します。検証には、GnuPG分離署名か、MD5ハッシュ値を使います。
GnuPGのgpgで圧縮ファイルを検証します。この検証を行うには、GnuPGがインストールされ、自分用の秘密鍵が作成されている必要があります。
また、あらかじめtar.gzまたはtar.xzファイルと、対応する検証用ファイルtar.gz.ascまたはtar.xz.ascファイルを同じディレクトリーに保存し、そのディレクトリーに移動しておきます。
次の手順ではgpg --verifyによる検証を2回実行させています。1回目では検証に失敗する一方で、必要な鍵などの情報を得ています。その鍵をgpg --recv-keysで取得し、gpg --lsign-keyでローカル署名した後、再度gpg --verifyによる検証を行い、成功させています。
$ ls yacasl2.tar.gz*
yacasl2.tar.gz yacasl2.tar.gz.asc
$ gpg --verify yacasl2.tar.xz.asc
gpg: assuming signed data in 'yacasl2.tar.gz'
gpg: Signature made Tue 02 Jun 2026 01:14:17 AM JST
gpg: using EDDSA key 77EC282A2F7317EBFF7BFD067F593ED86D88E1D5
gpg: Can't check signature: No public key
$ gpg --recv-keys 77EC282A2F7317EBFF7BFD067F593ED86D88E1D5
gpg: key 7F593ED86D88E1D5: public key "j8takagi <j8takagi@nifty.com>" imported
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2029-06-01
gpg: Total number processed: 1
gpg: imported: 1
$ gpg --lsign-key 77EC282A2F7317EBFF7BFD067F593ED86D88E1D5
pub ed25519/7F593ED86D88E1D5
created: 2026-04-23 expires: 2031-04-30 usage: SC
trust: unknown validity: unknown
sub cv25519/B3433115DBD37726
created: 2026-04-23 expires: never usage: E
[ unknown] (1). j8takagi <j8takagi@nifty.com>
pub ed25519/7F593ED86D88E1D5
created: 2026-04-23 expires: 2031-04-30 usage: SC
trust: unknown validity: unknown
Primary key fingerprint: 77EC 282A 2F73 17EB FF7B FD06 7F59 3ED8 6D88 E1D5
j8takagi <j8takagi@nifty.com>
This key is due to expire on 2031-04-30.
Are you sure that you want to sign this key with your
key "j8takagi <j8takagi@nifty.com>" (4223493EBCB683A9)
The signature will be marked as non-exportable.
Really sign? (y/N) y
$ gpg --verify yacasl2.tar.gz.asc
gpg: assuming signed data in 'yacasl2.tar.gz'
gpg: Signature made Tue 02 Jun 2026 01:14:17 AM JST
gpg: using EDDSA key 77EC282A2F7317EBFF7BFD067F593ED86D88E1D5
gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 1 signed: 1 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1 valid: 1 signed: 0 trust: 1-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2029-06-01
gpg: Good signature from "j8takagi <j8takagi@nifty.com>" [full]
gpg: Signature notation: manu=2,2.5+1.12,0,3
opensslで圧縮ファイルから生成したMD5ハッシュ値が、ダウンロードしたyacasl2.tar.gz.md5sumファイルの内容と同じかどうかdiffで検証します。
$ openssl md5 yacasl2.tar.gz | diff -s yacasl2.tar.gz.md5sum - Files yacasl2.tar.gz.md5sum and - are identical
展開したら、makeコマンドを実行してビルドします。
YACASL2のコマンド実行ファイルであるcasl2 comet2 dumpword casl2rev comet2monitorが生成されます。
$ cd yacasl2 $ make make -C src make[1]: Entering directory ‘/home/username/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/username/yacasl2/src’
ビルドしたら、次のコマンドが正常に実行できるかを確認します。 正常に実行された場合は、「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 succeeded. 149 / 149 tests passed. Details in /home/username/yacasl2/test/integra tion/comet2/Test.log All tests are succeeded. 4 / 4 tests passed. Details in /home/username/yacasl2/test/integration /dumpword/Test.log All tests are succeeded.
YACASL2のコマンド実行ファイルはビルド後、make installコマンドでインストールできます。インストール先は初期設定では、~/binディレクトリーです。
$ make install
インストール先を変更するには、prefixなどのオプションを指定します。 例えば/usr/localディレクトリーにインストールするには、次のようにコマンドを実行します。
$ sudo make install prefix=/usr/local
オプションの詳細は次のとおりです。
| オプション | 説明 | 初期設定 |
|---|---|---|
| prefix | インストール時のルートファイル | ~ |
| bindir | 実行ファイルのインストール先 | $prefix/bin |
| infodir | infoファイルのインストール先 | $prefix/share/info |
環境変数PATHやINFOPATHを設定することで、YACASL2が使いやすくなります。
PATHの設定 ¶PATHにYACASL2の実行ファイルのインストール先が含まれている場合は、ディレクトリーの指定を省略してcasl2などの実行ファイル名を指定できます。PATHは、次のコマンドで確認できます。
$ echo $PATH
YACASL2のインストール先の初期設定である~/binディレクトリーは、OSインストール時にPATHに含まれている場合もあります。含まれていない場合は、次のコマンドでPATHに追加できます。
$ PATH=$HOME/bin:$PATH; export PATH
~/.profileや~/.bashrcなどの初期化ファイルにPATHへの追加を設定しておけば、YACASL2のコマンド実行時に常にディレクトリーの指定を省略できます。
次は、PATHに~/binが二重に追加されることを防ぐ書き方です。
case ":${PATH}:" in
*":${HOME}/bin:"*) ;;
*) export PATH="${HOME}/bin:${PATH}" ;;
esac
INFOPATHの設定 ¶環境変数INFOPATHとInfoが適切に設定されていれば、次のコマンドでYACASL2のInfoを表示できます。
$ info yacasl2
INFOPATHにYACASL2のInfoファイルをインストールしたディレクトリーの追加は、次のコマンドでできます。なお、YACASL2のInfoファイルインストール先の初期設定は、~/share/infoです。
$ INFOPATH=$HOME/share/info:$INFOPATH; export INFOPATH
~/.profileや~/.bashrcなどの初期化ファイルにINFOPATHへの追加を設定しておけば、常にYACASL2のInfoを表示できます。
次は、INFOPATHに~/share/infoが二重に追加されることを防ぐ書き方です。
case ":${INFOPATH}:" in
*":${HOME}/share/info:"*) ;;
*) export INFOPATH="${HOME}/share/info:${INFOPATH}" ;;
esac