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
cargo from the
You might also want to install
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
Remember to add this location to your
$ 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
I’ve also added the above commands to my local update script to keep rustc, rust-analyzer, and the sources in sync.
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.