Ubuntu 22.04にRust 1.62.0をインストールする

rust

Rustについて

Rustはパフォーマンス、信頼性、生産性の高さが特徴のプログラミング言語です。Stack Overflow Developer Survey 2022では86%以上の支持を集めて1位に選ばれ、7年連続で最も愛される言語になっています。

環境

  • Ubuntu 22.04
  • rust 1.62.0

インストール

公式サイトによるとcurl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | shを実行するとインストール出来ます。

それではcurlコマンドを実行してみましょう。

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

途中でインストールの方法を選択できますがここではデフォルトの1を選択しています。

Current installation options:


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

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

最後に、下記のようなログが表示されていればOKです。

  stable-x86_64-unknown-linux-gnu installed - rustc 1.62.0 (a8314ef7d 2022-06-27)


Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, run:
source $HOME/.cargo/env

Rustを始めるには、カレントシェルを再起動か、もしくは、source $HOME/.cargo/envコマンドを実行してください。と、実行ログに出ています。ここではsource $HOME/.cargo/envコマンドを実行します。

$ source $HOME/.cargo/env

最後に実行できるか確認してみましょう。

$ cargo --version
cargo 1.62.0 (a748cf5a3 2022-06-08)
$ rustc --version
rustc 1.62.0 (a8314ef7d 2022-06-27)

ちなみにcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shはこのコマンドを実行するとrustup-init.shがダウンロードされ、このrustup-init.shがプラットフォームに適したツール群をインストールします。rustup-init.shはrustupのGitHubにあります。

$HOME/.cargo/env

本質的な部分ではないですが、試しに$HOME/.cargo/envの内容を確認します。中身はシェルスクリプトになっていて、環境変数PATHに$HOME/.cargo/binがない場合は追加するという処理をしています。

#!/bin/sh
# rustup shell setup
# affix colons on either side of $PATH to simplify matching
case ":${PATH}:" in
    *:"$HOME/.cargo/bin":*)
        ;;
    *)
        # Prepending path in case a system-installed rustc needs to be overridden
        export PATH="$HOME/.cargo/bin:$PATH"
        ;;
esac

$HOME/.cargo/envの実行後は環境変数PATHを確認すると$HOME/.cargo/binがあることが確認できます。

$ echo $PATH
/home/higma/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

$HOME/.cargo/binディレクトリにはコンパイラのrustcやコンパイルマネージャとパッケージマネージャを兼ねるcargo、ドキュメンテーションツールのrustdocなどがあります。

$ ls $HOME/.cargo/bin
cargo  cargo-clippy  cargo-fmt  cargo-miri  clippy-driver  rls  rustc  rustdoc  rustfmt  rust-gdb  rust-lldb  rustup

また、~/.bashrcには. “$HOME/.cargo/env“が追加されています。これでシェルを起動する時に実行されPATHが設定されるようになっています。.コマンド(ドットコマンド)はsourceコマンドと同じものです。

$ tail -n 1 ~/.bashrc 
. "$HOME/.cargo/env"

動作確認

実際にはcargoを使ったコンパイルが多いのですが、ここではrustcとcargoの両方のコンパイルを試してみます。cargoを使った場合も内部的にrustcが動いてコンパイルしています。

rustcで直接コンパイル

hello.rsのような内容のファイルを用意しrustcでコンパイルします。コンパイル時には-oオプションで生成される実行ファイル名をhelloにしています。コンパイルが完了すると./helloが生成されているので実行して、Hello, world!と表示されれば正常に動作しています。

fn main() {
    println!("Hello, world!");
}
// コンパイル
$ rustc hello.rs -o hello

// 実行
$  ./hello 
Hello, world!

もし、コンパイル時にerror: linker `cc` not foundエラーが出たらgccパッケージをインストールしてください。

$ rustc hello.rs -o hello
error: linker `cc` not found
  |
  = note: No such file or directory (os error 2)

error: aborting due to previous error
$ sudo apt install gcc

cargoでコンパイル

cargo new <プロジェクト名>でプロジェクトの作成をします。ここではプロジェクト名はhelloとしています。プロジェクトのディレクトリに移動します。その後、cargo runコマンドを実行します。すると、ビルド、生成された実行ファイルの実行をおこないます。Hello, world!と表示されれば正常に動作しています。

// プロジェクトの作成
$ cargo new hello
     Created binary (application) `hello` package

// ディレクトリの移動
$ cd hello

// ビルド&実行
$ cargo run
   Compiling hello v0.1.0 (/home/higma/rust/hello)
    Finished dev [unoptimized + debuginfo] target(s) in 1.00s
     Running `target/debug/hello`
Hello, world!

Cargoは他にもいろいろなことができます。まずは、表にまとめておきます。改めて別の記事で解説していきたいと思います。

サブコマンド説明
build, bプロジェクトのビルドをする
check, cビルドできるかのチェックをする
cleanプロジェクトのクリーンをする
doc, dドキュメントを作成する
newプロジェクトの作成
init既存のディレクトリでプロジェクトの作成
addマニフェストファイルに依存関係を追加する
run, r実行ファイルを実行する
test, tテストを実行する
benchベンチマークを実行する
updateCargo.lockに記述された依存をアップデートする
searchcrate.ioからパッケージを探します
publishパッケージをcreate.ioに公開します
installrust製のバイナリをインストールする
uninstallrust製のバイナリアンインストールします
cargoのサブコマンド

まとめ

これまででRustのインストール、Cargoでのプロジェクトの作成、ビルド&実行を確認しました。今度は、Rustの使い方に詳しく書いていきたいと思います。

参考サイト

コメント