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