Arch Linux 環境で cargo が言うことを聞かなくなったメモ
症状
- 数日ぶり程度に使用した Arch Linux 環境の rust 処理系で
cargo
が+nightly
を受け付けてくれなくなって困った (-Z
したかった )rustup toolchain
では stable, nightly が installed 状態
原因
- rust は
rustup
を per user で導入して使っていた"はず"だったのに /sbin/cargo
が実行されていた (which cargo
で判明 )/sbin/cargo
は stable
なぜ /sbin/cargo
が環境に "いつのまにか" install されてしまったのか考えると、この数日の間に実験的に yay
で rust 製のツールをシステムへ install した事を思い出しました。 yay
での install ではビルドツールチェインも芋蔓し、途中の選択肢によってはビルドツールチェインはビルド後に remove できたりするのですが、おそらく yay
で rust 製のツールをシステム導入した際にビルドツールチェインの remove を選択ミスしたためシステムパッケージ版の rust
が導入された状態になってしまい、意図しない cargo
= /sbin/cargo
が ~/.cargo/bin/cargo
よりパスが優先される状態に陥っていたのだろうと思います。
解決
yay
またはpacman
で rust パッケージを削除 ( per user で導入しているrustup
には影響しません )
おまけ: Arch Linux ゆえ
同様の症状の状態は Ubuntu など他の GNU/Linux 環境でも発生させる事はできますが、 AUR と yay のようにユーザーの環境でソースコードからビルドするタイプのパッケージ管理システムを常用していない限り、"意図せず"に発症する事は無いと思います。Gentoo で emerge している場合は似た状況がうっかり発生する事もあるのかも。