読者です 読者をやめる 読者になる 読者になる

しょうもない記事(Windowsでrustup)

rustup.rs - The Rust toolchain installer

rustにおけるrustupとは、rubyのrbenv, pythonのpyenv, nodeのnvmに相当するもんです。

という他言語のツールと比較する言い方は、部外者にとって非常にアンフレンドリーなのでよろしくないので、少し説明を試みる。僕がタイピングの練習のためにやってるだけで、どうせ雑なんで読まなくていいです(謎ネガティヴ)。

rustupはいろんなコンピュータの環境で動かせるようにコンパイラ(とパッケージマネージャなどの道具一式toolchain)を管理するためのソフトです。こーゆーのは一言でenv系と言いますが、まー使ったことないとなんの役に立つのかよくわからんもので、にも関わらずプログラミング初心者ほど楽なんで使ったほうがいーよという説明に困ったちゃんです。

例えばrustcコンパイラのバージョン(チャンネル)はstable, beta, nigtlyの3種類に大別できるんですが、これをたんたんに使い分けられるようになります。nigtlyをかんたんに使えると昨日できた機能(図らずもダジャレ)(おもしろい)がすぐに使えるので嬉しいです。

$ rustup default stable
info: using existing install for 'stable-x86_64-pc-windows-msvc'
info: default toolchain set to 'stable-x86_64-pc-windows-msvc'

  stable-x86_64-pc-windows-msvc unchanged - rustc 1.13.0 (2c6933acc 2016-11-07)

これでstableなコンパイラを使いますよ~とrustupに頼んでいるのです。

実際rustcを実行するとこんな感じになっています。

$ rustc --version
rustc 1.13.0 (2c6933acc 2016-11-07)

nightlyにもかんたんに切り替えられます。

$ rustup default nightly

スイッチすると使ってるコンパイラのバージョンが出力されるんで確かめる必要ないですが、自己教示のため。

$ rustc --version
rustc 1.15.0-nightly (71c06a56a 2016-12-18)

ちなみにcargoなどのtoolchainも最新のものになっています。

$ cargo --version
cargo 0.16.0-nightly (ddb5c32 2016-12-16)

便利ですね。

これだけ分かればあとはマニュアルを見ながら覚えていけばいいんだと思います。

おわり。

この記事の残りは僕がマニュアルを見ながら打ったコマンドとそれに対する感想文になりすます。

トラブル

まず、僕は今までrustup使ってなくて、rustの公式サイトからバージョン管理しないタイプのフツーの一式をインストーラで入れてました。それでインストーラ氏はProgram Filesのほうにrustc.exeやcargo.exeを置いてパス通すもんで、rustup default nigtlyしてもnigtlyに切り替わらんやんけ!というトラブルが起こりました。こういうのは5秒で気づいてインストーラから入れたやつは綺麗さっぱりアンインストールしてしまいましょう。僕はトンマなので気づくのに5分かかりました。

rustup!

とりあえずrustupとだけ打ち込むと使えるコマンドが一覧されます。それを刺し身たんぽぽのごとく順番に確かめていってるだけです。

rustup showで自分のパソコンのrust環境を教えてもらえる。

Default host: x86_64-pc-windows-msvc

installed toolchains
--------------------

stable-x86_64-pc-windows-msvc
nightly-x86_64-pc-windows-msvc (default)

installed targets for active toolchain
--------------------------------------

x86_64-pc-windows-msvc

active toolchain
----------------

nightly-x86_64-pc-windows-msvc (default)
rustc 1.15.0-nightly (71c06a56a 2016-12-18)

msvcってのはあれですねミクロソフトビジュアルスタジオのそれこれを使ってどうこうってやつですねたぶん知らんけど。

入れた直後にアプデを試みる

rustup updateでstable, beta, nigtlyをよしなに更新してくれるようです。入れた直後なんでコマンド打っても何も起こりませんあたりまえ体操

rustup self updateはrustupじたいの更新を受け持っています。これも入れた直後なんでやっても何も起こりませんしたそれしか言えんのかこの猿ゥ

ドキュメント~ドキュメントが開けない~

$ rustup doc

f:id:cofree:20161221234203p:plain

とても悲しいです。

(stableのは開けたんでnigtlyを入れたときになんか見落とした?)

追記: brson先生がIs "rustup docs" broken for other people?というれでぃっとのすれにコメントしていてrustup component add rust-docsしたところうまくいきました。れでぃっとのurlははてながスパム判定しやがるので貼れません。brson先生ありがとう。そしてはてなくたばれ。

which

これは動きました。

completion

PowerShell使ってない情弱です。生きててすいません…

よくわからない

あとクロスコンパイルもできるようでっす。

(いろんな環境でも動くようにバイナリを吐き出すやつ)

androidとかiosとかarmやらなんやら、試してないのでどう動かすのかは知らん)

(とりあえずギフハブに書いてあるとおりrustup target add arm-linux-androideabiしたら何かがインストールされた)

(使えるターゲットはrustup target listで出てくる)

rustup component listにあるやつとの区別がよくわからない)

(あとで何ができるか確かめたい)

aarch64-apple-ios
aarch64-linux-android
aarch64-unknown-linux-gnu
arm-linux-androideabi
arm-unknown-linux-gnueabi
arm-unknown-linux-gnueabihf
arm-unknown-linux-musleabi
arm-unknown-linux-musleabihf
armv7-apple-ios
armv7-linux-androideabi
armv7-unknown-linux-gnueabihf
armv7-unknown-linux-musleabihf
armv7s-apple-ios
asmjs-unknown-emscripten
i386-apple-ios
i586-pc-windows-msvc
i586-unknown-linux-gnu
i686-apple-darwin
i686-linux-android
i686-pc-windows-gnu
i686-pc-windows-msvc
i686-unknown-freebsd
i686-unknown-linux-gnu
i686-unknown-linux-musl
mips-unknown-linux-gnu
mips-unknown-linux-musl
mips64-unknown-linux-gnuabi64
mips64el-unknown-linux-gnuabi64
mipsel-unknown-linux-gnu
mipsel-unknown-linux-musl
powerpc-unknown-linux-gnu
powerpc64-unknown-linux-gnu
powerpc64le-unknown-linux-gnu
s390x-unknown-linux-gnu
wasm32-unknown-emscripten
x86_64-apple-darwin
x86_64-apple-ios
x86_64-pc-windows-gnu
x86_64-pc-windows-msvc (default)
x86_64-rumprun-netbsd
x86_64-unknown-freebsd
x86_64-unknown-linux-gnu
x86_64-unknown-linux-musl
x86_64-unknown-netbsd