System Dependencies
While FIREWHEEL is a Python package, it also depends on several system-level packages. FIREWHEEL has been tested with the following operating systems:
Ubuntu 16.04
Ubuntu 18.04
Ubuntu 20.04
CentOS 7
However, the underlying system packages likely will work on all OSes.
In this section, we outline the required packages and a few optional ones which might be useful.
Required System Packages
minimega
Version: 2.7 (or higher)
Description: A distributed VM management tool.
Purpose: Default mechanism for launching VMs.
Source: https://www.sandia.gov/minimega/
discovery
Version: 0.1 (or higher)
Description: A tool set to create network models.
Purpose: Convert FIREWHEEL graph into minimega commands.
git
Version: We recommend version 2.17 or higher.
Description: Fast, scalable, distributed revision control system
Purpose: Be able to clone Model Component git repositories.
Source: https://git-scm.com/
git-lfs
Description: Git Large File Support
Purpose: Be able to clone Model Component git repositories containing large file objects.
Source: https://git-lfs.github.com/
net-tools
Description: A collection of programs that form the base set of the NET-3 networking distribution for the Linux operating system.
Purpose: Enable configuration of host network interfaces.
procps
Description: procps is a set of command line and full-screen utilities that provide information out of the pseudo-filesystem most commonly located at
/proc
.Purpose: Provide access to
pkill
andpgrep
which are used to clean up experiments.
Python
Version: 3.7 (or higher)
Purpose: Running FIREWHEEL.
Source: https://www.python.org/
tar
Description: GNU version of the tar archiving utility
Purpose: Decompress images to cache and launch them.
Optional System Packages (for Helpers)
Additionally, some FIREWHEEL Helpers also require some system packages. These packages are completely optional as users can avoid calling those Helpers.
tmux
Helpers: tmux cluster
Description: terminal multiplexer.
ethtool
Helpers: tshoot check_nics Description: ethtool is the standard Linux utility for controlling network drivers and hardware, particularly for wired Ethernet devices. + URL: https://mirrors.edge.kernel.org/pub/software/network/ethtool/
uml-utilities
Helpers: vm builder Description: User-mode Linux is a port of the Linux kernel to its own system call interface. This is particularly useful for providing the tunctl utility. + URL: https://packages.debian.org/sid/uml-utilities
Optional System Packages (for Developers)
- Graph:
Purpose: Generating class diagrams.
Ubuntu Package(s):
graphviz
- Latex:
Purpose: Building Sphinx documentation
Ubuntu Package(s):
texlive-latex-recommended texlive-fonts-recommended texlive-latex-extra latexmk
- Enchant:
Purpose: For checking documentation spelling.
Ubuntu Package(s):
libenchant-dev
CentOS Package(s):
enchant-devel
Python Dependencies
Most FIREWHEEL dependencies are Python packages.
Many of these are used only for testing or development.
The complete lists are located in setup.py
.
For completeness sake, we have generated a table of recursive Python dependencies using pip-licenses.
Name |
Version |
License |
URL |
Description |
ClusterShell |
1.9.2 |
GNU Lesser General Public License v2 or later (LGPLv2+) |
ClusterShell library and tools |
|
Jinja2 |
3.1.4 |
BSD License |
A very fast and expressive template engine. |
|
MarkupSafe |
3.0.2 |
BSD License |
Safely add untrusted strings to HTML/XML markup. |
|
PyYAML |
6.0.2 |
MIT License |
YAML parser and emitter for Python |
|
Pygments |
2.18.0 |
BSD License |
Pygments is a syntax highlighting package written in Python. |
|
SQLAlchemy |
2.0.36 |
MIT License |
Database Abstraction Library |
|
Sphinx |
8.1.3 |
BSD License |
Python documentation generator |
|
alabaster |
1.0.0 |
BSD License |
A light, configurable Sphinx theme |
|
asttokens |
2.4.1 |
Apache 2.0 |
Annotate AST trees with source code positions |
|
attrs |
24.2.0 |
MIT License |
Classes Without Boilerplate |
|
babel |
2.16.0 |
BSD License |
Internationalization utilities |
|
beautysh |
6.2.1 |
MIT License |
A Bash beautifier for the masses. |
|
cachetools |
5.5.0 |
MIT License |
Extensible memoizing collections and decorators |
|
certifi |
2024.8.30 |
Mozilla Public License 2.0 (MPL 2.0) |
Python package for providing Mozilla’s CA Bundle. |
|
cfgv |
3.4.0 |
MIT License |
Validate configuration and produce human readable error messages. |
|
chardet |
5.2.0 |
GNU Lesser General Public License v2 or later (LGPLv2+) |
Universal encoding detector for Python 3 |
|
charset-normalizer |
3.4.0 |
MIT License |
The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet. |
|
click |
8.1.7 |
BSD License |
Composable command line interface toolkit |
|
colorama |
0.4.6 |
BSD License |
Cross-platform colored terminal text. |
|
comm |
0.2.2 |
BSD License |
Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc. |
|
coverage |
7.6.7 |
Apache Software License |
Code coverage measurement for Python |
|
debugpy |
1.8.8 |
MIT License |
An implementation of the Debug Adapter Protocol for Python |
|
decorator |
5.1.1 |
BSD License |
Decorators for Humans |
|
distlib |
0.3.9 |
Python Software Foundation License |
Distribution utilities |
|
doc8 |
1.1.2 |
Apache Software License |
Style checker for Sphinx (or other) RST documentation |
|
docutils |
0.21.2 |
BSD License; GNU General Public License (GPL); Public Domain; Python Software Foundation License |
Docutils – Python Documentation Utilities |
|
executing |
2.1.0 |
MIT License |
Get the currently executing AST node of a frame, and other information |
|
fastjsonschema |
2.20.0 |
BSD License |
Fastest Python implementation of JSON schema |
|
filelock |
3.16.1 |
The Unlicense (Unlicense) |
A platform independent file lock. |
|
firewheel |
2.7.0 |
Apache Software License |
FIREWHEEL is an experiment orchestration tool that assists a user in building, controlling, observing, and analyzing repeatable experiments of distributed network systems at any scale. |
|
firewheel |
2.7.0 |
Apache Software License |
FIREWHEEL is an experiment orchestration tool that assists a user in building, controlling, observing, and analyzing repeatable experiments of distributed network systems at any scale. |
|
greenlet |
3.1.1 |
MIT License |
Lightweight in-process concurrent programming |
|
grpcio |
1.67.0 |
Apache Software License |
HTTP/2-based RPC framework |
|
grpcio-tools |
1.66.2 |
Apache Software License |
Protobuf code generator for gRPC |
|
identify |
2.6.2 |
MIT License |
File identification library for Python |
|
idna |
3.10 |
BSD License |
Internationalized Domain Names in Applications (IDNA) |
|
imagesize |
1.4.1 |
MIT License |
Getting image size from png/jpeg/jpeg2000/gif file |
|
importlib_metadata |
8.5.0 |
Apache Software License |
Read metadata from Python packages |
|
iniconfig |
2.0.0 |
MIT License |
brain-dead simple config-ini parsing |
|
ipykernel |
6.29.5 |
BSD License |
IPython Kernel for Jupyter |
|
ipython |
8.29.0 |
BSD License |
IPython: Productive Interactive Computing |
|
jedi |
0.19.2 |
MIT License |
An autocompletion tool for Python that can be used for text editors. |
|
jsonschema |
4.23.0 |
MIT License |
An implementation of JSON Schema validation for Python |
|
jsonschema-specifications |
2024.10.1 |
MIT License |
https://github.com/python-jsonschema/jsonschema-specifications |
The JSON Schema meta-schemas and vocabularies, exposed as a Registry |
jupyter-cache |
1.0.1 |
MIT License |
A defined interface for working with a cache of jupyter notebooks. |
|
jupyter_client |
8.6.3 |
BSD License |
Jupyter protocol implementation and client libraries |
|
jupyter_core |
5.7.2 |
BSD License |
Jupyter core package. A base package on which Jupyter projects rely. |
|
markdown-it-py |
3.0.0 |
MIT License |
Python port of markdown-it. Markdown parsing, done right! |
|
matplotlib-inline |
0.1.7 |
BSD License |
Inline Matplotlib backend for Jupyter |
|
mdit-py-plugins |
0.4.2 |
MIT License |
Collection of plugins for markdown-it-py |
|
mdurl |
0.1.2 |
MIT License |
Markdown URL utilities |
|
minimega |
2.9 |
GNU General Public License v3 (GPLv3) |
Python API for minimega |
|
myst-nb |
1.1.2 |
UNKNOWN |
A Jupyter Notebook Sphinx reader built on top of the MyST markdown parser. |
|
myst-parser |
4.0.0 |
MIT License |
An extended [CommonMark](https://spec.commonmark.org/) compliant parser, |
|
nbclient |
0.10.0 |
BSD License |
A client library for executing notebooks. Formerly nbconvert’s ExecutePreprocessor. |
|
nbformat |
5.10.4 |
BSD License |
The Jupyter Notebook format |
|
nest-asyncio |
1.6.0 |
BSD License |
Patch asyncio to allow nested event loops |
|
netaddr |
1.3.0 |
BSD License |
A network address manipulation library for Python |
|
networkx |
3.4.2 |
BSD License |
Python package for creating and manipulating graphs and networks |
|
nodeenv |
1.9.1 |
BSD License |
Node.js virtual environment builder |
|
packaging |
24.2 |
Apache Software License; BSD License |
Core utilities for Python packages |
|
parso |
0.8.4 |
MIT License |
A Python Parser |
|
pbr |
6.1.0 |
Apache Software License |
Python Build Reasonableness |
|
pexpect |
4.9.0 |
ISC License (ISCL) |
Pexpect allows easy control of interactive console applications. |
|
pip |
24.3.1 |
MIT License |
The PyPA recommended tool for installing Python packages. |
|
pip-licenses |
5.0.0 |
MIT License |
Dump the software license list of Python packages installed with pip. |
|
platformdirs |
4.3.6 |
MIT License |
A small Python package for determining appropriate platform-specific dirs, e.g. a user data dir. |
|
pluggy |
1.5.0 |
MIT License |
plugin and hook calling mechanisms for python |
|
pre_commit |
4.0.1 |
MIT License |
A framework for managing and maintaining multi-language pre-commit hooks. |
|
prettytable |
3.12.0 |
BSD License |
A simple Python library for easily displaying tabular data in a visually appealing ASCII table format |
|
prompt_toolkit |
3.0.48 |
BSD License |
Library for building powerful interactive command lines in Python |
|
protobuf |
5.28.3 |
3-Clause BSD License |
UNKNOWN |
|
psutil |
6.1.0 |
BSD License |
Cross-platform lib for process and system monitoring in Python. |
|
ptyprocess |
0.7.0 |
ISC License (ISCL) |
Run a subprocess in a pseudo terminal |
|
pure_eval |
0.2.3 |
MIT License |
Safely evaluate AST nodes without side effects |
|
pyenchant |
3.2.2 |
GNU Library or Lesser General Public License (LGPL) |
Python bindings for the Enchant spellchecking system |
|
pyproject-api |
1.8.0 |
MIT License |
API to interact with the python pyproject.toml based projects |
|
pytest |
8.3.3 |
MIT License |
pytest: simple powerful testing with Python |
|
pytest-cov |
6.0.0 |
MIT License |
Pytest plugin for measuring coverage. |
|
python-dateutil |
2.9.0.post0 |
Apache Software License; BSD License |
Extensions to the standard Python datetime module |
|
python-dotenv |
1.0.1 |
BSD License |
Read key-value pairs from a .env file and set them as environment variables |
|
pyzmq |
26.2.0 |
BSD License |
Python bindings for 0MQ |
|
qemu.qmp |
0.0.3 |
GNU General Public License v2 (GPLv2); GNU Lesser General Public License v2 or later (LGPLv2+) |
QEMU Monitor Protocol library |
|
referencing |
0.35.1 |
MIT License |
JSON Referencing + Python |
|
requests |
2.32.3 |
Apache Software License |
Python HTTP for Humans. |
|
restructuredtext_lint |
1.4.0 |
Public Domain |
reStructuredText linter |
|
rich |
13.9.4 |
MIT License |
Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal |
|
rpds-py |
0.21.0 |
MIT License |
Python bindings to Rust’s persistent data structures (rpds) |
|
ruff |
0.7.4 |
MIT License |
An extremely fast Python linter and code formatter, written in Rust. |
|
setuptools |
75.5.0 |
MIT License |
Easily download, build, install, upgrade, and uninstall Python packages |
|
six |
1.16.0 |
MIT License |
Python 2 and 3 compatibility utilities |
|
snowballstemmer |
2.2.0 |
BSD License |
This package provides 29 stemmers for 28 languages generated from Snowball algorithms. |
|
sphinx-copybutton |
0.5.2 |
MIT License |
Add a copy button to each of your code cells. |
|
sphinx-rtd-theme |
3.0.2 |
MIT License |
Read the Docs theme for Sphinx |
|
sphinx_design |
0.6.1 |
MIT License |
A sphinx extension for designing beautiful, view size responsive web components. |
|
sphinxcontrib-applehelp |
2.0.0 |
BSD License |
sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books |
|
sphinxcontrib-devhelp |
2.0.0 |
BSD License |
sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents |
|
sphinxcontrib-htmlhelp |
2.1.0 |
BSD License |
sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files |
|
sphinxcontrib-jquery |
4.1 |
BSD License |
Extension to include jQuery on newer Sphinx releases |
|
sphinxcontrib-jsmath |
1.0.1 |
BSD License |
A sphinx extension which renders display math in HTML via JavaScript |
|
sphinxcontrib-qthelp |
2.0.0 |
BSD License |
sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents |
|
sphinxcontrib-serializinghtml |
2.0.0 |
BSD License |
sphinxcontrib-serializinghtml is a sphinx extension which outputs “serialized” HTML files (json and pickle) |
|
sphinxcontrib-spelling |
8.0.0 |
BSD License |
Sphinx spelling extension |
|
stack-data |
0.6.3 |
MIT License |
Extract data from python stack frames and tracebacks for informative displays |
|
stevedore |
5.3.0 |
Apache Software License |
Manage dynamic plugins for Python applications |
|
tabulate |
0.9.0 |
MIT License |
Pretty-print tabular data |
|
tomli |
2.1.0 |
MIT License |
A lil’ TOML parser |
|
tornado |
6.4.1 |
Apache Software License |
Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. |
|
tox |
4.23.2 |
MIT License |
tox is a generic virtualenv management and test command line tool |
|
traitlets |
5.14.3 |
BSD License |
Traitlets Python configuration system |
|
types-colorama |
0.4.15.20240311 |
Apache Software License |
Typing stubs for colorama |
|
types-setuptools |
57.4.18 |
Apache Software License |
Typing stubs for setuptools |
|
typing_extensions |
4.12.2 |
Python Software Foundation License |
Backported and Experimental Type Hints for Python 3.8+ |
|
urllib3 |
2.2.3 |
MIT License |
HTTP library with thread-safe connection pooling, file post, and more. |
|
virtualenv |
20.27.1 |
MIT License |
Virtual Python Environment builder |
|
wcwidth |
0.2.13 |
MIT License |
Measures the displayed width of unicode strings in a terminal |
|
zipp |
3.21.0 |
MIT License |
Backport of pathlib-compatible object wrapper for zip files |