opam is a source-based package manager. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow.
> opam --git-version
92d02d4eaa3deb09f04c5ce3325fa4ef945e2009
> opam info ctypes
package: ctypes
version: pinned
pinned: true
upstream-url: https://github.com/ocamllabs/ocaml-ctypes.git
upstream-kind: git
depends: ocamlfind & ounit & (oasis >= 0.3.0 | oasis-mirage >= 0.3.0)
available-versions: 0.1, 0.1.1
description: Combinators for binding to C libraries without writing any C.
> opam upgrade
Already up-to-date.
> opam install ctypes
The following actions will be performed:
- install ounit.1.1.2 [required by ctypes]
- install type_conv.109.28.00 [required by ctypes]
- install fileutils.0.4.4 [required by ctypes]
- install ocaml-data-notation.0.0.10 [required by ctypes]
- install ocamlmod.0.0.4 [required by ctypes]
- install oasis-mirage.0.3.0a [required by ctypes]
- install ctypes.pinned
7 to install | 0 to reinstall | 0 to upgrade | 0 to downgrade | 0 to remove
Do you want to continue ? [Y/n]
Here are the details:
> opam install ctypes --debug
00:00.001 021415 21415 locking /Users/dbuenzli/.opam/lock
00:00.001 021415 FILE(config) read /Users/dbuenzli/.opam/config
00:00.002 021415 21415 unlocking /Users/dbuenzli/.opam/lock
00:00.002 021415 SYSTEM rm /Users/dbuenzli/.opam/lock
00:00.002 021415 STATE LOAD-STATE(switch-lock)
00:00.002 021415 FILE(config) read /Users/dbuenzli/.opam/config
00:00.009 021415 FILE(aliases) read /Users/dbuenzli/.opam/aliases
00:00.015 021415 FILE(repo-config) read /Users/dbuenzli/.opam/repo/pkgopkg/config
00:00.015 021415 FILE(repo-config) read /Users/dbuenzli/.opam/repo/default/config
00:00.015 021415 FILE(repo-config) read /Users/dbuenzli/.opam/repo/erratique-u/config
00:00.016 021415 FILE(pinned) read /Users/dbuenzli/.opam/4.00.1/pinned
00:00.016 021415 FILE(installed) read /Users/dbuenzli/.opam/4.00.1/installed
00:00.016 021415 FILE(installed.roots) read /Users/dbuenzli/.opam/4.00.1/installed.roots
00:00.016 021415 FILE(reinstall) read /Users/dbuenzli/.opam/4.00.1/reinstall
00:00.019 021415 STATE ROOT : /Users/dbuenzli/.opam
00:00.019 021415 STATE SWITCH : 4.00.1
00:00.019 021415 STATE COMPILER : 4.00.1
00:00.019 021415 STATE COMPILERS : { 3.11.2, 3.12.1, 3.12.1+natdynlink-osx, 4.00.0, 4.00.0+debug-runtime, 4.00.0+fp, 4.00.1, 4.00.1+BER, 4.00.1+alloc-profiling, 4.00.1+annot, 4.00.1+french, 4.00.1+mirage-unix, 4.00.1+mirage-xen, 4.00.1+open-types, 4.00.1+raspberrypi, 4.00.1+short-types, 4.01.0beta1, 4.01.0beta1+no-camlp4, 4.01.0dev+extension-points, 4.01.0dev+fp, 4.01.0dev+trunk, 4.02.0dev+fp, 4.02.0dev+trunk }
00:00.019 021415 STATE REPOS : { default, erratique-u, pkgopkg }
00:00.019 021415 STATE PACKAGES : 1378 packages
00:00.019 021415 STATE INSTALLED : { base-bigarray.base, base-threads.base, base-unix.base, cmdliner.0.9.2, gg.unreleased, jsonm.0.9.1, ocamlfind.1.4.0, ocamlify.0.0.1, ocp-build.1.99.6-beta, ocp-indent.1.3.2, ocp-index.0.3.0, optcomp.1.4, pkgopkg.repo, react.0.9.4, typerex.1.99.6-beta, uuidm.0.9.5, uutf.0.9.3, vg.unreleased, webglue.unreleased, xmlm.1.1.1 }
00:00.019 021415 STATE ROOTS : { base-bigarray.base, base-threads.base, base-unix.base, cmdliner.0.9.2, gg.unreleased, jsonm.0.9.1, ocp-indent.1.3.2, ocp-index.0.3.0, pkgopkg.repo, uuidm.0.9.5, uutf.0.9.3, vg.unreleased, webglue.unreleased, xmlm.1.1.1 }
00:00.019 021415 STATE REINSTALL : {}
00:00.020 021415 21415 locking /Users/dbuenzli/.opam/4.00.1/lock
00:00.020 021415 CLIENT INSTALL { ctypes }
00:00.020 021415 STATE LOAD-STATE(install)
00:00.020 021415 FILE(config) read /Users/dbuenzli/.opam/config
00:00.024 021415 FILE(aliases) read /Users/dbuenzli/.opam/aliases
00:00.030 021415 FILE(repo-config) read /Users/dbuenzli/.opam/repo/pkgopkg/config
00:00.030 021415 FILE(repo-config) read /Users/dbuenzli/.opam/repo/default/config
00:00.030 021415 FILE(repo-config) read /Users/dbuenzli/.opam/repo/erratique-u/config
00:00.031 021415 FILE(pinned) read /Users/dbuenzli/.opam/4.00.1/pinned
00:00.031 021415 FILE(installed) read /Users/dbuenzli/.opam/4.00.1/installed
00:00.031 021415 FILE(installed.roots) read /Users/dbuenzli/.opam/4.00.1/installed.roots
00:00.031 021415 FILE(reinstall) read /Users/dbuenzli/.opam/4.00.1/reinstall
00:00.035 021415 STATE ROOT : /Users/dbuenzli/.opam
00:00.035 021415 STATE SWITCH : 4.00.1
00:00.035 021415 STATE COMPILER : 4.00.1
00:00.035 021415 STATE COMPILERS : { 3.11.2, 3.12.1, 3.12.1+natdynlink-osx, 4.00.0, 4.00.0+debug-runtime, 4.00.0+fp, 4.00.1, 4.00.1+BER, 4.00.1+alloc-profiling, 4.00.1+annot, 4.00.1+french, 4.00.1+mirage-unix, 4.00.1+mirage-xen, 4.00.1+open-types, 4.00.1+raspberrypi, 4.00.1+short-types, 4.01.0beta1, 4.01.0beta1+no-camlp4, 4.01.0dev+extension-points, 4.01.0dev+fp, 4.01.0dev+trunk, 4.02.0dev+fp, 4.02.0dev+trunk }
00:00.035 021415 STATE REPOS : { default, erratique-u, pkgopkg }
00:00.035 021415 STATE PACKAGES : 1378 packages
00:00.035 021415 STATE INSTALLED : { base-bigarray.base, base-threads.base, base-unix.base, cmdliner.0.9.2, gg.unreleased, jsonm.0.9.1, ocamlfind.1.4.0, ocamlify.0.0.1, ocp-build.1.99.6-beta, ocp-indent.1.3.2, ocp-index.0.3.0, optcomp.1.4, pkgopkg.repo, react.0.9.4, typerex.1.99.6-beta, uuidm.0.9.5, uutf.0.9.3, vg.unreleased, webglue.unreleased, xmlm.1.1.1 }
00:00.035 021415 STATE ROOTS : { base-bigarray.base, base-threads.base, base-unix.base, cmdliner.0.9.2, gg.unreleased, jsonm.0.9.1, ocp-indent.1.3.2, ocp-index.0.3.0, pkgopkg.repo, uuidm.0.9.5, uutf.0.9.3, vg.unreleased, webglue.unreleased, xmlm.1.1.1 }
00:00.035 021415 STATE REINSTALL : {}
00:00.035 021415 FILE(comp) read /Users/dbuenzli/.opam/compilers/4.00.1/4.00.1/4.00.1.comp
00:00.069 021415 FILE(opam) read /Users/dbuenzli/.opam/4.00.1/overlay/ctypes.pinned/opam
00:00.069 021415 FILE(opam) read /Users/dbuenzli/.opam/4.00.1/overlay/ctypes.pinned/opam
00:00.069 021415 SYSTEM [log-21415-5a61c5] which aspcud
00:00.088 021415 SOLVER resolve request=install:(base-bigarray & base-threads & base-unix & cmdliner & gg & jsonm & ocp-indent & ocp-index & pkgopkg & uuidm & uutf & vg & webglue & xmlm) remove:() upgrade:(ctypes)
00:00.423 021415 HEURISTIC implicit-installed: { ocamlfind.158(installed), ocamlify.4(installed) }
00:00.423 021415 HEURISTIC implicit-not-installed: ocamlmod, ocaml-data-notation, oasis, oasis-mirage, fileutils, ounit and type%5fconv
00:00.424 021415 HEURISTIC state_of_request
00:00.725 021415 HEURISTIC explore
00:00.725 021415 HEURISTIC brute-force
00:00.734 021415 HEURISTIC refine request:install:(xmlm & webglue & vg & uutf & uuidm & pkgopkg & ocp-index & ocp-indent & jsonm & gg & cmdliner & base-unix & base-threads & base-bigarray) remove:() upgrade:(ctypes) state:{ ctypes.13(installed) }
00:00.744 021415 HEURISTIC keep ocamlfind with the same version
00:00.754 021415 HEURISTIC keep ocamlify with the same version
00:00.785 021415 HEURISTIC adding ocamlmod to the request
00:00.785 021415 HEURISTIC refine request:install:(xmlm & webglue & vg & uutf & uuidm & pkgopkg & ocp-index & ocp-indent & jsonm & gg & cmdliner & base-unix & base-threads & base-bigarray) remove:() upgrade:(ctypes (= 13)) state:{ ocamlify.4(installed), ocamlfind.158(installed), ctypes.13(installed) }
00:00.785 021415 HEURISTIC state_of_request
00:01.037 021415 HEURISTIC explore
00:01.037 021415 HEURISTIC brute-force
00:01.060 021415 HEURISTIC adding ocaml-data-notation to the request
00:01.060 021415 HEURISTIC refine request:install:(xmlm & webglue & vg & uutf & uuidm & pkgopkg & ocp-index & ocp-indent & jsonm & gg & cmdliner & base-unix & base-threads & base-bigarray) remove:() upgrade:(ctypes (= 13)) state:{ ocamlify.4(installed), ocamlfind.158(installed), ctypes.13(installed), ocamlmod.7(installed) }
00:01.060 021415 HEURISTIC state_of_request
00:01.330 021415 HEURISTIC explore
00:01.330 021415 HEURISTIC brute-force
00:01.351 021415 HEURISTIC oasis is not necessary ({ ocamlify.4(installed), ocamlfind.158(installed), ocaml-data-notation.10(not-installed), ctypes.13(installed), ocamlmod.7(installed) })
00:01.363 021415 HEURISTIC adding oasis-mirage to the request
00:01.363 021415 HEURISTIC refine request:install:(xmlm & webglue & vg & uutf & uuidm & pkgopkg & ocp-index & ocp-indent & jsonm & gg & cmdliner & base-unix & base-threads & base-bigarray) remove:() upgrade:(ctypes (= 13)) state:{ ocamlify.4(installed), ocamlfind.158(installed), ocaml-data-notation.10(not-installed), ctypes.13(installed), ocamlmod.7(installed) }
00:01.363 021415 HEURISTIC state_of_request
00:01.617 021415 HEURISTIC explore
00:01.617 021415 HEURISTIC brute-force
00:01.658 021415 HEURISTIC adding fileutils to the request
00:01.658 021415 HEURISTIC refine request:install:(xmlm & webglue & vg & uutf & uuidm & pkgopkg & ocp-index & ocp-indent & jsonm & gg & cmdliner & base-unix & base-threads & base-bigarray) remove:() upgrade:(ctypes (= 13)) state:{ ocamlify.4(installed), ocamlfind.158(installed), ocaml-data-notation.10(installed), ctypes.13(installed), ocamlmod.7(installed), oasis-mirage.33(not-installed) }
00:01.658 021415 HEURISTIC state_of_request
00:01.925 021415 HEURISTIC explore
00:01.925 021415 HEURISTIC brute-force
00:01.946 021415 HEURISTIC adding ounit to the request
00:01.946 021415 HEURISTIC refine request:install:(xmlm & webglue & vg & uutf & uuidm & pkgopkg & ocp-index & ocp-indent & jsonm & gg & cmdliner & base-unix & base-threads & base-bigarray) remove:() upgrade:(ctypes (= 13)) state:{ ocamlify.4(installed), ocamlfind.158(installed), ocaml-data-notation.10(installed), ctypes.13(installed), ocamlmod.7(installed), fileutils.45(installed), oasis-mirage.33(installed) }
00:01.946 021415 HEURISTIC state_of_request
00:02.200 021415 HEURISTIC explore
00:02.200 021415 HEURISTIC brute-force
00:02.238 021415 HEURISTIC adding type%5fconv to the request
00:02.238 021415 HEURISTIC refine request:install:(xmlm & webglue & vg & uutf & uuidm & pkgopkg & ocp-index & ocp-indent & jsonm & gg & cmdliner & base-unix & base-threads & base-bigarray) remove:() upgrade:(ctypes (= 13)) state:{ ounit.136(installed), ocamlify.4(installed), ocamlfind.158(installed), ocaml-data-notation.10(installed), ctypes.13(installed), ocamlmod.7(installed), fileutils.45(installed), oasis-mirage.33(installed) }
00:02.238 021415 HEURISTIC state_of_request
00:02.476 021415 HEURISTIC explore
00:02.476 021415 HEURISTIC brute-force
00:02.517 021415 HEURISTIC keep ocp-indent with the same version
00:02.529 021415 HEURISTIC keep uuidm with the same version
00:02.541 021415 HEURISTIC keep typerex with the same version
00:02.551 021415 HEURISTIC keep cmdliner with the same version
00:02.563 021415 HEURISTIC keep webglue with the same version
00:02.574 021415 HEURISTIC keep base-threads with the same version
00:02.588 021415 HEURISTIC keep base-bigarray with the same version
00:02.602 021415 HEURISTIC keep react with the same version
00:02.613 021415 HEURISTIC keep pkgopkg with the same version
00:02.625 021415 HEURISTIC keep xmlm with the same version
00:02.636 021415 HEURISTIC keep gg with the same version
00:02.666 021415 HEURISTIC keep base-unix with the same version
00:02.678 021415 HEURISTIC keep jsonm with the same version
00:02.689 021415 HEURISTIC keep ocp-index with the same version
00:02.700 021415 HEURISTIC keep optcomp with the same version
00:02.711 021415 HEURISTIC keep vg with the same version
00:02.721 021415 HEURISTIC keep uutf with the same version
00:02.734 021415 HEURISTIC keep ocp-build with the same version
00:02.734 021415 HEURISTIC STATE { ocp-build.196(installed), uutf.89(installed), vg.337(installed), optcomp.157(installed), ocp-index.32(installed), jsonm.87(installed), base-unix.334(installed), gg.337(installed), xmlm.135(installed), pkgopkg.336(installed), react.90(installed), base-bigarray.334(installed), base-threads.334(installed), webglue.337(installed), cmdliner.88(installed), typerex.196(installed), uuidm.92(installed), ocp-indent.151(installed), ounit.136(installed), ocamlify.4(installed), type%5fconv.307(not-installed), ocamlfind.158(installed), ocaml-data-notation.10(installed), ctypes.13(installed), ocamlmod.7(installed), fileutils.45(installed), oasis-mirage.33(installed) }
00:02.735 021415 HEURISTIC actions_of_state { ocp-build.196(installed), uutf.89(installed), vg.337(installed), optcomp.157(installed), ocp-index.32(installed), jsonm.87(installed), base-unix.334(installed), gg.337(installed), xmlm.135(installed), pkgopkg.336(installed), react.90(installed), base-bigarray.334(installed), base-threads.334(installed), webglue.337(installed), cmdliner.88(installed), typerex.196(installed), uuidm.92(installed), ocp-indent.151(installed), ounit.136(installed), ocamlify.4(installed), type%5fconv.307(not-installed), ocamlfind.158(installed), ocaml-data-notation.10(installed), ctypes.13(installed), ocamlmod.7(installed), fileutils.45(installed), oasis-mirage.33(installed) }
00:02.793 021415 CUDF graph_of_actions root_actions={ - install ocaml-data-notation.10, - install ounit.136, - install type%5fconv.307, - install ctypes.13, - install ocamlmod.7, - install fileutils.45, - install oasis-mirage.33 }
The following actions will be performed:
- install ounit.1.1.2 [required by ctypes]
- install type_conv.109.28.00 [required by ctypes]
- install fileutils.0.4.4 [required by ctypes]
- install ocaml-data-notation.0.0.10 [required by ctypes]
- install ocamlmod.0.0.4 [required by ctypes]
- install oasis-mirage.0.3.0a [required by ctypes]
- install ctypes.pinned
00:02.794 021415 FILE(opam) read /Users/dbuenzli/.opam/4.00.1/overlay/ctypes.pinned/opam
7 to install | 0 to reinstall | 0 to upgrade | 0 to downgrade | 0 to remove
Do you want to continue ? [Y/n] n
00:10.648 021415 21415 unlocking /Users/dbuenzli/.opam/4.00.1/lock
00:10.648 021415 SYSTEM rm /Users/dbuenzli/.opam/4.00.1/lock
Here are the details: