# Install g2o with Homebrew, apt, Nix

General framework for graph optimization. Version 20241228 via Homebrew; verified 2026-06-25.

## Install

```sh
sudo av install brew:g2o
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install g2o
```

  Evidence: local Homebrew formula metadata

### Linux

- Debian apt (92%):

```sh
sudo apt install libg2o-dev
```

  Evidence: Debian stable package indexes: libg2o-dev from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz

- Nix (92%):

```sh
nix profile install nixpkgs#g2o
```

  Evidence: nixpkgs package indexes: pkgs/by-name/g2/g2o/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

## Package facts

- **Package key:** brew:g2o
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/g2o>
- **Version:** 20241228
- **Source summary:** General framework for graph optimization
- **Homepage:** <https://openslam-org.github.io/g2o.html>
- **Repository:** <https://github.com/RainerKuemmerle/g2o>
- **Upstream docs:** <https://github.com/RainerKuemmerle/g2o#readme>
- **License:** BSD-2-Clause
- **Source archive:** <https://github.com/RainerKuemmerle/g2o/archive/refs/tags/20241228_git.tar.gz>
- **Last updated:** 2026-06-25T13:37:41+02:00
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- g2o (cli)
- g2o_simulator2d (cli)
- g2o_simulator3d (cli)
- g2o (alias)
- g2o_simulator2d (alias)
- g2o_simulator3d (alias)

## Dependencies

- eigen

## Build dependencies

- cmake

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sequoia, sonoma, tahoe, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 20241228
- Package-manager updated: 2026-06-25
- Local data: ok
- Upstream repository: https://github.com/RainerKuemmerle/g2o
- info: No cached GitHub release or tag data was available.
## Project history and usage

g2o is an open-source C++ framework for graph-based nonlinear optimization, best known in robotics and computer vision for simultaneous localization and mapping (SLAM) and bundle adjustment (BA) problems.

### Project history

The project was presented by Rainer Kuemmerle, Giorgio Grisetti, Hauke Strasdat, Kurt Konolige, and Wolfram Burgard as "g2o: A General Framework for Graph Optimization" at ICRA 2011. OpenSLAM described the hosted code as a stable release and pointed users to the GitHub repository for development code, including an improved Schur complement implementation and BSD relicensing.

The GitHub repository was created in January 2012 and describes g2o as a framework for optimizing graph-based nonlinear error functions. Its README documents CMake/Eigen-based builds, multiple command-line programs, and current support across Linux, macOS, Windows, and Android-related build flows.

### Adoption history

g2o entered package-manager culture because it packages a research-grade SLAM and bundle-adjustment optimizer as a reusable C++ library and CLI toolkit. The upstream README explicitly documents Homebrew installation, and the input package facts list Homebrew, Debian, Ubuntu, and Nix package names.

The project also attracted wrapper projects, including a Python binding published separately and a .NET wrapper, showing use beyond direct C++ embedding.

### How it is used

Users model problems as graph nodes and edges and run g2o's optimizers on nonlinear least-squares graph formulations. Upstream examples and documentation emphasize SLAM, bundle adjustment, and text log formats containing node and edge messages.

Package users commonly install the library and tools, then link against g2o from robotics or computer-vision software, or use its command-line binaries such as g2o and the simulator tools.

### Why package nerds care

g2o is significant because it is a classic academic C++ optimizer that escaped paper-code status into long-lived distro packaging. It carries the usual package-maintainer wrinkles: optional SuiteSparse, Qt/libQGLViewer GUI pieces, mixed license notes for subcomponents, and ABI-sensitive C++ dependencies.

### Timeline

- 2011: g2o paper published at IEEE ICRA.
- 2012: Development repository created on GitHub.
- 2010s: Packaged across Homebrew, Debian/Ubuntu, and Nix according to the supplied package facts.
- 2020s: README documents cross-platform CI/build support and related Python/.NET wrapper projects.

### Related projects

- OpenSLAM hosted the original project page and stable release information.
- g2o-python provides separately packaged Python bindings.
- The README also points to a .NET wrapper for g2o.

