Rustツールチェインのインストール

このページではAtCoderのジャッジサーバにRustツールチェインをインストールする手順を説明します。

Rustバージョン

今回の言語アップデートでは2019年11月7日にリリースされた1.39.0をインストールします。

Rustの安定版(stable版)は6週間ごとにリリースされますので、既にバージョン1.40.0が12月19日にリリースされています。ただ、安定性のためには世に出てからある程度の時間が経っているバージョンを選ぶ方が望ましいと考えられますので、ここでは1つ前のバージョンをインストールします。様子を見る期間については、現在のところはおよそ次期バージョンがリリースされるまでを1つの目安としています。

ツールチェインのインストールにはrustupというRustプロジェクト公式のコマンドラインツールを使います。 これにより特定のバージョンのRustをインストールすることが可能になります。

ツールチェインの内容とインストール先

今回インストールするRustツールチェインには以下のものが含まれています。

  • Rustコンパイラであるrustcコマンド
  • Rustのビルドツール兼パッケージマネージャであるcargoコマンド
  • Rustの標準ライブラリとAPIドキュメント

実際のコンパイルにもCargoを利用する場合はもちろんですが、運用時にはrustcに必要なオプションを付けてコンパイルする方法をとる場合でも、依存ライブラリをまとめてコンパイルするためにCargoを利用します。具体的にはこのページに続く数ページをご覧ください。

Rustツールチェインはデフォルトではrustupを実行したLinuxユーザのホームディレクトリ配下(~/.rustup/toolchains)にインストールされます。 しかし今回はジャッジサーバ上の全てのLinuxユーザから使えるよう、/usr/local/lib/rust配下にインストールします。 このディレクトリは一般のLinuxユーザからは書き込みができないように設定し、ジャッジの際にツールチェインがユーザプログラムによって変更されないよう保護します。

依存ソフトウェアのインストール

Rustツールチェインをインストールする前に、Rustプログラムのリンクやクレートのビルドに必要なソフトウェアをインストールしましょう。 必要なソフトウェアは以下のとおりです。

  • Rustツールチェインやクレートのダウンロードに必要なツール:curl, git-core
  • ユーザプログラムのリンク時に必要なツール:gcc, binutils
  • 一部のRustクレートのビルドに必要なツール:make, pkg-config

以下のコマンドを実行します。

$ sudo apt update
$ sudo apt install -y curl git-core gcc binutils make pkg-config

Rustツールチェインのインストール

rustupとRustツールチェインをインストールしましょう。 以下のコマンドを実行します。

$ sudo -i

# whoami
root

# RUST_TOOLCHAIN=1.39.0
# export RUST_HOME=/usr/local/lib/rust
# export RUSTUP_HOME=${RUST_HOME}/rustup
# export CARGO_HOME=${RUST_HOME}/cargo

# mkdir -p $RUST_HOME
# chmod 0755 $RUST_HOME

## rustupをインストールし、同時に指定したバージョンのRustツールチェインをインストールする
# curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
    sh -s -- -y --default-toolchain "${RUST_TOOLCHAIN}" --no-modify-path

インストールに成功すると以下のように表示されます。

info: downloading installer
info: syncing channel updates for '1.39.0-x86_64-unknown-linux-gnu'
info: latest update on 2019-11-07, rust version 1.39.0 (4560ea788 2019-11-04)
info: downloading component 'rustc'
info: downloading component 'rust-std'
info: downloading component 'cargo'
...(中略)...

  1.39.0 installed - rustc 1.39.0 (4560ea788 2019-11-04)


Rust is installed now. Great!

To get started you need Cargo's bin directory (/usr/local/lib/rust/cargo/bin)
in your PATH environment variable.

To configure your current shell run source /usr/local/lib/rust/cargo/env

環境変数の設定

rootユーザと一般のLinuxユーザがRustツールチェインを使えるように設定しましょう。 それぞれのユーザのシェルの初期設定ファイルに以下のコマンドを追加します。 (bashの例です)

# .bashrcファイルに以下のコマンドを追加する
export RUST_HOME=/usr/local/lib/rust
export RUSTUP_HOME=${RUST_HOME}/rustup
export CARGO_HOME=${RUST_HOME}/cargo
source ${CARGO_HOME}/env

最後のsourceコマンドは、コマンド検索パス(PATH)に/usr/local/lib/rust/cargo/binを追加します。

インストール後の動作確認

Rustツールチェインが正しくインストールできたか確認しましょう。 一般のLinuxユーザで以下のコマンドを実行します。

## 一般ユーザで実行

$ source ~/.bashrc

$ echo $RUSTUP_HOME
/usr/local/lib/rust/rustup

$ which rustc
/usr/local/lib/rust/cargo/bin/rustc

## バージョンなどを確認
$ rustc -V
rustc 1.39.0 (4560ea788 2019-11-04)

$ cargo -V
cargo 1.39.0 (1c6ec66d5 2019-09-30)

$ rustup -V
rustup 1.21.1 (7832b2ebe 2019-12-20)

$ rustup show
Default host: x86_64-unknown-linux-gnu

1.39.0-x86_64-unknown-linux-gnu (default)
rustc 1.39.0 (4560ea788 2019-11-04)

## Rustプログラムのビルドと実行ができることを確認
$ cd /tmp
$ cargo new hello && cd $_
$ cargo run
Hello, world!   # このように表示されればOK

$ cd
$ rm -rf /tmp/hello