Ubuntu 18.04.1 LTSでSATySFi 0.0.3をインストールしてみる

# この記事について
この記事は自分のLinuxPCにSATySFiを2018年1月に入れてみたときのメモです。
SATySFiのインストールに参考にしたのは公式の[README-ja.md](https://github.com/gfngfn/SATySFi/blob/master/README-ja.md)です。ほぼこのままになるので[README-ja.md](https://github.com/gfngfn/SATySFi/blob/master/README-ja.md)を見ながらやったほうが早いかもしれません。

対象はタイトルの通り

* Ubuntu 18.04.1 LTS
* SATySFi 0.0.3

となります。

# 準備
まずSATySFiをインストールするための準備をしていきます。

```
sudo apt-get update
sudo apt-get install build-essential ruby git m4 unzip curl

sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)

# 以下のコマンドは OPAM がファイルに追記してもよいか聞いてきます。
# 必ず説明を読み，環境変数を適切に設定してください。
# ここで--disable-sandboxingを指定することでOpam2をインストールする。
# これをしないとOCamlを4.06.0に変更できない
opam init --comp 4.06.0 --disable-sandboxing

eval $(opam env)

ocaml --version

# ここでもしバージョンが4.06.0でないなら次のコマンドを打ちます
# もしERRORが起きたら指示通りにopam switch create 4.06.0を打ってください
# このコマンドは時間がかかるかもしれないので気長にお待ちください
opam switch 4.06.0

opam repository add satysfi-external https://github.com/gfngfn/satysfi-external-repo.git
# このコマンドも時間がかかります
opam update
```
これでSATySFiを入れるための準備は終了です。

# SATySFiをインストールする
[Githubのリポジトリ](https://github.com/gfngfn/SATySFi)をクローンで落としてきて、ビルドしてインストールします。

```
# clone
cd (SATySFiを入れたいフォルダ)
git clone https://github.com/gfngfn/SATySFi.git
cd SATySFi

# build
opam pin add satysfi . # 最後の"."を忘れずに。実行すると大量にインストールが行われます。
opam install satysfi
```
これでSATySFiのインストールは完了です。試しに```satysfi --help```や```satysfi --version```と入力してみるとSATySFiの情報が色々と出てくるかと思います。（出てこなきゃこれまでのインストールのどこかで失敗しているはず。）

# 世界への挨拶
```git clone```したときの```SATySFi/demo```のフォルダごと適当なワークスペースにコピーして中に入ります。そこで```satysfi demo.saty```と入力すると

```
  target file: 'demo.pdf'
! [Error] package file not found:
      dist/hash/default-font.satysfi-hash
    candidate paths:
      /home/(USER_NAME)/.satysfi/dist/hash/default-font.satysfi-hash
      /usr/local/share/satysfi/dist/hash/default-font.satysfi-hash
      /usr/share/satysfi/dist/hash/default-font.satysfi-hash
```
というエラーが発生します。このエラーの内容を読んでみるとフォントファイルが```~/.satysfi/dist```の下で見つからなかったようなので[ここ](https://qiita.com/pochiMasahiro/items/91f2eecbffaf85c3f2a3)を参考に```~/.satysfi```フォルダを作成していきます。```.satysfi```については[こちら](https://github.com/gfngfn/SATySFi/blob/master/memo-ja-how-to-use.md)を参考にしてください。それでは```.satysfi/dist```を用意していきます。
まずフォルダが存在しないので```mkdir ~/.satisfi```としてフォルダを作成します。
そして @na4zagin3 さんにコメントで教えていただいた情報によると、```cp -a "$(opam var share)/satysfi/dist" ~/.satysfi```を実行すると、SATySFi本体のビルド中にダウンロードされていたフォントをインストール完了後にopam管理下のディレクトリにコピーされたdistごと```~/.satysfi```にコピーしてきます。

再度```satysfi demo.saty```を実行してみるとうまく行く…かと思いきやまだ次のエラーがでてきます。

```
! [Error] satysfi-logo.jpg: No such file or directory
```
このエラーによると```satysfi-logo.jpg```が見つからないと言うだけなので[ここ](https://github.com/gfngfn/SATySFi/blob/master/tests/images/satysfi-logo-rgb.jpg)の```satysfi-logo-rgb.jpg```を```satysfi-logo.jpg```という名前でダウンロードしてきて```demo.saty```と同じフォルダに配置します。<br>
そして何度めかの正直で```satysfi demo.saty```を実行してみると```output written on 'demo.pdf'.```と出力されて```demo.saty```と同じフォルダに```demo.pdf```という名前でPDFが吐き出されているはずです。<br>
これでようやく世界に挨拶ができました。

# SATySFiのアップデートとアンインストール
再インストール(アップデート)は```opam reinstall satysfi``` を実行、アンインストールは```opam uninstall satysfi```を実行するとできます。

# 感想
SATySFiをインストールしてみて感じたのはとにかく時間がかかるということのみです。OpamやOCaml、Ocaml4.06.0、Rubyなどをインストールする必要がある為か大量のインストールが発生します。実際Windows XPに入れたUbuntu 18.04.1でのSATySFiのインストールは約3時間かかりました。
この記事は[README-ja.md](https://github.com/gfngfn/SATySFi/blob/master/README-ja.md)の丸パクリ記事に少しだけのインストールメモとフォントのダウンロードの指定を追記しただけの記事ですが参考になると嬉しいです。