Help us understand the problem. What is going on with this article?

Ubuntu on WSL にSATySFi v0.0.3 を導入する

はじめに

Ubuntuなるものを人生であまり使ったことがない人がSATySFiを導入してみたので、同じ沼にはまる人が出ないように、導入方法を書きます。

アドバイスをくれた方々、本当にありがとうございました。

前提条件

  • 筆者はあまりUbuntuとかWSLに詳しくありません
  • 導入するSATySFiのバージョンは0.0.3ですので、バージョンが変われば必要になる依存ソフト等も変わるので気をつけてください
  • OSはWindows10です
  • 困ったらTwitterで有識者に質問するのが一番です
  • コピーしたテキストをUbuntuの"黒い画面"に貼り付ける時は右クリックできます

WSLのインストール

まずは生のWindowsにWSL(Windows Subsystem for Linux)を入れます。
WSLの意味や仕組みについては各自調べるのが良いでしょう。

  • コントロールパネル -> プログラム -> プログラムと機能 -> Windowsの機能の有効化または無効化 を選び、専用画面を開く
  • 「Windows Subsystem for Linux」にチェックを入れる
  • 再起動するかどうか聞かれるので再起動する

Ubuntuの導入と初期設定

  • マイクロソフトストアを起動させて「Linux」と検索する
  • Ubuntuを選択してインストールする
  • Ubuntuを起動する
  • 名前とパスワードを入力することを求められるので入力する(半角英字と半角数字だけを使うのが安全です)
  • 日本語言語パックのインストールをします
$ sudo apt -y install language-pack-ja
  • ロケールを日本語に設定します
$ sudo update-locale LANG=ja_JP.UTF8
  • ここで一旦閉じてもう一度起動させる

この程度だと思います。それ以外にも適当に設定してみて良いんじゃないでしょうか

依存ソフトウェアをインストールする

ここがわりと重要です。これがないと進みません。「事前に必要なもの」を読んで導入していきましょう。

$ sudo apt update
$ sudo apt install bzip2
$ sudo apt install build-essential
$ sudo apt install git
$ sudo apt install m4
$ sudo apt install make
.
.
.
$ sudo apt install ruby

みたいな感じで適当に入れていきます。ココらへんは本当に適当にやりましたが、「事前に必要なもの」にかかれているものは全て導入する必要があります。

あとはきちんとメッセージを読んで、インストールに失敗しているものが出ないようにしましょう。出たらきちんと入れ直しましょう。

opam 2.0のインストール

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

でインストールできます。

ocaml 4.06.0のインストール

ここでやり方がわからず、沼りました。やり方さえ分かれば簡単に終わります。途中質問がされますが、きちんとメッセージを読んで答えましょう(筆者はどちらにもyと答えました)。
この行程はかなり時間がかかりますが、終わるまでのんびり待ちましょう。TeXLiveのインストールのようなものです。

$ opam init --comp 4.06.0 --disable-sandboxing
$ eval $(opam env)
$ opam repository add satysfi-external https://github.com/gfngfn/satysfi-external-repo.git
$ opam update

opamとOCamlがきちんと入ったかを確かめるには以下のように入力し、このように出力されれば成功です。

$ opam --version

2.0.0

$ ocaml --version

The OCaml toplevel, version 4.06.0

バージョン番号がずれていたら

$ rm -rf ~/.opam

をして

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

からやり直します。

ビルド

まずはSATySFiのリポジトリをクローンして、次にその中でビルドします。

$ git clone https://github.com/gfngfn/SATySFi.git
$ cd SATySFi

$ opam pin add satysfi .
$ opam install satysfi

これでビルドが終わり、SATySFiを使うことができるようになります。

$ satysfi -v

  SATySFi version 0.0.3

上のようになれば成功です。

コンパイルのための設定

つい最近からフォント周りのインストール方法が変わりました。
download-fonts.shを実行するとフォントをダウンロードします。
install-libs.shを実行するとパッケージとフォントが適切な位置に置かれます。
なので、このようにすると完了します。

$ sudo ./download-fonts.sh
$ sudo ./install-libs.sh

以下古い方法

昔は自力でフォントを用意しなければいけませんでしたが、今はフォントは全て用意されています。しかし、SATySFiが認識できる場所にパッケージや、その他必要なファイルが無いため、それの設定を行います。

$ mkdir ~/.satysfi
$ cp -r ~/.opam/4.06.0/share/satysfi/dist ~/.satysfi

これを実行することでSATySFiをエラーなくコンパイルすることができます(demoファイルをコンパイルするにはsatysfi-demo.jpgファイルが必要ですが)。

Windowsにあるファイルをコンパイルする

Ubuntuの方でファイルを作って編集してコンパイルするというのはかなりハードルが高いので、Windowsの方で編集等をして、Ubuntuの方でコンパイルするというのが現実的だと思います。

Windowsのターミナルでwslと打ち込むとUbuntuが起動して、SATySFiを実行できるようになります。

なので

# Ubuntuの起動
$ wsl
#コンパイル
$ satysfi main.saty
# Ubuntuの終了
$ exit

などのようにしてやるとよいでしょう。

SATySFiを更新する

さて、一度環境を構築しても更新できなければあまり意味はありません。特にまだ若くて更新が活発なSATySFiならなおさらです。

まず、SATySFiのパッケージ等が更新された時は、

$ git pull origin master

をして、中身を最新のものにした後、

$ opam uninstall satysfi

をして一旦アンインストールをします。そして

$ opam reinstall satysfi

を実行して再インストールします。

opamやocamlのバージョンアップが必要になった場合は、

$ opam update

などをして諸々の情報を上げておけば良いでしょう

SATySFiにパッケージを追加する

SATySFiで使える便利そうなパッケージを見つけたら、追加したくなると思います。しかし、現在はパッケージマネージャが無いため、自力で追加するしかありません。

しかし、WindowsからWSL上のファイル構造をそのまま弄るのは危険すぎるので、上手くやらなければいけません。

とは言っても意外と方法は簡単で、ダウンロードしたファイルを ~/.satysfi/dist/packagesに移動させるだけです。

Windows本体にダウンロードするなり、$ git cloneするなりした後、フォルダに行き、

$ cp hoge.satyh ~/.satysfi/dist/packages

とするだけです。勿論、これはUbuntu上に$ git cloneした場合でも同じです。

もし、そのパッケージがあった場合にはその最新版のパッケージがあるフォルダに移動してもう一度上記のコマンドを実行するだけです。

おまけ

make-satysfi.shを使えば自動でできます。また、やり方がわからなくなったらこれを参考にすれば手打ちでも可能だと思います。
ZRさんありがとうございます。

puripuri2100
新規記事は投稿しない予定です
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした