A long-standing request from the Gazebo community has been the ability to install Gazebo without pulling in Qt and other GUI dependencies — particularly useful for CI pipelines, headless servers, and Docker containers ( gz-sim8-release#8). Starting with Gazebo Jetty, this is now possible with the new gz-sim10-server package version 10.1.1-2, available today in the stable OSRF repositories.
The New Package
gz-sim10-server ships the standalone gz-sim-server binary along with all non-GUI simulation plugins, rendering engines (needed for sensor simulation), and the full sensor suite — everything you need to run headless simulations. What it doesn’t include: Qt libraries, GUI plugins, or any graphical interface components.
The Server executable
The server binary is a standalone (pure C++) executable that does not go through the gz ruby wrapper (gz-sim#2809).
It is installed at /usr/libexec/gz/sim10/gz-sim-server, which is not in PATH by default. The familiar gz sim -s command is not available in the server-only installation since it requires the full gz-sim10-cli package. To run simulations, invoke the binary directly:
/usr/libexec/gz/sim10/gz-sim-server my_world.sdf
Package Comparison
| Metric | gz-sim10-server |
gz-jetty |
|---|---|---|
| Total packages installed | 596 | 993 |
| Gazebo packages | 85 | 124 |
That’s ~40% fewer total packages.
How to Install
Fresh install on Ubuntu Noble:
sudo apt-get install gz-sim10-server
Existing Users and Backward Compatibility
If you already have gz-jetty or libggz-sim10-dev installed, the underlying packages have been reorganized into GUI and non-GUI splits. A plain apt-get upgrade will not automatically install the new split packages — you need to use one of these methods:
# Option 1: Let apt handle the full transition
sudo apt-get dist-upgrade
# Option 2: Explicitly install the new packages
sudo apt-get install gz-sim10-cli
Tip:
apt-get upgradeinstalls new versions of existing packages but never installs new packages or removes old ones.apt-get dist-upgradewill install and remove packages as needed to complete the upgrade — which is required when the dependency structure changes, as it does here.
After the transition, all GUI and server components remain installed — there is no change in functionality. The split is purely an internal packaging reorganization; full-installation users will continue to have the exact same set of features as before.
Links
- Original feature request: gz-sim#2737
- Release tracking: gz-sim8-release#8
- Standalone server binary PR: gz-sim#2809