# Install opam with Homebrew, apk, apt, dnf, MacPorts, Nix, pacman, scoop, winget, zypper

OCaml package manager. Version 2.5.1 via Homebrew; verified 2026-04-15.

## Install

```sh
sudo av install brew:opam
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install opam
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install opam
```

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

### Linux

- apk (92%):

```sh
sudo apk add opam
```

  Evidence: Alpine Linux edge package indexes: opam from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz

- Debian apt (92%):

```sh
sudo apt install opam
```

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

- dnf (92%):

```sh
sudo dnf install opam
```

  Evidence: Fedora Rawhide package metadata: opam from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst

- Nix (92%):

```sh
nix profile install nixpkgs#opam
```

  Evidence: nixpkgs package indexes: opam from https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/top-level/all-packages.nix

- pacman (92%):

```sh
sudo pacman -S opam
```

  Evidence: Arch Linux sync databases: opam from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz

- zypper (92%):

```sh
sudo zypper install opam
```

  Evidence: openSUSE Tumbleweed package metadata: opam from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst

### Windows

- Scoop (92%):

```sh
scoop install main/opam
```

  Evidence: Scoop official bucket manifest trees: bucket/opam.json from https://api.github.com/repos/ScoopInstaller/Main/git/trees/master?recursive=1

- winget (92%):

```sh
winget install --id OCaml.opam -e
```

  Evidence: Windows Package Manager source index: OCaml.opam from https://cdn.winget.microsoft.com/cache/source.msix

## Package facts

- **Package key:** brew:opam
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/opam>
- **Version:** 2.5.1
- **Source summary:** OCaml package manager
- **Homepage:** <https://opam.ocaml.org>
- **Repository:** <https://github.com/ocaml/opam>
- **Upstream docs:** <https://github.com/ocaml/opam#readme>
- **License:** LGPL-2.1-only
- **Source archive:** <https://github.com/ocaml/opam/releases/download/2.5.1/opam-full-2.5.1.tar.gz>
- **Last updated:** 2026-04-15T23:50:24Z
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- opam (cli)
- opam-installer (cli)
- opam (alias)
- opam-installer (alias)

## Dependencies

- rsync

## Build dependencies

- ocaml

## Uses from macOS

- unzip

## Install behavior

- Post-install hook: not defined
- Caveats: OPAM uses ~/.opam by default for its package database, so you need to initialize it first by running: $ opam init
- Bottle: available on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 2.5.1
- Package-manager updated: 2026-04-15
- Local data: ok
- Upstream repository: https://github.com/ocaml/opam
- info: No cached GitHub release or tag data was available.
## Project history and usage

opam is the source-based package manager for OCaml. It manages compiler switches, package constraints, solver-backed dependency resolution, and a Git-friendly development workflow, making it both the OCaml ecosystem's package index client and a practical compiler-environment manager.

### Project history

The opam history published by the project traces the work to OCamlPro and the wider OCaml community in 2012. Thomas Gazagnaire pushed the first public commit in February 2012; constraint-solving work from Roberto Di Cosmo and Pietro Abate helped connect opam with Mancoosi tools such as CUDF and dose; and documentation and website work followed before the public beta.

The first public beta appeared in January 2013, and opam 1.0.0 was announced on March 15, 2013. The 1.0 release added an auto-configuration tool around opam init, shell completion, toplevel script loading, and related setup tasks, which lowered the cost of getting a usable OCaml environment.

The project quickly became more than a package installer. It standardized switch-based OCaml compiler management, package descriptions, solver integration, and repository workflows in a language ecosystem where compiler versions and native dependencies often matter as much as library versions.

### Adoption history

Mirage began using opam in June 2012 for custom compiler needs, and the opam-repository grew through community package submissions. Jane Street's Core libraries appeared in the repository in July 2012, Travis CI was integrated into pull-request processing in September 2013, and contributors were contacted in 2013 to relicense repository contributions to CC0 for the move to the ocaml organization.

