見出し画像

Kali Linux 2023.4 (on VirtualBox) + Haskell (GHCup, Stack) の環境構築メモ

はじめに

メインノートPC(第6世代コア)にVirtualBoxをインストールし、仮想環境のLinuxをイチから作ってHaskellプログラミング環境を構築します。
VS Codeの拡張機能でGHCupを要求されるので、これも入れたいと思います。

軽量Linuxをいろいろ試しましたが、不満点がいくつも見つかったためdistro-hoppingしてしまいました。最終的にKali Linuxがいいと思いました。

理由

  • インストールが比較的早く終わる(ペネトレーションテスト用ソフトを入れない場合に限る)

    • MX Linuxは軽量と名高いが、MX 23.1のインストーラ起動まで遅かった(リソース割けば早くなるのかもしれないけど)

    • Zorin OS 17が最近出ました。日本語環境はピカイチだと思いますが、インストールには時間がかかると思います。

  • ターミナルのフォントが見やすい(Xfce4だけどなぜかMATE端末が入っている)

    • GHCupで紫や青のフォントを使っており、他ディストリビューションのターミナルには非常に見づらいものもある(列挙するのは面倒なので省略)

    • WSLはWindowsのフォントを使っており、字体が好みでないことと配色もいまいち見づらい(と言いつつこちらにもインストール済み)

実機を使うなら好きなディストリビューションでいいと思います。画面いっぱい使えますし。

Kali Linuxのインストール

ISOファイルからインストールするのが良いでしょう。VirtualBox用イメージを追加したものは起動が遅いです。

インストールの際、ペネトレーションテスト用ソフトウェアはチェックを外します。後から「設定マネージャ」にあるKali Tweaksを使ってもインストールできます。

インストールが終わり、ログインしたらまずsudo apt updateを行っておきます。

日本語化する場合は、fonts-noto-cjk、fcitx5-mozcを入れます。
地域・言語は日本語を入れてインストールしたのにメニューが英語だったので、dpkg-reconfigure localesを実行しましたが、必要だったのかどうか不明(何)

また、日本語フォルダ名がいやなら、LANG=C xdg-user-dirs-gtk-updateも実行します。

GHCupのインストール

事前に必要なパッケージ(Kali Linuxの場合)

build-essential
curl
libffi-dev libffi8
libgmp-dev libgmp10
libncurses-dev libncurses6
libtinfo6 (この時点でインストール済みでした)

公式の”Generic”に従って一度に全部 sudo apt install しようとしたら、一部「ない」とエラーが出て引っかかってしまったので、lib***<数字>のパッケージを変えつつ何度かリトライしました。

libffi, libncurses, libtinfoはディストリビューションやバージョンによって末尾の数字が異なります。2023年12月時点のKaliでは上記のバージョンが正解のようです。

Kaliに限らず、DebianやUbuntuそのもの以外のディストリビューションにGHCupをインストールする場合は、各ライブラリのまとまりごとにインストールすると良いでしょう。引っかかったら数字を1ずつ上げながら試しましょう。

インストールスクリプトの実行

curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

途中の選択

PATHを通す
P(デフォルト)

HLSのインストール
Y

Stackのインストール
Y(デフォルト)

ログインしなおします。
source .bashrcを実行したらエラーをいっぱい吐きましたが、理由は不明。

エディタのインストール

vimが入っていなかったのでインストール。また、geanyもお好みでインストール。

VS Codeも後で入れます(予定)。

Stack (GHCup) を使う

Haskellプロジェクトディレクトリを作る

$ cd
$ mkdir haskell
$ cd haskell

シンプルなHello worldのプロジェクトを作る

$ stack new simple-hello simple
$ cd simple-hello
$ stack setup (省略可らしい)

ビルドと実行

stack setupを実行するにせよ、飛ばしてstack buildを実行するにせよ、ghcのインストールに結構時間がかかります。take a whileにも程があるだろうに。

simpleオプションで作ったプロジェクトではexecの引数に”-exe”が付かないことに注意(自戒)。

$ stack build
$ stack exec simple-hello
hello world

おわりに

シンプルでないHello worldはこちら↓で。


この記事が気に入ったらサポートをしてみませんか?