
**rosdep** is the official **command-line tool** for resolving external (system) dependencies of ROS and ROS 2 packages. Every ROS package declares its dependencies in `package.xml` as `<depend>` keys (e.g. `<depend>boost</depend>`, `<depend>eigen</depend>`, `<depend>opencv</depend>`). rosdep translates these abstract keys into concrete installation commands for the current operating system — `apt-get install libboost-dev` on Ubuntu/Debian, `brew install boost` on macOS, `yum install boost-devel` on RHEL, `pip install opencv-python` as a fallback for Python packages.
## Architecture
rosdep is built around a **centralized YAML database** in the [`ros/rosdistro`](https://github.com/ros/rosdistro) repository (Open Robotics). The `rosdep/base.yaml` file maps keys (e.g. `boost`) to a set of installation commands per OS / per distribution:
```yaml
boost:
ubuntu:
jammy: [libboost-all-dev]
noble: [libboost-all-dev]
fedora: [boost-devel]
osx:
homebrew: [boost]
```
Additionally, `python.yaml` maps Python packages, `rosdep/osx-homebrew.yaml` provides macOS fallbacks, and third-party rules can be registered through `/etc/ros/rosdep/sources.list.d/*.yaml`.
## Workflow
After the first install, a developer runs: `sudo rosdep init` (once) → `rosdep update` (fetches the latest YAML files from GitHub into `~/.ros/rosdep/`). Then inside a workspace: `rosdep install --from-paths src --ignore-src -r -y` — scans every `package.xml`, collects keys, and installs missing dependencies with a single `apt-get install`.
## Key features
- **--from-paths PATHS** — scan directories for `package.xml` files.
- **--ignore-src** — ignore dependencies that already exist as a package in the workspace.
- **--rosdistro DISTRO** — force the ROS distro (humble / jazzy / rolling) when autodetection fails.
- **--skip-keys K1 K2** — skip specific keys (e.g. unavailable on the current OS).
- **--simulate** — print the commands without executing them (dry run).
- **resolve KEY** — show how a given key resolves for the current OS.
## Status and maintenance
rosdep is **actively maintained** by Open Robotics and OSRF. License: BSD 3-clause. Code repository: [`ros-infrastructure/rosdep`](https://github.com/ros-infrastructure/rosdep). Rules database: [`ros/rosdistro`](https://github.com/ros/rosdistro) — accepts community PRs (anyone can add a new key via pull request). Distribution: PyPI (`pip install -U rosdep`) and apt (`python3-rosdep`).
A Developer Tool is software designed to support the development workflow, including configuration, debugging, testing, monitoring, validation, and integration of robotic and embedded systems. Examples include IDE plugins, visual debuggers, log analysers, hardware-in-the-loop (HIL) test harnesses, and code-generation utilities specific to robotics platforms.
A CLI Tool (Command-Line Interface Tool) is a program run from a terminal or shell, used for administration, integration, configuration, testing, and diagnostics of robotic devices and software systems. CLI tools are common in robotics workflows for flashing firmware, configuring network settings, running diagnostics, launching processes, and automating repetitive tasks in CI/CD pipelines.
A set of official command-line tools supporting the ROS / ROS 2 developer workflow: building multi-package workspaces, resolving system dependencies, and packaging for binary distribution. Includes colcon, rosdep, bloom, and others.
**All ROS 1 distributions from Hydro (2013) and every ROS 2 distribution** — rosdep is a mandatory step after `git clone` of a workspace: `rosdep install --from-paths src -y`. **Official ROS 2 tutorials** (docs.ros.org) always require rosdep before `colcon build`. **NVIDIA Isaac ROS** — every Isaac ROS package README instructs running `rosdep install` before building. **ros-tooling/action-ros-ci** (GitHub Actions) — runs `rosdep install` automatically for every CI build. **ROS 2 CI farm** — the buildfarm at jenkins.ros.org runs `rosdep install` as the first step of every job. **NASA-JPL OpenROCS** (Mars Sample Return prep) — uses rosdep to manage dependencies in its ROS 2 stack.
Repository ros-infrastructure/rosdep: ~250 stars, ~210 forks, ~60 contributors. Repository ros/rosdistro (rules database): ~700 stars, ~1,100 forks, ~700 unique contributors (every new ROS package opens a PR to rosdistro). PyPI `rosdep`: ~150,000 downloads per month (2025). answers.ros.org — ~3,800 questions tagged `rosdep`. ROS Discourse: ~600 threads.
The rosdep cache occupies ~50 MB in `~/.ros/rosdep/sources.cache/` after the first `rosdep update`.
License family: Permissive
Current series with fixes for ROS 2 Kilted Kaiju. Python 3.13 support, minor rule validation improvements.
Ubuntu Noble 24.04 (ROS 2 Jazzy) support. Improved error reporting for `--simulate`. ~30% faster `rosdep update`.
Ubuntu Jammy 22.04 (ROS 2 Humble) support. Introduction of `rosdep keys` (list of all keys in a workspace).
Python 3.8 and Ubuntu Focal 20.04 support. Better handling of pip3 vs pip2.
Refactor for ROS Hydro: code separated from the rules database (rosdistro), pluggable installer system. macOS/Homebrew, Fedora/yum, Arch/pacman support.
First version integrated with ROS Cturtle/Diamondback. Ubuntu-only support (apt-get).