The package metadata in this batch records opam across many OS package managers, including Alpine, Homebrew, Debian, Fedora, MacPorts, Nix, Arch, Scoop, Ubuntu, WinGet, and openSUSE. That broad packaging footprint reflects opam's role as the expected bootstrap tool for OCaml development across Unix, macOS, and Windows-oriented environments.

### How it is used

Developers use opam to install OCaml compilers and libraries, create and switch between isolated compiler environments, update package metadata, upgrade installed packages, pin packages from local or remote sources, and reproduce project dependency sets. The homepage's basic workflow is list, install, update, and upgrade; day-to-day OCaml work adds switches and project-local package constraints.

Operators and distribution maintainers care about opam because it bridges source builds, solver constraints, compiler variants, and external system packages. A package can be available in opam while still depending on native libraries provided by Homebrew, apt, pacman, or another host package manager.

### Why package nerds care

opam is one of the cleaner examples of a language package manager that also manages language runtimes. Its switch model makes compiler selection explicit, and its repository model gives OCaml packages machine-readable metadata while keeping the package index in Git.

For package nerds, opam is important because it makes the hard part visible: OCaml package installation is not just downloading archives, but solving constraints across compiler versions, library packages, build tools, and external dependencies. That is why opam sits naturally in both developer-tools and dependency-management categories.

### Timeline

- 2012: early opam work began, with Mirage using opam in June and key repository packages arriving later that year.
- January 2013: the first public beta was released.
- March 15, 2013: opam 1.0.0 was announced.
- November 2013: opam 1.1.0 was released and Louis Gesbert became technical lead.
- 2013: opam-repository moved toward CC0 relicensing and the ocaml GitHub organization.

### Related projects

- opam is closely tied to opam-repository, OCaml compiler switches, MirageOS, CUDF, dose, aspcud, and the OCaml Platform. It also interacts with host package managers because many OCaml packages depend on native libraries and tools outside the OCaml package universe.

### Sources

- <https://ocamlpro.com/blog/2013_01_17_beta_release_of_opam/>
- <https://opam.ocaml.org/>
- <https://opam.ocaml.org/about.html>
- <https://opam.ocaml.org/blog/opam-1-0-0-released/>
- source_facts.config-file-location
- source_facts.executables
- source_facts.package-manager


## Security Notes

infrastructure mutation or orchestration signal.

- **Geiger risk:** orange / medium
- infrastructure mutation or orchestration signal


## Configuration and credential file locations

These source-backed paths show where this package keeps local settings or durable credentials. Automic Vault can use them as review targets for secret scanning, migration, and command approval.


## Configuration files

- Unix: ~/.opam/config, ~/.opamrc, /etc/opamrc
## Source Database Details

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

## Other Package-Manager Records

