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はこちら↓で。
この記事が気に入ったらサポートをしてみませんか?