Recently I learned about amp, a text editor that might lure me away from vim. Intrigued by the idea, I tried to install it. I really tried, but I couldn’t manage it. I learned that I had some kind of dependency problem that I could solve by using the most recent tools for the Rust programming language.

I don’t want to learn Rust (yet), but I’d like to try amp as a potential new go-to text editor. I wasn’t in the mood to learn enough about Rust tools to resolve the problem myself, so I posted an issue to github.

Fortunately, nice people gave me reasonable-sounding instructions, so I’m trying them. (Spoiler: they worked on my machine. Read on.)

The Sitch

I’m on Pop!_OS 18.04, which is mostly Ubuntu 18.04. I tried to follow these instructions, and I ended up with a compile error that seems to relate to a dependency version mismatch with libssh2-sys-0.2.11. And I literally have no idea what that signifies. I understand the individual words, but not the significance of the sentence as a whole.

According to this Rust-related issue, this might signal an out-of-date version of Rust. I assume that whatever version of Rust I have came when I installed cargo and that puts me out of rocks. I just started using cargo minutes earlier, so I don’t know how it installs a Rust compiler nor how to change it nor whether somehow, magically, at some point in the past I accidentally installed some out-of-date version of the Rust development environment….

Evidently, since I’d tried to install cargo through the Ubuntu package manager apt, I probably got an out-of-date version, which led me to this dependency mismatch. I suppose this illustrates the down side of using package managers with rapidly-evolving software. Since then, I have removed cargo from my system in the hopes of returning it to its previous state. With luck, I have nothing hanging around that will interfere with installing amp in the future.

Some Hope

I have gleaned from the comments on my amp issue the following instructions:

  1. Install a stable version of Rust using rustup.
  2. Install cargo, and presumably it will use the stable version of Rust that I would have just installed.
  3. Run cargo install --git https://github.com/jmacdonald/amp, which I’d tried earlier, and which led me to this mess and to writing these words.

So let me try.

Let Me Try

I follow the instructions at https://www.rust-lang.org/en-US/install.html to install rustup, which seems to be like sdkman in the Java world, rvm for Ruby, and so on.

I see a version of Rust from literally 8 days ago. I feel very bleeding-edge.

So I seem to get two for the price of one. I will need to move $HOME/.cargo to where I store my dotfiles in a git repository and then stow it. No problem. I will also need to commit changes to my shell profile scripts, so before I continue, let me check that my dotfiles repository is clean.

Since my dotfiles are clean, I can continue. I can uninstall any time with rustup self uninstall, so I note that command here in this article so that I might remember where to look for it later.

I continue with the installation using the default options, because—and I can’t stress this enough—I don’t know what I’m doing.

Back in the first shell window, where I’m installing rustup, I choose Proceed with installation (default) because it is the default, then I see evidence of installing something.

Rust is installed now. Great!

Before I go anywhere and do anything, I commit changes to my dotfiles.

Next, I add cargo to my system path.

Next, I move .cargo to where I track my dotfiles, then stow it.

This requires committing new changes to my dotfiles.

Now I can try to do something with cargo.

Let’s Do Something With cargo

In principle, I should now be able to install amp with cargo. Let’s see.

Nope.

Interesting… “is cmake not installed?” Let’s see.

Fine. How do I install it, then?

Oh, boy. According to https://www.pyimagesearch.com/2018/05/28/ubuntu-18-04-how-to-install-opencv/, this will take some work.

Install cmake

That wasn’t so bad! Let’s see whether that fixes the entire problem.

This runs for a few minutes. And then it stops. And it appears to work!

Run amp

All right! Now… how exactly does one use amp?