netlab 1.9.6: Static Routes to Default Gateways

Last week, I had to push out netlab release 1.9.6 to address a particularly nasty Python dependency hell to make netlab work (again) on Ubuntu 24.04 (more details). The release also brought these goodies (and a bunch of bug fixes):

About That Python Dependency

Python documentation encourages virtual environments when installing packages1. That’s all fine and dandy if you’re running a gazillion different software packages on your laptop, but largely irrelevant if you’re using a Linux server (or VM) as an appliance – the recommended netlab deployment model.

Furthermore, some Linux distros love to include a random selection of Python packages as system packages. For example, Ubuntu 24.04 comes with preinstalled rich package. That’s OK as long as every other package is happy with the vendor-selected version of the preinstalled packages, but that may change at any time when someone pushes a new version of their code (and its dependencies) to PyPi2.

The rich package was “forever” included in Ubuntu 24.04. We knew that, but every package we used was happy with the preinstalled rich package, so the netlab installation scripts did not upgrade it.

A few days ago, one of the Python packages used (probably) by Ansible started requiring a newer version of the rich package. The upgrade process triggered by that new dependency failed because the original rich package was not installed with PyPi, and the netlab Ansible installation script crashed. New netlab users could not install it on Ubuntu 24.04.

Workaround: The netlab Ansible installation script in release 1.9.6 installs the latest version of the rich package (and a bunch of others) with the --ignore-installed flag.

Upgrading or Starting from Scratch?


  1. Sometimes Linux distros go as far as almost removing the ability to install packages into default user- or system Python directories. ↩︎

  2. Yeah, I know we should be pinning the versions of every package used in netlab and all tools used by netlab (like Ansible). In other news, we usually find something better to do with our time. ↩︎

Add comment
Sidebar