# Install cdb with Homebrew, MacPorts, Nix

Create and read constant databases. Version 20251021 via Homebrew; verified from local package data. Also installable with nix: nix profile install nixpkgs#cdb.

## Install

```sh
sudo av install brew:cdb
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install cdb
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install cdb
```

  Evidence: MacPorts ports tree: databases/cdb/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- Nix (92%):

```sh
nix profile install nixpkgs#cdb
```

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

## Package facts

- **Package key:** brew:cdb
- **Package manager:** Homebrew
- **Version:** 20251021
- **Source summary:** Create and read constant databases
- **Homepage:** <https://cdb.cr.yp.to/>
- **Generated:** 2026-08-03T19:37:03+00:00

## Executables

- cdb64dump (alias)
- cdb64get (alias)
- cdb64make (alias)
- cdb64make-12 (alias)
- cdb64make-sv (alias)
- cdb64stats (alias)
- cdb64test (alias)
- cdbdump (alias)
- cdbget (alias)
- cdbmake (alias)
- cdbmake-12 (alias)
- cdbmake-sv (alias)
- cdbstats (alias)
- cdbtest (alias)

## Install behavior

- Bottle: not available

## Freshness

- Page generated: 2026-08-03
- Package-manager version: 20251021
## Project history and usage

cdb is D. J. Bernstein's constant database package: a small file format and toolset for creating immutable key-value databases with fast lookups and atomic replacement. It is aimed at workloads where data is rebuilt wholesale and then read many times.

### Project history

The official cdb site describes cdb as a fast, reliable, simple package for creating and reading constant databases, with successful lookups in large databases normally taking two disk accesses and unsuccessful lookups one. The official format page republishes Bernstein's original 19960914 document, 'A structure for constant databases,' which defines the core cdb file layout, hash tables, records, little-endian 32-bit quantities, and hash function.

The official download page records cdb-0.55 on 1996-09-22 as the first release, cdb-0.70 on 2000-02-17 as an almost complete API rewrite with mmap suggested by Ken Lalonde, cdb-0.75 on 2000-02-19 as a bug-fix and performance release, and a 2025-10-21 release adding cdb64 support, configure/make install support, and updated documentation.

### Adoption history

cdb's adoption has been unusually long-lived for a tiny database format. The official site lists independent support packages and bindings in Perl, Ruby, Go, Rust, Python/Node wrappers through cdb64-rs, and TinyCDB wrappers. The Homebrew input also records cdb packages in Homebrew, MacPorts, and Nix.

### How it is used

cdb is used when a program needs a compact, immutable lookup table that can be regenerated atomically. The package includes cdbmake for building databases, cdbget for lookup, cdbdump for dumping records, cdbstats for inspection, and a C read API documented on the official site.

### Why package nerds care

For package nerds, cdb is part of the D. J. Bernstein software lineage and a canonical example of a tiny, stable file format that escaped its original codebase. Its appeal is the combination of predictable lookup behavior, crash-safe replacement, public-domain-style licensing in packaged builds, and easy reimplementation in many languages.

### Timeline

- 1996-09-14: Original cdb format document date on the official format page.
- 1996-09-22: cdb-0.55 first release on the official download page.
- 2000-02-17: cdb-0.70 rewrote almost everything from scratch and incorporated mmap.
- 2000-02-19: cdb-0.75 fixed a database creation bug and improved cdbmake performance.
- 2025-10-21: Official release added cdb64 support and modern configure/install support.

### Related projects

- The official intro page lists cdb64, cdb64-rs, CDB_File, cdb-full, CDB::TinyCDB, and Go implementations as packages that support the cdb or cdb64 formats.

### Sources

- <https://cdb.cr.yp.to/>
- <https://cdb.cr.yp.to/cdb.html>
- <https://cdb.cr.yp.to/cdbmake.html>
- <https://cdb.cr.yp.to/format.html>
- <https://formulae.brew.sh/api/formula/cdb.json>
- <https://cdb.cr.yp.to/download.html>


## Security Notes

broad file, network, media, or database tool signal.

- **Geiger risk:** blue / medium
- broad file, network, media, or database tool signal

## Other Package-Manager Records

- Nix - cdb: normalized package name match | nixpkgs package indexes: pkgs/by-name/cd/cdb/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- MacPorts - cdb: normalized package name match | MacPorts ports tree: databases/cdb/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1


## Combined YAML source

View the package source record on GitHub. [combined/cdb.yml](https://github.com/mxcl/pkgdb/blob/main/combined/cdb.yml)


## Sources

- pkg.so package database
- Geiger risk classifier
- curated package history
- pkgdb category and tag curation
- external package-manager database matches
- cross-ecosystem install command graph
