Slightly off topic question about this: in Linux, are rust programs always installed like this, or should these also be made available in the regular package manager of your distro?
Slightly off topic question about this: in Linux, are rust programs always installed like this, or should these also be made available in the regular package manager of your distro?
Getting a package in the official repositories is quite a high bar to clear.
Plus it's... not great experience for early development, as many distros will lock in the program entirely, leaving you with a very long tail of extremely outdated installs.
So generally the expectation is that once a program is popular or desirable enough, and is somewhat stable, it gets integrated into the base repos.
There's pip for python, npm for JS, cargo for rust
For C/C++ all I know are multiple different possible build and make systems, but none works like a package manager, as far as I know
Note that I don't always love when something installed with pip or npm puts files all over your OS or homedir without being managed by the package manager, though
./configure --prefix=/usr/local && make && sudo make install
(I consider it a feature that this doesn't automatically download and install hundreds to thousands of things I haven't even heard of)And maybe I need to install one or two dependencies, similarly they should be familiar, or small and comprehensible, and only downloaded and installed with my explicit actions.
(And yeah autoconf generated configure scripts are crazy huge and baroque, and could easily be 1/10 the size for the needed functionality, but compared to "npm install" I'll take it.)
Downloading the source by hand, trying to wrangle what dependencies it has not vendored (which may or may not be available through your system package managers, in versions which may or may not be recent enough), and trying to find out how to build it.
Though do note that this issue can also hit when installing python, js, or rust package, if they ultimately have native dependencies. Their respective build systems will generally try to make it work out of the box, but if your configuration was not specifically tested / supported it can break with fun C-level compilation errors.
It's awesome. And complicated.
In general, end users should use some other method that doesn't require having a Rust toolchain pre-installed, but doing that can take work, and so not every program pursues it.
(But also it's your system. What's the point of Linux if you can't do it your way)