🐪

OCaml Set Up (With WSL and OPAM)

2022/09/24に公開

WSL に OCaml をインストールする。

環境

エディション	Windows 11 Education
バージョン	22H2
OS ビルド	22621.382
エクスペリエンス	Windows Feature Experience Pack 1000.22632.1000.0

WSL

ドキュメント

wsl のインストールに関する Microsoft の公式ドキュメントは下記にある。

WSL のインストール | Microsoft Learn

ドキュメントの対象はバージョン 2004 からになっている。Windows Update を定期的に適用していれば、Windows のバージョンは 21H2 などになっているはずである。今回は先日公開された 22H2 を使うが、大きく違いはないと思う。

インストール

  • cmd で検索をしてコマンドプロンプトを開く。

cmd

  • Linux の環境として Ubuntu をインストールする。
wsl --install
  • 実行後
C:\Users\admin>wsl --install
要求された操作には管理者特権が必要です。
インストール中: 仮想マシン プラットフォーム
仮想マシン プラットフォーム はインストールされました。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
インストール中: Ubuntu
Ubuntu はインストールされました。
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。

再起動をする。再起動後に自動で Ubuntu が立ち上がる。ユーザー作成とパスワード設定を行う。その後、コマンドプロンプトを開き、

  • wsl に関するパッケージの更新
wsl --update

コマンド実行後に更新があれば Windows の再起動を行ったほうが良いかもしれない。

Ubuntu

Ubuntu のインストールを行ったので、Ubuntu 内の設定を行う。

apt

apt は Ubuntu にインストールされているパッケージ管理システムである。新しくソフトウェアをインストールしたい場合に用いる。

  • パッケージ一覧の更新を行い、それを元にパッケージの更新を行う。
sudo apt update -y; sudo apt upgrade -y

opam

opam は OCaml 用のパッケージマネージャーである。

  • インストールを行う。
sudo apt install opam -y

opam 設定

opam をインストールすると OCaml を使用することができるが、opam の設定を行うと OCaml のバージョンを変更したり、他のパッケージを管理することができる。

  • opam のインストール
opam init
  • ~/.profile 設定
Do you want opam to modify ~/.profile? [N/y/f]
(default is 'no', use 'f' to choose a different file) y

y を選択した場合 ~/.profile に設定を書き込んでログイン時に opam を有効にするようにする。各自で好きな選択を行うとよい。

  • opam init hook
A hook can be added to opam's init scripts to ensure that the shell remains in sync with the opam environment when they
are loaded. Set that up? [y/N] n

y を選択した場合 opam の init スクリプトを実行するときに opam の環境を同期したままにできる。よく分からない。各自で好きな選択を行うとよい。

  • 環境変数の更新
eval $(opam env)

opam で用いる環境変数の更新を行う。

OCaml バージョン

  • OCaml バージョンの確認
ocaml --version

opam switch

実行例

$ ocaml --version
The OCaml toplevel, version 4.08.1

$ opam switch
#  switch   compiler             description
→  default  ocaml-system.4.08.1  default
  • OCaml バージョンの候補
opam switch list-available | grep base

実行例

$ opam switch list-available | grep base
(省略)
ocaml-base-compiler                    4.11.0                                 Official release 4.11.0
ocaml-base-compiler                    4.11.1                                 Official release 4.11.1
ocaml-base-compiler                    4.11.2                                 Official release 4.11.2
ocaml-base-compiler                    4.12.0~alpha1                          First alpha release of OCaml 4.12.0
ocaml-base-compiler                    4.12.0~alpha2                          Second alpha release of OCaml 4.12.0
ocaml-base-compiler                    4.12.0~alpha3                          Third alpha release of OCaml 4.12.0
ocaml-base-compiler                    4.12.0~beta1                           First beta release of OCaml 4.12.0
ocaml-base-compiler                    4.12.0~beta2                           Second beta release of OCaml 4.12.0
ocaml-base-compiler                    4.12.0~rc1                             First release candidate of OCaml 4.12.0
ocaml-base-compiler                    4.12.0                                 Official release 4.12.0
ocaml-base-compiler                    4.12.1                                 Official release 4.12.1
ocaml-base-compiler                    4.13.0~alpha1                          First alpha release of OCaml 4.13.0
ocaml-base-compiler                    4.13.0~alpha2                          Second alpha release of OCaml 4.13.0
ocaml-base-compiler                    4.13.0~beta1                           First beta release of OCaml 4.13.0
ocaml-base-compiler                    4.13.0~rc1                             First release candidate of OCaml 4.13.0
ocaml-base-compiler                    4.13.0~rc2                             Second release candidate of OCaml 4.13.0
ocaml-base-compiler                    4.13.0                                 Official release 4.13.0
ocaml-base-compiler                    4.13.1                                 Official release 4.13.1
ocaml-base-compiler                    4.14.0~alpha1                          First alpha release of OCaml 4.14.0
ocaml-base-compiler                    4.14.0~alpha2                          Second alpha release of OCaml 4.14.0
ocaml-base-compiler                    4.14.0~beta1                           First beta release of OCaml 4.14.0
ocaml-base-compiler                    4.14.0~rc1                             First release candidate of OCaml 4.14.0
ocaml-base-compiler                    4.14.0~rc2                             Second release candidate of OCaml 4.14.0
ocaml-base-compiler                    4.14.0                                 Official release 4.14.0
ocaml-base-compiler                    5.0.0~alpha0                           Zeroth alpha release of OCaml 5.0.0
ocaml-base-compiler                    5.0.0~alpha1                           First alpha release of OCaml 5.0.0
  • OCaml インストール
opam switch create 4.14.0

eval $(opam env)

公式リリースで最新版である 4.14.0 をインストールする。インストール後に環境変数を更新する。

utop

utop は OCaml の REPL である。カラフルで賢そうなのでインストールするとよさそうだか、私の使用経験がない。

  • インストール
opam install core core_bench utop

Real World OCaml によると依存として core が必要らしい。

  • 設定
#require "core.top";;
#require "ppx_jane";;
open Base;;

上記内容を ~/.ocamlinit を作成して書き込む。vim などのエディタを使用すると良い。

vim ~/.ocamlinit

エディタ

ここでは Visual Studio Code を扱う。

  • lsp
opam install ocaml-lsp-server
eval $(opam env)
  • 起動
code .

Windows に VS Code がインストールしてある場合は wsl 上で code を実行すると WSL の実行環境で VS Code を開くことができる。VS Code の拡張機能である Remote Development がインストールされていないといけないかもしれない。Windows 上の VS Code であらかじめインストールしておく。
自分の開いているディレクトリを開きたい場合は . で指定して開く。

  • OCaml Platform

VS Code で OCaml のコーディングの支援を行う拡張機能をインストールする。事前に Windows にインストールしてあるとよい気がする。

OCaml Platform - Visual Studio Marketplace

Discussion