After spending numerous hours figuring out how to do Rust builds on Launchpad, I’m happy to announce that rustnet is now available via Ubuntu PPA!

Quick Install

For Ubuntu 25.10 (Questing) and newer:

1
2
3
sudo add-apt-repository ppa:domcyrus/rustnet
sudo apt update
sudo apt install rustnet-monitor

My Packaging Journey

Getting rustnet packaged for Ubuntu turned out to be quite an adventure. Here are some lessons learned:

The Debian/Ubuntu Build System and Rust

The Debian build system and Rust/Cargo don’t always play nicely together. The biggest challenge is the Rust edition and toolchain requirements. If you want to use Rust 2024 edition features, as far as I know you basically can only target Ubuntu 25.10 (Questing), which just released on October 9, 2025. This is the latest version that includes Rust 1.88.

Interestingly, Ubuntu 25.10 uses several Rust-based tools itself, including sudo-rs, yet there’s no easy way to backport newer Rust versions to the LTS Noble (24.04) release. Noble ships with Rust 1.75/1.76 (released on Dec. 28, 2023), which is quite dated for modern Rust projects.

Launchpad Build Constraints

Launchpad has some requirements that make Rust packaging fairly challenging:

  1. No internet during build: You need to vendor all dependencies beforehand. This means creating a complete tarball with all crates vendored.
  2. Complex tooling: The process involves debhelper, dh-cargo, and various Debian-specific tools that have a steep learning curve.
  3. Documentation gap: There’s limited up-to-date documentation on packaging Rust projects for Ubuntu, especially for newer Rust editions.

I tried using Claude Code to help with the packaging process, but it wasn’t very helpful in this case. This is probably just too much of a niche topic for AI. The intersection of Rust, Cargo, Debian packaging, and Launchpad’s specific requirements is maybe quite a bit special.

Comparison with Other Distros

The contrast with some other distributions rustnet supports is really big:

  • Arch Linux (AUR): Creating an AUR package was a breeze. The PKGBUILD format is straightforward, and Cargo integration just works.
  • Fedora (COPR): Also very easy and allows internet access during builds, so you don’t need to vendor dependencies manually.
  • Ubuntu/Debian: By far the most complex and time-consuming process so far :)

Installation on Other Distributions

If you’re not on Ubuntu 25.10+, rustnet is also available on:

  • Arch Linux: Available in the AUR
  • Fedora: Available via COPR
  • Any Linux: Via cargo install rustnet-monitor
  • Docker: docker pull ghcr.io/domcyrus/rustnet:latest

For detailed installation instructions, see the INSTALL.md in the repository.

What is rustnet?

rustnet is a cross-platform network monitoring TUI (Terminal User Interface) that provides real-time visibility into your network connections. Key features include:

  • eBPF-based process identification on Linux (low overhead, no constant /proc polling)
  • Deep packet inspection to detect protocols (HTTP, HTTPS/TLS with SNI, DNS, SSH, QUIC)
  • Connection state tracking for TCP, UDP, ICMP, and ARP
  • Powerful filtering system to find exactly what you’re looking for
  • Cross-platform support (Linux, macOS, Windows)

If you’re interested in the technical details of how process identification works differently on Linux vs macOS, check out my previous posts:

Community

rustnet has gained some traction with over 1,200 stars on GitHub. I’d love to hear your feedback and feature requests!

Closing Thoughts

If you’re a Rust developer considering packaging for Ubuntu, be prepared for a learning curve, especially if you’re used to the simpler workflows of Arch or Fedora.

Happy monitoring! 🦀