症状
- 数日ぶり程度に使用した 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 している場合は似た状況がうっかり発生する事もあるのかも。