LoginSignup
1
1

More than 1 year has passed since last update.

OCaml Set Up (With WSL and OPAM)

Last updated at Posted at 2022-09-23

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.jpg

  • 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

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1