OPAM-VAR(1)

๐Ÿ’… OPAM-VAR(1) โ€” Opam Manual, but make it bestie ๐ŸŽ€

ok so this is the page for opam-var, bestie, and honestly she's lowkey one of the most useful lil commands in the whole opam friend group. she reads variables, she writes variables, and she absolutely does NOT do expansion. periodt.


โœจ NAME โœจ

opam-var โ€” display and update the value associated with a given variable ๐Ÿ’–


๐ŸŒˆ SYNOPSIS ๐ŸŒˆ

opam var [--global] [--package=PACKAGE] [OPTION]โ€ฆ [VAR[=[VALUE]]]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

ok so here's the vibe check ๐ŸŒธ

  • no argument at all โ†’ she lists all the opam variables that are currently defined. a lil inventory, a lil tour of your setup โœจ
  • you hand her a VAR โ†’ she prints the value associated with that VAR ๐Ÿ’–
  • anything else โ†’ she sets or updates VAR's value ๐ŸŽ€

If no scope is given, she acts on switch variables by default. main character energy honestly ๐Ÿ’…

โš ๏ธ okay this one matters: this command does not perform any variable expansion. like, none. zero. she shows you exactly what's there, no glow-up, no substitutions, no makeover montage ๐Ÿ™ˆ

๐ŸŒธ ARGUMENTS ๐ŸŒธ

  • VAR[=[VALUE]] โ€” the whole menu, right here:
    • if you give her only VAR, she displays its associated value ๐Ÿ‘€
    • if VALUE is absent, then VAR's value gets removed. bye bestie ๐Ÿ’€
    • otherwise, its value is overwritten โœจ

๐Ÿ’œ OPTIONS ๐Ÿ’œ

  • --global โ€” act on global configuration. the whole entire world, not just your current switch ๐ŸŒ๐Ÿ‘‘
  • --package=PACKAGE โ€” list all variables defined for the given package ๐Ÿ“ฆ. all of them. no crumbs.

๐Ÿ‘‘ COMMON OPTIONS ๐Ÿ‘‘

