Rust’s Packaging Status Across Distros
One of many questions facing the Rust infrastructure team right now is “What’s our packaging situation?”. We don’t have a centralized source of information on what version of Rust is available in which systems’ package managers, and we don’t even know where to find that information.
This post is the notes I’ve taken in researching Rust’s packaging status across distributions.
I last updated this post on 8/17/2015.
|Distro||Rust’s Status||Cargo’s Status|
|Debian||1.0.0 in unstable||Requested|
|Ubuntu||Community package||Community package, bad docs|
|Gentoo||1.1.0 in index||Community package|
|OpenSUSE||1.0.0 in index||Recent version in index|
|Arch||multirust in index||2 community packages; 1 bad|
|Fedora||Community package||No separate package|
|Slackware*||Community package||No separate package|
|Windows||in chocolatey||No separate package|
|Mac||in Brew||No separate package|
|FreeBSD||Community port (?)||No separate package|
There are an unreasonable number of tiny Linux distributions out there, but they fall into a handful of “families”. For a visualization of the history of various distros, check out this map. I’ve elided CentOS and RHEL as “flavors of Fedora”, and a bunch of popular new Ubuntu flavors (ElementaryOS, Mint, etc.) as “compatible with Ubuntu packages, and probably smart enough to Google for Ubuntu docs if there aren’t any specific to their OS”.
Debian, Ubuntu, Kubuntu, Mint, and Knoppix all use .deb packages installed through package managers that wrap the dpkg tool.
The Debian Stable package list has dedicated sections for some languages, but Rust is too young to be among them. Rust does not appear in the Jessie stable package list, the Debian testing package list or the Debian unstable package list. Debian bug #786432 is a request for Cargo to be packaged, which describes what Cargo will need to do to be packageable. Bug #689207 tracks the status of packaging rustc for Debian.
There’s a rustc package in Debian Unstable.
The Debian Wiki has a rust packaging page to track the status of packaging Rust for Debian.
The rust-ci.org help tells users to install Cargo from Corey Richardson’s PPA (last updated July 2014, build currently failing) and Rust from Hans Hoel’s PPA, in which rust-stable, rust-nightly, and cargo-nightly appear to be up to date.
There’s a cargo portage overlay but cargo is not provided through the package index.
Rust 1.0.0 is packaged for OpenSUSE. Duncan Mac-Vicar has a blog post on trying Rust on OpenSUSE from 2014. My search for “How to install Rust on OpenSUSE” also turned up a youtube video on installing Rust from the nightly tarball. It seems to just be a walkthrough of what happens when you follow Rust’s installation guidelines, but kudos to the OpenSUSE community for catering to diverse learning styles.
An OpenSUSE Cargo package is also available in what appears to be the main index.
The Arch Wiki has a very useful page on Rust that includes instructions on cross-compiling. There’s also a community package of rust 1.1.0. The Arch User Repository (AUR) provides Cargo through a choice of cargo-bin or cargo-git, though the latter hasn’t been updated since February.
I later learned that you need to install the multirust package to get Rust and Cargo.
Fedora has this copr build system thing in which one apparently finds community packages. At least, I found rust-binary (poorly documented and last built 6 months ago) and rust-unofficial (last built 18 months ago) in it. A blog post about building Rust on Fedora, posted in 2013 but with good SEO for queries about “how to install Rust on Fedora”, recommends building from source. There’s no rust or cargo in the CentOS 6 package list, either.
Fedora is tracking the official effort to package rustc in `redhat bug #915042`_.
The FreeBSD Wiki tracks the status of the Rust port. The port overview page tracks which version is available, which is the latest Rust version available in July 2015. There’s also a Rust on FreeBSD internals thread that tracks other relevant information and tools.
According to the 2014 r/linux survey, 53 of the 10,292 respondants used Slackware on a desktop or server. A variety of search queries for Rust and Slackware turn up Rust’s generic Linux installation docs as the first hits, and one github issue from a slackware user. Extensive digging reveals a Rust 1.1.0 package in the SlackBuilds repository.
* The fact that I researched whether anyone had packaged Rust for Slackware is in no way intended to imply any plans for ever supporting such a package. I was just curious. Really.
I appreciate readers Huon Wilson and Seo Sanghyeon taking the time to point out useful links for this post! Both mentioned the presence of the Debian Unstable package, and Seo informed me of redhat bug #915043 as well.