Install rust-analyzer on OpenBSD -current
The Rust Programming Language is anything but small. One thing that helped me find my way through the language and its libraries is the language server rust-analyzer. The manual lists numerous compatible editor integrations. For example, I’m happy with using Vim with vim-lsp and asyncomplete.vim.
The project provides pre-compiled binaries for Linux, macOS, and Windows.
However, installation from source was slightly trickier than expected.
So here’s how I installed rust-analyzer from source on OpenBSD -current.
The process should work on other platforms alike, especially without rustup
.
First, install rustc
and cargo
from the lang/rust
port.
You might also want to install rust-clippy
and rust-rustfmt
while you’re at it.
$ doas pkg_add rust rust-clippy rust-rustfmt
Second, compile and install the rust-analyzer binary from source. See errata below if the the command fails.
$ cargo install \
--git https://github.com/rust-lang/rust-analyzer.git \
--branch release \
--force \
--bin rust-analyzer \
--target-dir "$HOME/.cache/rust-analyzer" \
--locked \
rust-analyzer
This will install the latest release of rust-analyzer to ~/.cargo/bin/
.
Remember to add this location to your PATH
.
$ export PATH="$HOME/.cargo/bin:$PATH"
Finally, rust-analyzer needs a local copy of Rust’s source code. The following commands fetch the source code matching the version of the currently installed Rust compiler.
$ [ -d "$HOME/.cache/rust-src" ] ||
git clone https://github.com/rust-lang/rust.git "$HOME/.cache/rust-src"
$ cd "$HOME/.cache/rust-src" &&
git fetch --tags &&
git checkout "$( rustc --version | sed 's/^rustc[[:space:]]*//' )"
Lastly, tell rust-analyzer where to find the source code.
$ export RUST_SRC_PATH="$HOME/.cache/rust-src/library"
With this, your favorite editor should be able to talk to rust-analyzer and help you find your way.
Of course, you better add the above exports to your ~/.profile
.
I’ve also added the above commands to my local update script to keep rustc, rust-analyzer, and the sources in sync.
Errata #
8 April 2022: Sometimes Cargo fails to install crates from Git repositories due to an incompatible version of libgit2. If so, you can install the latest weekly release of rust-analyzer from crates.io as follows:
$ cargo install \
--force \
--bin rust-analyzer \
--target-dir "$HOME/.cache/rust-analyzer" \
--locked \
ra_ap_rust-analyzer
28 April 2022: The Git repository has moved to https://github.com/rust-lang/rust-analyzer. The build is broken on OpenBSD until notify releases commit 41a74f0. In the meantime, you can build rust-analyzer by overriding this dependency locally.