these are common to all commands โ€” so they're basically the group chat that everyone's in. you already know ๐Ÿ’…

  • --best-effort โ€” don't fail if all the requested packages can't be installed: try to install as many as possible ๐Ÿซถ. ngl, not every external solver may support this (recent versions of aspcud or mccs should, so if you're on those you're chilling). this is equivalent to setting the $OPAMBESTEFFORT environment variable.
  • --cli=MAJOR.MINOR (absent=2.6) โ€” use the command-line interface syntax and semantics of MAJOR.MINOR ๐Ÿ•ฐ๏ธ. this is intended for any persistent use of opam (scripts, blog posts, etc.), and any version of opam in the same MAJOR series will behave as for the specified MINOR release. heads up though: the flag wasn't available in opam 2.0, so to select the 2.0 CLI, set the OPAMCLI environment variable to 2.0 instead of using this parameter ๐Ÿ™ˆ
  • --color=WHEN โ€” colorize the output ๐ŸŽจ. WHEN must be one of always, never or auto.
  • --confirm-level=LEVEL โ€” confirmation level ๐Ÿซก. LEVEL must be one of ask, no, yes or unsafe-yes. can be specified more than once. if --yes or --no are also given, the value of the last --confirm-level is taken into account. this is equivalent to setting $OPAMCONFIRMLEVEL` .
  • --criteria=CRITERIA โ€” specify your user preferences for dependency solving for this run ๐Ÿ‘‘. overrides $OPAMCRITERIA, $OPAMFIXUPCRITERIA and $OPAMUPGRADECRITERIA. for details on the supported language, and the external solvers available, see http://opam.ocaml.org/doc/External_solvers.html. a general guide to using solver preferences can be found at http://www.dicosmo.org/Articles/usercriteria.pdf ๐Ÿ“š
  • --cudf=FILENAME โ€” debug option ๐Ÿ›: save the CUDF requests sent to the solver to FILENAME-<n>.cudf where <n> is the n-th call to the solver during the opam run.
  • --debug โ€” print debug messages to stderr ๐Ÿ”. this is equivalent to setting $OPAMDEBUG to "true".
  • --debug-level=LEVEL โ€” like --debug, but lets you specify the debug level (--debug sets it to 1) ๐Ÿ›โœจ. equivalent to setting $OPAMDEBUG to a positive integer.
  • --git-version โ€” print the git version of opam, if it's set (i.e. you're using a development version ๐Ÿ‘ฉโ€๐Ÿ’ป), and exit.
  • --help[=FMT] (default=auto) โ€” show this help in format FMT ๐Ÿ™‹. the value FMT must be one of auto, pager, groff or plain. with auto, the format is pager or plain whenever the TERM env var is dumb or undefined.
  • --ignore-pin-depends โ€” ignore extra pins required by packages that get pinned, either manually through opam pin or through opam install DIR ๐Ÿ“Œ. this is equivalent to setting IGNOREPINDEPENDS=true.
  • --json=FILENAME โ€” save the results of the opam run in a computer-readable file ๐Ÿค–. if the filename contains the character %, it will be replaced by an index that doesn't overwrite an existing file. similar to setting the $OPAMJSON variable.
  • --no โ€” answer no to all opam yes/no questions without prompting ๐Ÿ™…. see also --confirm-level. this is equivalent to setting $OPAMNO to "true".
  • --no-aspcud โ€” removed in 2.1 ๐Ÿ’€ (she's gone bestie, no notes)
  • --no-auto-upgrade โ€” when configuring or updating a repository that is written for an earlier opam version (1.2), opam internally converts it to the current format. this disables that behaviour ๐Ÿ›‘. note that repositories should define their format version in a 'repo' file at their root, or they will be assumed to be in the older format. it is, in any case, preferable to upgrade the repositories manually using opam admin upgrade [--mirror URL] when possible ๐Ÿซถ
  • --no-self-upgrade โ€” opam will replace itself with a newer binary found at OPAMROOT/opam if present ๐Ÿ˜ณ. this disables that behaviour.
  • -q, --quiet โ€” disables --verbose ๐Ÿคซ
  • --root=ROOT โ€” use ROOT as the current root path ๐Ÿ . this is equivalent to setting $OPAMROOT to ROOT.
  • --safe, --readonly โ€” make sure nothing will be automatically updated or rewritten ๐Ÿ”’. useful for calling from completion scripts, for example. will fail whenever such an operation is needed; also avoids waiting for locks, skips interactive questions and overrides the $OPAMDEBUG variable. this is equivalent to set environment variable $OPAMSAFE.
  • --solver=CMD โ€” specify the CUDF solver to use for resolving package installation problems ๐Ÿงฎ. this is either a predefined solver โ€” this version of opam supports builtin-mccs+lp(), builtin-mccs+glpk, builtin-dummy-z3-solver, builtin-0install, aspcud, mccs, aspcud-old, packup โ€” or a custom command that should contain the variables %{input}%, %{output}%, %{criteria}%, and optionally %{timeout}%. this is equivalent to setting $OPAMEXTERNALSOLVER.
  • --strict โ€” fail whenever an error is found in a package definition or a configuration file ๐Ÿšจ. the default is to continue silently if possible ๐Ÿค
  • --switch=SWITCH โ€” use SWITCH as the current compiler switch ๐Ÿ”€. this is equivalent to setting $OPAMSWITCH to SWITCH.
  • --use-internal-solver โ€” disable any external solver, and use the built-in one ๐Ÿก (this requires that opam has been compiled with a built-in solver). this is equivalent to setting $OPAMNOASPCUD or $OPAMUSEINTERNALSOLVER.
  • -v, --verbose โ€” be more verbose ๐Ÿ—ฃ๏ธ. one -v shows all package commands, repeat to also display commands called internally (e.g. tar, curl, patch etc.). repeating n times is equivalent to setting $OPAMVERBOSE to "n".
  • --version โ€” show version information ๐Ÿ”–
  • -w, --working-dir โ€” whenever updating packages that are bound to a local, version-controlled directory, update to the current working state of their source instead of the last committed state, or the ref they are pointing to ๐Ÿ‘ฉโ€๐Ÿ’ป. as the source directory is copied as it is, if it isn't clean it may result on a opam build failure ๐Ÿ˜ญ. this only affects packages explicitly listed on the command-line. it can also be set with $OPAMWORKINGDIR.
  • -y, --yes โ€” answer yes to all opam yes/no questions without prompting โœ…. see also --confirm-level. this is equivalent to setting $OPAMYES to "true".

ok that's the crew so far bestie, but there's more where that came fromโ€ฆ keep scrolling, we're not done yet ๐Ÿ’–

๐Ÿซถ ENVIRONMENT ๐Ÿซถ

okay bestie, so opam is obsessed with environment variables and honestly? same. here's the whole list, no cap ๐Ÿ’…

quick vibe check on booleans first: these lil guys love a yes/no moment. set them to "0", "no", "false" or the empty string to disable ๐Ÿ’€, and to "1", "yes" or "true" to enable โœจ. that's it, that's the whole system.


  • OPAMALLPARENS โ€” wraps all the filters in parentheses ๐ŸŽ€
  • OPAMASSUMEDEPEXTS โ€” go look at the --assume-depexts option, she spills the tea there ๐Ÿ’–
  • OPAMAUTOANSWER โ€” internal use only, bestie. nothing to see here ๐Ÿ™ˆ
  • OPAMAUTOREMOVE โ€” see the remove option --auto-remove ๐Ÿงš
  • OPAMBESTEFFORT โ€” see option --best-effort ๐Ÿ’ช
  • OPAMBESTEFFORTPREFIXCRITERIA โ€” sets the string that must be prepended to the criteria whenever the --best-effort option is on, and it's expected to maximise the opam-query property in the solution ๐Ÿ“ˆ
  • OPAMBUILDDOC โ€” Removed in 2.1 ๐Ÿ’€ she's gone girl
  • OPAMBUILDTEST โ€” Removed in 2.1 ๐Ÿ’€ also gone
  • OPAMCLI โ€” see option --cli ๐Ÿ–ฅ๏ธ
  • OPAMCOLOR โ€” when you set it to always or never, it sets a default value for the --color option ๐ŸŒˆ
  • OPAMCONFIRMLEVEL โ€” see option --confirm-level. and heads up: OPAMCONFIRMLEVEL has priority over OPAMYES and OPAMNO ๐Ÿ‘‘ she's the main character here
  • OPAMCRITERIA โ€” specifies your user preferences for dependency solving โœจ the default value depends on the solver version, so run config report to know the current setting. see also option --criteria
  • OPAMCUDFFILE โ€” save the cudf graph to file-actions-explicit.dot ๐Ÿ“
  • OPAMCUDFTRIM โ€” controls the filtering of unrelated packages during CUDF preprocessing โœ‚๏ธ
  • OPAMCURL โ€” use this to select a given curl program ๐ŸŒ€ see OPAMFETCH for more options
  • OPAMDEBUG โ€” see options --debug and --debug-level ๐Ÿ›
  • OPAMDEBUGSECTIONS โ€” if set, it limits debug messages to the space-separated list of sections ๐Ÿ“‹ sections can optionally have a specific debug level (for example, CLIENT:2 or CLIENT CUDF:2), but otherwise use --debug-level
  • OPAMDIGDEPTH โ€” defines how aggressive the lookup for conflicts during CUDF preprocessing is โ›๏ธ
  • OPAMDOWNLOADJOBS โ€” sets the maximum number of simultaneous downloads ๐Ÿ“ฅ
  • OPAMDROPWORKINGDIR โ€” overrides packages previously updated with --working-dir on update ๐Ÿ”„ without this variable set, opam would keep them unchanged unless explicitly named on the command-line
  • OPAMDRYRUN โ€” see option --dry-run ๐Ÿƒ
  • OPAMEDITOR โ€” sets the editor to use for opam file editing, and it overrides $EDITOR and $VISUAL ๐Ÿ“
  • OPAMERRLOGLEN โ€” sets the number of log lines printed when a sub-process fails ๐Ÿ˜ญ set it to 0 to print all of them
  • OPAMEXTERNALSOLVER โ€” see option --solver ๐Ÿง 
  • OPAMFAKE โ€” see option --fake ๐ŸŽญ
  • OPAMFETCH โ€” specifies how to download files: either wget, curl or a custom command where variables %{url}%, %{out}%, %{retry}%, %{compress}% and %{checksum}% will be replaced ๐Ÿ” overrides the download-command value from the main config file
  • OPAMFIXUPCRITERIA โ€” same as OPAMUPGRADECRITERIA, but specific to fixup and reinstall ๐Ÿ› ๏ธ
  • OPAMIGNOREAVAILABLE โ€” see the install option --ignore-available-on ๐Ÿ‘€
  • OPAMIGNORECONSTRAINTS โ€” see the install option --ignore-constraints-on ๐Ÿšซ
  • OPAMIGNOREPINDEPENDS โ€” see option --ignore-pin-depends ๐Ÿ“Œ
  • OPAMINPLACEBUILD โ€” see option --inplace-build ๐Ÿ—๏ธ
  • OPAMJOBS โ€” sets the maximum number of parallel workers to run โšก
  • OPAMJSON โ€” log json output to the given file (use character % to index the files) ๐Ÿ—‚๏ธ
  • OPAMKEEPBUILDDIR โ€” see the install option --keep-build-dir ๐Ÿ“ฆ
  • OPAMKEEPLOGS โ€” tells opam to not remove some temporary command logs and some backups ๐Ÿ—‘๏ธ this skips some finalisers and may also help to get more reliable backtraces
  • OPAMLOCKED โ€” a combination of the --locked and --lock-suffix options ๐Ÿ”’
  • OPAMLOGS โ€” logdir sets the log directory, default is a temporary directory in /tmp ๐ŸŒก๏ธ
  • OPAMMAKECMD โ€” set the system make command to use ๐Ÿ”จ
  • OPAMMERGEOUT โ€” merge process outputs, stderr on stdout ๐Ÿซฑ
  • OPAMNO โ€” answer no to any question asked ๐Ÿ™… see options --no and --confirm-level. OPAMNO is ignored if either OPAMCONFIRMLEVEL or OPAMYES is set
  • OPAMNOAGGREGATE โ€” with opam admin check, don't aggregate packages ๐Ÿงบ
  • OPAMNOASPCUD โ€” Deprecated โš ๏ธ
  • OPAMNOAUTOUPGRADE โ€” disables automatic internal upgrade of repositories in an earlier format to the current one, on update or init ๐Ÿ›‘
  • OPAMNOCHECKSUMS โ€” enables option --no-checksums when available ๐Ÿ”
  • OPAMNODEPEXTS โ€” disables system dependencies handling, see option --no-depexts ๐Ÿšซ
  • OPAMNOENVNOTICE โ€” Internal ๐Ÿคซ
  • OPAMNOSELFUPGRADE โ€” see option --no-self-upgrade ๐Ÿ™…
  • OPAMPINKINDAUTO โ€” sets whether version control systems should be detected when pinning to a local path ๐Ÿฉท enabled by default since 1.3.0
  • OPAMPRECISETRACKING โ€” fine grain tracking of directories ๐Ÿ”ฌ
  • OPAMPREPRO โ€” set this to false to disable CUDF preprocessing ๐Ÿคž less efficient, but might help debugging solver issue
  • OPAMREPOSITORYTARRING โ€” internally store all non-vcs repositories as tar.gz files (by default, http repositories are stored as archive) ๐Ÿ—œ๏ธ this can be much faster on filesystems that don't cope well with scanning large trees. all operation are done in-memory, no I/O for scanning the repository
  • OPAMREQUIRECHECKSUMS โ€” enables option --require-checksums when available (e.g. for opam install) โœ…
  • OPAMRETRIES โ€” sets the number of tries before failing downloads ๐Ÿ”
  • OPAMREUSEBUILDDIR โ€” see option --reuse-build-dir โ™ป๏ธ
  • OPAMROOT โ€” see option --root ๐ŸŒณ this is automatically set by opam env --root=DIR --set-root
  • OPAMROOTISOK โ€” don't complain when running as root ๐Ÿคซ
  • OPAMSAFE โ€” see option --safe ๐Ÿฆบ
  • OPAMSHOW โ€” see option --show ๐Ÿ‘๏ธ
  • OPAMSKIPUPDATE โ€” see option --skip-updates โญ๏ธ
  • OPAMSKIPVERSIONCHECKS โ€” bypasses some version checks ๐Ÿšจ Unsafe, for compatibility testing only
  • OPAMSOLVERALLOWSUBOPTIMAL โ€” (default true) allows some solvers to still return a solution when they reach timeout โฐ while the solution remains assured to be consistent, there is no guarantee in this case that it fits the expected optimisation criteria. if true, opam will continue with a warning โš ๏ธ if false a timeout is an error. currently only the builtin-z3 backend handles this degraded case
  • OPAMSOLVERTIMEOUT โ€” change the time allowance of the solver โŒ› default is 60.0, set to 0 for unlimited. note that all solvers may not support this option
  • OPAMSOLVERTOLERANCE โ€” changes the tolerance towards the solver choosing an unoptimized solution (i.e. might pull outdated packages) ๐Ÿ“‰ typical values range from 0.0 (best solution known to the solver) to 1.0 (unoptimized solution). default is 0.0. this option is useful in case the solver can't find a solution in a reasonable time (see $OPAMSOLVERTIMEOUT). note that all solvers may not support this option
  • OPAMSTATS โ€” Removed in 2.4 ๐Ÿ’€
  • OPAMSTATUSLINE โ€” display a dynamic status line showing what's currently going on on the terminal ๐Ÿ“บ (one of always, never or auto)
  • OPAMSTRICT โ€” fail on inconsistencies (file reading, switch import, etc.) ๐Ÿ˜ค
  • OPAMSWITCH โ€” see option --switch ๐Ÿ”€ automatically set by opam env --switch=SWITCH --set-switch
  • OPAMUNLOCKBASE โ€” see the install option --unlock-base ๐Ÿ”“
  • OPAMUPGRADECRITERIA โ€” specifies user preferences for dependency solving when performing an upgrade โฌ†๏ธ overrides OPAMCRITERIA in upgrades if both are set. see also option --criteria
  • OPAMUSEINTERNALSOLVER โ€” see option --use-internal-solver ๐Ÿงฉ
  • OPAMUSEOPENSSL โ€” Removed in 2.2 ๐Ÿ’€
  • OPAMUTF8 โ€” use UTF8 characters in output ๐Ÿฆ‹ (one of always, never or auto). by default auto, which is determined from the locale)
  • OPAMUTF8MSGS โ€” use extended UTF8 characters (camels) in opam messages ๐Ÿช implies OPAMUTF8. this is set by default on macOS only ๐ŸŽ
  • OPAMVALIDATIONHOOK โ€” if set, uses the %{hook}% command to validate an opam repository update ๐Ÿช
  • OPAMVERBOSE โ€” see option --verbose ๐Ÿ—ฃ๏ธ
  • OPAMVERBOSEON โ€” see option --verbose-on ๐Ÿ“ข
  • OPAMVERSIONLAGPOWER โ€” do not use ๐Ÿ™ˆ
  • OPAMWITHDEVSETUP โ€” see the install option --with-dev-setup ๐Ÿง‘โ€๐Ÿ’ป
  • OPAMWITHDOC โ€” see the install option --with-doc ๐Ÿ“š
  • OPAMWITHTEST โ€” see the install option --with-test ๐Ÿงช
  • OPAMWORKINGDIR โ€” see option --working-dir ๐Ÿ“‚
  • OPAMYES โ€” see options --yes and --confirm-level ๐Ÿซก OPAMYES has priority over OPAMNO and is ignored if OPAMCONFIRMLEVEL is set
  • OPAMVAR_var โ€” overrides the contents of the variable var when substituting %{var}% strings in opam files ๐Ÿ”ค
  • OPAMVAR_package_var โ€” overrides the contents of the variable package:var when substituting %{package:var}% strings in opam files ๐Ÿ”ค

๐ŸŒˆ CLI VERSION ๐ŸŒˆ

okay so this part is important and i need you to actually listen bestie ๐Ÿซถ

all scripts and programmatic invocations of opam should use --cli ๐Ÿ–ฅ๏ธ in order to ensure that they work seamlessly with future versions of the opam client. additionally, blog posts or other documentation can benefit, as it prevents information from becoming stale ๐Ÿ“ฐ like, future-proofing your whole brand.

although opam only supports roots (~/.opam/) for the current version, it does provide backwards compatibility for its command-line interface ๐Ÿซก so nobody gets left behind.

since CLI version support was only added in opam 2.1, use OPAMCLI to select 2.0 support (as opam 2.0 will just ignore it) โช and --cli=2.1 for 2.1 (or later) versions, since an environment variable controlling the parsing of syntax is brittle ๐Ÿ’€ to this end, opam displays a warning if OPAMCLI specifies a valid version other than 2.0, and also if --cli=2.0 is specified โš ๏ธ

the command-line version is selected by using the --cli option or the OPAMCLI environment variable ๐ŸŽ›๏ธ --cli may be specified more than once, where the last instance takes precedence ๐Ÿ‘‘ OPAMCLI is only inspected if --cli is not given. periodt ๐Ÿ’…

๐Ÿ’€ EXIT STATUS ๐Ÿ’€

ok so bestie, real talk: opam tells you what happened through its exit code, and you need to know this because scripts check it. One gloriously chaotic exception first though:

EXCEPTION ALERT โ€” the exec command does NOT play by the rules below. It returns 127 if the command wasn't found or couldn't be executed, and otherwise it just hands you the command's own exit value. That's it. That's the whole deal. ๐Ÿ’…

Now, the main character list:

  • 0 โ€” Success! โœจ Or true for boolean queries. We love a happy ending.
  • 1 โ€” False. It's returned when a boolean return value is expected, like when you run with --check, or for queries like opam lint. So like, "no ๐Ÿ’–" not "oops ๐Ÿ˜ญ".
  • 2 โ€” Bad command-line arguments, or arguments pointing at an invalid context (for example, a file that doesn't follow the expected format). Basically you typed something cursed.
  • 5 โ€” Not found. You asked for something (a package, a version, a repository, etc.) and it simply... wasn't there. ๐Ÿซฅ
  • 10 โ€” Aborted. The operation needed confirmation and you didn't give it. No consent, no operation, periodt.
  • 15 โ€” Could not acquire the locks required for the operation. Somebody else is holding the door. ๐Ÿšช
  • 20 โ€” There is no solution to the user request. Classic cause: asking to install two incompatible packages, bestie. The math isn't mathing. ๐Ÿงฎ๐Ÿ’€
  • 30 โ€” Error in package definition, or other metadata files. Heads up: using --strict raises this error more often. So if you turn on strict mode and see 30, that's on purpose, not a glitch. ๐Ÿ™ˆ
  • 31 โ€” Package script error. Some package operations were unsuccessful. Could be an error in the packages, or an incompatibility with your system. Lowkey this one can be a partial error โ€” like, some of it worked. ๐Ÿ˜ญ
  • 40 โ€” Sync error. Could not fetch some remotes from the network. Also potentially a partial error, so check what actually made it through. ๐Ÿ“ก
  • 50 โ€” Configuration error. Opam or system configuration doesn't allow the operation, and it needs fixing. Girl, you gotta fix the config. ๐Ÿ› ๏ธ
  • 60 โ€” Solver failure. The solver failed to return a sound answer. Either a broken external solver, or an error in the solver configuration. The solver is not ok and honestly neither are we. ๐Ÿคฏ
  • 99 โ€” Internal error. Something went wrong, and it's likely due to a bug in opam itself. Not your fault for once, bestie. ๐Ÿ›
  • 130 โ€” User interrupt. SIGINT was received, generally because the user pressed Ctrl+C. You did this. We saw you. ๐Ÿ‘€

And then there's this extra lil set of codes, coming in hot:

  • 0 โ€” on success.
  • 123 โ€” on indiscriminate errors reported on standard error.
  • 124 โ€” on command line parsing errors.
  • 125 โ€” on unexpected internal errors (bugs).

๐Ÿ“š FURTHER DOCUMENTATION ๐Ÿ“š

Need more? The docs live at https://opam.ocaml.org/doc. Go read them, they're giving study session energy. ๐Ÿ“–โœจ


๐Ÿ‘‘ AUTHORS ๐Ÿ‘‘

The icons who built this. Show respect, bestie ๐Ÿ’–:

  • David Allsopp <david@tarides.com>
  • Vincent Bernardoff <vb@luminar.eu.org>
  • Raja Boujbel <raja.boujbel@ocamlpro.com>
  • Kate Deplaix <kit-ty-kate@exn.st>
  • Roberto Di Cosmo <roberto@dicosmo.org>
  • Thomas Gazagnaire <thomas@gazagnaire.org>
  • Louis Gesbert <louis.gesbert@ocamlpro.com>
  • Fabrice Le Fessant <Fabrice.Le_fessant@inria.fr>
  • Anil Madhavapeddy <anil@recoil.org>
  • Guillem Rieu <guillem.rieu@ocamlpro.com>
  • Ralf Treinen <ralf.treinen@pps.jussieu.fr>
  • Frederic Tuong <tuong@users.gforge.inria.fr>

๐ŸŒธ SEE ALSO ๐ŸŒธ


๐Ÿ› BUGS ๐Ÿ›

Found a bug? Not you being the main character and finding a whole bug ๐Ÿ˜ญ check the bug reports at https://github.com/ocaml/opam/issues and file it there. ๐Ÿซถ


<div align="center">

okay bestie that's the whole page, you ate it, no crumbs ๐ŸŽ€

This was Opam 2.6.1, the page is OPAM-VAR(1), and it's dated like every good manpage is. Now go run something iconic. โœจ๐Ÿฆ‹๐Ÿ’…

</div>

๐Ÿ“ฆ where this page comes from