- Debian apt - opam - 2.3.0-1+deb13u1: normalized package name match | Debian stable package indexes: opam from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | package manager for OCaml | https://opam.ocaml.org
- Debian apt - opam-doc - 2.3.0-1+deb13u1: normalized package name match | Debian stable package indexes: opam-doc from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | package manager for OCaml (documentation) | https://opam.ocaml.org
- Debian apt - opam-installer - 2.3.0-1+deb13u1: normalized package name match | Debian stable package indexes: opam-installer from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | Utility handling (un)installation of Opam .install files | https://opam.ocaml.org
- Nix - opam: normalized package name match | nixpkgs package indexes: opam from https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/top-level/all-packages.nix
- Ubuntu apt - opam - 2.1.5-1: normalized package name match | Ubuntu 24.04 LTS package indexes: opam from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | package manager for OCaml | https://opam.ocaml.org
- Ubuntu apt - opam-doc - 2.1.5-1: normalized package name match | Ubuntu 24.04 LTS package indexes: opam-doc from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | package manager for OCaml (documentation) | https://opam.ocaml.org
- Ubuntu apt - opam-installer - 2.1.5-1: normalized package name match | Ubuntu 24.04 LTS package indexes: opam-installer from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | Utility handling (un)installation of Opam .install files | https://opam.ocaml.org
- apk - opam - 2.5.1-r0: normalized package name match | Alpine Linux edge package indexes: opam from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | OCaml Package Manager | https://opam.ocaml.org
- apk - opam-doc - 2.5.1-r0: normalized package name match | Alpine Linux edge package indexes: opam-doc from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | OCaml Package Manager (documentation) | https://opam.ocaml.org
- dnf - opam - 2.5.1-1.fc45: normalized package name match | Fedora Rawhide package metadata: opam from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Source-based package manager for OCaml | https://opam.ocaml.org/
- dnf - opam-installer - 2.5.1-1.fc45: normalized package name match | Fedora Rawhide package metadata: opam-installer from https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/repodata/e5ca8ce900cd68f5419e1c39ae517343100b306336cbaeb70a3c153121d95094-primary.xml.zst | Standalone script for opam install files | https://opam.ocaml.org/
- pacman - opam - 2.5.1-1: normalized package name match | Arch Linux sync databases: opam from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz | OCaml package manager | https://opam.ocaml.org/
- zypper - opam - 2.5.1-1.2: normalized package name match | openSUSE Tumbleweed package metadata: opam from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | Source-based package manager for OCaml | https://opam.ocaml.org/
- zypper - opam-devel - 2.5.1-1.2: normalized package name match | openSUSE Tumbleweed package metadata: opam-devel from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | Development files for opam | https://opam.ocaml.org/
- zypper - opam-installer - 2.5.1-1.2: normalized package name match | openSUSE Tumbleweed package metadata: opam-installer from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | Standalone tool for opam install files | https://opam.ocaml.org/
- MacPorts - opam: normalized package name match | MacPorts ports tree: ocaml/opam/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1


## Related links

- [Package publisher tools](https://www.automicvault.com/pkg/package-publishers/) - Belongs to a package publishing or registry command family.
- [Secret-risk packages](https://www.automicvault.com/pkg/secret-risk-packages/) - Has protected-tool coverage, approval-gate, or non-low Geiger security signals.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Text processing packages](https://www.automicvault.com/pkg/text-processing-tools/) - Matched text, document, or structured-data processing metadata.
- [rsync](https://www.automicvault.com/pkg/brew/rsync/) - Runtime dependency declared by Homebrew.
- [ocaml](https://www.automicvault.com/pkg/brew/ocaml/) - Build dependency declared by Homebrew.
- [fpm](https://www.automicvault.com/pkg/brew/fpm/) - Shares av.db curated category or tags: build-tools, cli, developer-tools, package-manager, package-managers.
- [yarn](https://www.automicvault.com/pkg/brew/yarn/) - Shares av.db curated category or tags: cli, developer-tools, package-manager, package-managers.
- [clib](https://www.automicvault.com/pkg/brew/clib/) - Shares av.db curated category or tags: cli, dependency-management, developer-tools, package-manager.
- [ivy](https://www.automicvault.com/pkg/brew/ivy/) - Shares av.db curated category or tags: build-tools, cli, dependency-management, developer-tools.
- [jsonnet-bundler](https://www.automicvault.com/pkg/brew/jsonnet-bundler/) - Shares av.db curated category or tags: cli, dependency-management, developer-tools, package-manager.
- [luarocks](https://www.automicvault.com/pkg/brew/luarocks/) - Shares av.db curated category or tags: cli, dependency-management, developer-tools, package-manager.
- [pdm](https://www.automicvault.com/pkg/brew/pdm/) - Shares av.db curated category or tags: cli, dependency-management, developer-tools, package-manager.
- [poetry](https://www.automicvault.com/pkg/brew/poetry/) - Shares av.db curated category or tags: cli, dependency-management, developer-tools, package-manager.

## Combined YAML source

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


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated configuration and credential file locations
- 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
