# Nu のインストール

今のところ Nu をインストールするもっともよい方法は、crates.io (opens new window)からインストールするか、ビルド済のバイナリーをリリースページ (opens new window)からダウンロードするか、ソースからビルドすることです。 Docker を利用してビルド済のコンテナをプルしてくる方法もあります。

# ビルド済みのバイナリー

ビルド済の Nu はリリースページ (opens new window)からダウンロードできます。もし、macOS でHomebrew (opens new window) を利用しているなら、brew install nushellを実行して、バイナリーをインストールできます。

# Windows

Note Nu は Windows 10 で動作しますが、現在のところ 7/8.1 はサポートされていません。

リリースページ (opens new window)から.zipファイルをダウンロードして、例えば次の箇所に解凍します。

C:\Program Files

そして、nuフォルダを PATH に追加します。これが済めば、nuコマンドで Nu を起動できます。

> nu
C:\Users\user>

もし、Windows Terminal (opens new window)を使っているなら、次のようにしてnuをデフォルトシェルに指定できます。

{
  "guid": "{2b372ca1-1ee2-403d-a839-6d63077ad871}",
  "hidden": false,
  "name": "Nu Shell",
  "commandline": "nu.exe"
}

この設定を Terminal Settings の"profiles"に追加します。そして、"defaultProfile"を次のように変更します。

"defaultProfile": "{2b372ca1-1ee2-403d-a839-6d63077ad871}",

これでnuが Windows Terminal の起動時にロードされます。

# 事前準備

Nu をインストールする前に、システムに必要なツールがそろっているか確認する必要があります。現在、Rust のツールチェインといくつかの依存関係が必要です。

# コンパイラスイートのインストール

Rust が適切に機能するには、互換性のあるコンパイラスイートがシステムにインストールされている必要があります。推奨されるコンパイラスイートは次のとおりです。

Linux と macOS の場合、コンパイラのインストールが完了すれば、rustupでの Rust のインストールの準備が整います。

Windows の場合、Visual Studio Community Edition をインストールするときに、「C ++ビルドツール」をインストールする必要があります。 オプショナルなインストールとして提供されているlink.exeが必要なためです。これで次のステップに進む準備ができました。

# Rust のインストール

Rust がシステムにまだインストールされていない場合は、rustup (opens new window)を利用して Rust をインストールする方法がベストです。Rustup は、異なる Rust のバージョンのインストールを管理するツールです。

Nu は現在、最新の stable(1.46 or later) バージョンの Rust を必要とします。 rustupで正しい version を選択するのが良い方法です。 最初に"rustup"を実行すると、インストールする Rust のバージョンを尋ねられます。

Current installation options:

default host triple: x86_64-unknown-linux-gnu
default toolchain: stable
profile: default
modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation

準備ができたら、1 を押してからエンターを押します。

もし、rustupを経由して Rust をインストールしたくない場合、他の方法でもインストールすることができます。(例えば、Linux ディストリビューションのパッケージから) その場合でも Rust の 1.46 以上のバージョンがインストールされるようにしてください。

# 依存関係

# Debian / Ubuntu

"pkg-config"および"libssl-dev"パッケージをインストールしてください。

apt install pkg-config libssl-dev

rawkeyclipboard機能を使用する Linux ユーザーは"libx11-dev"および"libxcb-composite0-dev"パッケージをインストールする必要があります。

apt install libxcb-composite0-dev libx11-dev

# RHEL based distros

"libxcb", "openssl-devel"および"libX11-devel"パッケージをインストールする必要があります。

yum install libxcb openssl-devel libX11-devel

# macOS

Homebrew (opens new window)を利用して、"openssl"と"cmake"をインストールしてください。

brew install openssl cmake

# crates.io (opens new window)からのインストール

必要となる依存関係が準備できたら、Rust コンパイラーに付属しているcargoを使って、Nu をインストールできます。
cargo は Nu とそのソースの依存関係をダウンロードし、ビルドしたあと、実行できるように cargo の bin path にインストールします。

> cargo install nu

これでおしまいです!cargoは Nu のソースコードとその依存関係をダウンロードしてビルドし、cargoのバイナリーパスにインストールすることで Nu を実行できるようにします。

より多くの機能をインストールするには、次のようにします。

> cargo install nu --features=extra

すべての機能を利用するための最も簡単な方法は Nu をチェックアウトして、Rust ツールを利用してビルドすることです。

> git clone https://github.com/nushell/nushell.git
> cd nushell
nushell> cargo install --path . --features=extra

上で示したすべての依存関係がシステムにあることを確認してください。
インストールが完了すると、nuコマンドで Nu を実行できます。

$ nu
/home/jt/Source>

# ソースからビルド

github のソースから直接ビルドすることもできます。こうすることで、最新の機能やバグ修正にすぐにアクセスすることができます。

> git clone https://github.com/nushell/nushell.git

Git でメインの nushell リポジトリをクローンし、Nu をビルドして実行できます。

> cd nushell
nushell> cargo build --workspace --features=extra && cargo run --features=extra

リリースモードで Nu をビルドし実行することもできます。

nushell> cargo build --release --workspace --features=extra && cargo run --release --features=extra

Rust に慣れている人は、"run"がデフォルトでビルドを行うのに、なぜ"build"と"run"の両方を行うのか疑問に思うかもしれません。
これは Cargo の新しいdefault-runオプションの欠点を回避し、全てのプラグインがビルドされるようにするためですが、将来的には必要なくなるかもしれません。

# ログインシェルとして設定するには

!!! Nu は開発中なので、日常使いのシェルとしての安定性を欠く可能性があります!!!

chsh (opens new window)コマンドを使用して、ログインシェルを設定できます。 一部の Linux ディストリビューションには/etc/shellsに有効なシェルのリストが記載されており、Nu がホワイトリストに登録されるまで変更ができません。 shellsファイルを更新していない場合は次のようなエラーが表示される場合があります。

chsh: /home/username/.cargo/bin/nu is an invalid shell

Nu バイナリをshellsファイルに追加することにより、許可されたシェルのリストに Nu を追加できます。 追加するパスはwhich nuコマンドで見つけることができます。通常は$HOME/.cargo/bin/nuです。