This post is Private. Only a writer or those who know its URL can access this post.

Article information
Show article in Markdown
Report article
Help us understand the problem. What is going on with this article?

Nim 環境構築チャレンジ

きっかけ

先日Nimなる言語のver1.0がリリースされたということで少し触れてみることにした。
導入対象は以下。
・windows10
・dockerコンテナ(OSはubuntulatestです。)

そもそもNimとは

プログラミング言語です。
コンパイラ言語です。
2008年に登場、2019/9/23にバージョン1.0が公開されました。おめでとうございます。
処理速度も速いらしいですよー。

ちなみに自分は動かすまでインタプリタ言語と思ってました。
動かすときにコンパイル必要と知って、「あ、こいつコンパイラ言語なんだな。」と知りました。恥ずかしい・・・。

各々のインストール方法

参考にしたのはNimのオフィシャルサイトです。
https://nim-lang.org/install.html
各対象OSのアイコンを押下すればインストール方法のリンク先に飛びますぞ。

windows

まーこれは簡単でした。
あんま載せる必要はないけど軽く触れます。
オフィシャルwindowsのインストール方法からNimCのコンパイラをダウンロード、
解凍、環境変数Pathexeが入ったパスを設定、。
以上。

あとはコマンドプロンプト起動してnim -vと打つと以下みたいにバージョン表示されればOK。

nim確認
> nim -v
Nim Compiler Version 1.0.0 [Windows: amd64]
Compiled at 2019-09-23
Copyright (c) 2006-2019 by Andreas Rumpf

git hash: f7a8fc46c0012033917582eb740dc0343c093e35
active boot switches: -d:release

ubuntu

dockerコンテナに導入。ということで色々苦労しました。

オフィシャルを見るとlinuxmacへの導入方法は2つあるっぽいです。
それはchoosenimNimです。
choosenimとはGoogle翻訳によると、

choosenimは、Nimプログラミング言語のインストーラーです。 これにより、最新の安定版リリースでも最新の開発バージョンでも、Nimのバージョンを簡単に切り替えることができます。

とのこと。
これが入っていれば言語のバージョンを容易に切り替えることができるみたいです。
今回はchoosenimを導入してみました。

まずubuntuイメージを取得、次にイメージからコンテナ作成。
で、コンテナのbashでちょこちょこ作業します。
オフィシャルによるとcurlを実行してchoosenimを取得するようです。

もちろん初期状態ではcurlなぞ入っていないのでまずこれをインストールします。
さらにその前に、apt updateでリポジトリ一覧を更新します。でないとcurlインストールできません。

そして、さあやるぞ!と意気揚々と以下のコマンドを実施。

installその1
root@6055285348ab:/# curl https://nim-lang.org/choosenim/init.sh -sSf | sh
choosenim-init: Downloading choosenim-0.4.0_linux_amd64
    Prompt: Can choosenim record and send anonymised telemetry data? [y/n]
        ... Anonymous aggregate user analytics allow us to prioritise
        ... fixes and features based on how, where and when people use Nim.
        ... For more details see: https://goo.gl/NzUEPf.
    Answer: Forced Yes
   Warning: No C compiler found. Nim compiler might fail.
      Hint: Install clang or gcc using your favourite package manager.
Downloading Nim 1.0.0 from nim-lang.org
[##################################################] 100.0% 0kb/s
 Extracting nim-1.0.0.tar.xz
       Tip: 1 messages have been suppressed, use --verbose to show them.
     Error: Cannot decompress xz, `unxz` not in PATH

Cのコンパイラが見つからんのでclangまたはgcc入れてねぽいことと、xzファイルが解凍できないといわれる。
xzはしらん、とほっといてとりあえず何も考えずclangいれて再度試す。しかし以下のようになった。

installその2
choosenim-init: Downloading choosenim-0.4.0_linux_amd64
   Warning: No C compiler found. Nim compiler might fail.
      Hint: Install clang or gcc using your favourite package manager.
Downloading Nim 1.0.0 from nim-lang.org
[##################################################] 100.0% 0kb/s
 Extracting nim-1.0.0.tar.xz
   Building Nim 1.0.0
 Exception: Execution failed with exit code 127
        ... Command: sh build.sh
        ... Output: # OS: linux
        ... # CPU: amd64
        ... gcc -w -O3 -fno-strict-aliasing -Ic_code -c c_code/1_2/stdlib_assertions.nim.c -o c_code/1_2/stdlib_assertions.nim.o
        ... build.sh: 1105: build.sh: gcc: not found
   Cleaning failed build
     Error: Build failed

なぜかxzが解凍できんはツッコまれなくなりビルドが始まる。しかしビルド最中にgccが見つからんといわれる。
むかついたのでclangアンインストールしgccいれて再度実行。すると無事導入できました。
うーむclanggccどちらかかたほうでいいんじゃないの?

ちなみにxz解凍はおそらくclang入れたときに一緒に入れてくれてたと思います。
なのでinstallその2xz解凍エラーが出なくなったんじゃないかと。

あとはオフィシャルの通り、環境変数PathNimのパスを通します。
linux詳しい方ならご存知と思いますが、永続化しないとログアウトした時点で設定した環境変数消えてしまうので注意。
無論自分はそんなこと知りませんでした!

実行方法

コンパイル

nim compile <nimファイルパス>でコンパイルして実行されます。
コンパイルすると<nimファイルパス>と同階層にnimファイル名ができます。(linuxの場合拡張子なし、windowsの場合exe)

実行

コンパイルで出来上がったファイルをそのまま実行できます。
あとコンパイル後実行もできます。

コンパイル&実行
> nim compile -run <nimファイルパス>
> nim c -r <nimファイルパス>

最後に

とりあえず導入してみたので導入方法を簡単に記載してみました。
そもそもdockerコンテナにNimの開発環境を構築することはない気がします。
ではなんでやろうと思ったかというと、最初に記載した通り当初はインタプリタ言語と思ってたのでバッチ環境軽く作るか。というのがきっかけです。

以上です。

また簡単なプログラミングも試してみました。
Plusboxブログ「nim ver 1.0.0おめでとう」

ちなみに

nimがはいったイメージがdocker hubでも公開されています。

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
ユーザーは見つかりませんでした