package dkml-component-offline-opam

  1. Overview
  2. Docs
Offline install of Opam


Dune Dependency






Offline install that places opam in the installation directory.

Depending on the end-user's integer size, as reported by Sys.int_size, either 32-bit or 64-bit opam will be installed.

On macOS the end-user target ABI can be either darwin_arm64 or darwin_x86_64 when you have both dkml-base-compiler and conf-dkml-cross-toolchain installed in your switch, regardless whether your host's ABI is darwin_arm64 or darwin_x86.64. Otherwise on macOS the target ABI must match the host ABI.

The package version, and what [opam --version] returns, are closely associated with the Opam version from the Opam source code. The only modifications are to ensure that the package version can be ordered using semver. In particular:

  • 2.2.0~alpha~dev -> 2.2.0~alpha0~20221231
  • 2.2.0~alpha~1 -> 2.2.0~alpha1~20230601
  • 2.2.0 -> 2.2.0

The dates (YYYYMMDD) are the Git commit dates in the Opam source code, and simply replacing the tildes (~) with dashes (-) is sufficient to be a semver version.

Published: 14 Nov 2022


staging-opam32, staging-opam64 and offline-opam

The staging-opam32 and staging-opam64 components make available the Opam binaries (opam, opam-installer and on Windows opam-putenv) in the staging-files directory.

The offline-opam component will install the Opam binaries from staging-opam32 on 32-bit machines into the end-user's installation prefix, and from staging-opam64 on 64-bit machines.

These are components that can be used with dkml-install-api to generate installers.

dkml-component-staging-opam32 and dkml-component-staging-opam64

These components vary by whether distribute 32-bit or 64-bit executables. Sometimes we only distribute 64-bit for a host operating system (ex. macOS).


On Windows the binaries will end with .exe.

For a given ABI (ex. darwin_arm64) only one of opam32 or opam64's bin/opam will be present.

If you need to copy these from staging to the end-user's installation prefix, you should copy the entire %{staging-opam32:share-abi}%/bin and %{staging-opam64:share-abi}%/bin directories (one will be empty) as they may contain DLLs and shared libraries necessary for their operation.


Man pages. The man pages will only be available if the corresponding executable is available in the 32-bit or 64-bit form. If both 32-bit and 64-bit are available, the man pages will be duplicated.


FIRST, add a dependency to your .opam file:

depends: [
  "dkml-component-staging-opam"   {>= "2.1.0"}
  # ...

SECOND, add the package to your currently selected Opam switch:

opam install dkml-component-staging-opam
# Alternatively, if on Windows and you have Diskuv OCaml, then:
#   with-dkml opam install dkml-component-staging-opam

Be prepared to wait several minutes while one or more Opam is being compiled for your machine.


Asset tests
Syntax check

Dependencies (6)

  1. diskuvbox >= "0.1.0"
  2. dkml-install >= "0.2.0" & < "0.4.0"
  3. dkml-component-staging-ocamlrun >= "4.12.1~"
  4. dkml-component-staging-opam64 = version
  5. dkml-component-staging-opam32 = version
  6. dune >= "2.9"

Dev Dependencies (1)

  1. odoc with-doc

Used by