### Sources

- <https://api.github.com/repos/RainerKuemmerle/g2o>
- <https://github.com/RainerKuemmerle/g2o>
- <https://openslam-org.github.io/g2o.html>
- <https://raw.githubusercontent.com/RainerKuemmerle/g2o/master/README.md>


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals

## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** g2o
- **Version Scheme:** 0
- **Revision:** 1
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** stable

## Other Package-Manager Records

- Debian apt - libg2o-dev - 0~20230806-4.1+b2: normalized package name match | Debian stable package indexes: libg2o-dev from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | C++ framework for optimizing graph-based nonlinear error functions | http://www.g2o.org
- Debian apt - libg2o-doc - 0~20230806-4.1: normalized package name match | Debian stable package indexes: libg2o-doc from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | C++ framework for optimizing graph-based nonlinear error functions | http://www.g2o.org
- Debian apt - libg2o0t64 - 0~20230806-4.1+b2: normalized package name match | Debian stable package indexes: libg2o0t64 from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | C++ framework for optimizing graph-based nonlinear error functions | http://www.g2o.org
- Nix - g2o: normalized package name match | nixpkgs package indexes: pkgs/by-name/g2/g2o/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- Ubuntu apt - libg2o-dev - 0~20230806-4.1build1: normalized package name match | Ubuntu 24.04 LTS package indexes: libg2o-dev from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | C++ framework for optimizing graph-based nonlinear error functions | http://www.g2o.org
- Ubuntu apt - libg2o-doc - 0~20230806-4.1build1: normalized package name match | Ubuntu 24.04 LTS package indexes: libg2o-doc from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | C++ framework for optimizing graph-based nonlinear error functions | http://www.g2o.org
- Ubuntu apt - libg2o0t64 - 0~20230806-4.1build1: normalized package name match | Ubuntu 24.04 LTS package indexes: libg2o0t64 from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | C++ framework for optimizing graph-based nonlinear error functions | http://www.g2o.org


## Related links

- [Source-control packages](https://www.automicvault.com/pkg/source-control-tools/) - Belongs to a source-control command family.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Networking and protocol packages](https://www.automicvault.com/pkg/networking-protocol-tools/) - Matched network, protocol, or remote-service metadata.
- [Scientific computing packages](https://www.automicvault.com/pkg/scientific-computing-tools/) - Matched scientific computing metadata.
- [cmake](https://www.automicvault.com/pkg/brew/cmake/) - Build dependency declared by Homebrew.
- [rtabmap](https://www.automicvault.com/pkg/brew/rtabmap/) - Popular package that depends on this formula.
- [visp](https://www.automicvault.com/pkg/brew/visp/) - Shares av.db curated category or tags: c-plus-plus, cli, computer-vision, robotics, science.
- [clp](https://www.automicvault.com/pkg/brew/clp/) - Shares av.db curated category or tags: c-plus-plus, cli, optimization, science.
- [papilo](https://www.automicvault.com/pkg/brew/papilo/) - Shares av.db curated category or tags: c-plus-plus, cli, optimization, science.
- [cbc](https://www.automicvault.com/pkg/brew/cbc/) - Shares av.db curated category or tags: cli, optimization, science.
- [gaul](https://www.automicvault.com/pkg/brew/gaul/) - Shares av.db curated category or tags: cli, optimization, science.
- [glpk](https://www.automicvault.com/pkg/brew/glpk/) - Shares av.db curated category or tags: cli, optimization, science.
- [ipopt](https://www.automicvault.com/pkg/brew/ipopt/) - Shares av.db curated category or tags: cli, optimization, science.
- [opencv](https://www.automicvault.com/pkg/brew/opencv/) - Local package facts share a topical domain. Shared terms: c-plus-plus, cli, computer, computer-vision, eigen.

## Combined YAML source

View the package source record on GitHub. [combined/g2o.yml](https://github.com/automic-vault/db/blob/main/combined/g2o.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
