OPAM-UNINSTALL(1)

πŸ’… OPAM-UNINSTALL πŸ’…

okay bestie, welcome to the opam manual page for opam-uninstall β€” she's part of the Opam Manual squad, and ngl she's the chillest one here because she's literally just an alias. but don't let that fool you, there's a ton of options under the hood and we're going through every single one. no skipping. periodt.


✨ NAME ✨

opam-uninstall β€” an alias for remove. that's it. that's the whole vibe. πŸ’–


🌸 SYNOPSIS 🌸

opam uninstall [OPTION]… [PACKAGES]…

πŸ¦‹ DESCRIPTION πŸ¦‹

so opam uninstall is literally just a cute lil alias for opam remove. same girl, different name, main character energy either way. πŸ‘‘

if you want the full deets, run opam remove --help and she'll spill everything.


πŸŽ€ PACKAGE BUILD OPTIONS πŸŽ€

  • --assume-depexts β€” skip the whole installation step for any system packages you're missing, and just try to compile the opam packages anyway like it's fine. if it actually works out, opam won't nag you about those system packages ever again. heads up tho: this only does anything if external dependency handling is turned on. πŸ’«
  • -b, --keep-build-dir β€” keeps the build directories around after compiling your packages. think of it as not throwing away the receipts. this is the same as setting $OPAMKEEPBUILDDIR to "true".
  • --build-doc β€” nope, removed in 2.1. use --with-doc instead bestie.
  • --build-test β€” also gone, removed in 2.1. use --with-test now.
  • -d, --with-doc β€” builds the package documentation. only affects the packages you actually listed on the command line (she's picky like that). equivalent to setting $OPAMWITHDOC (or the deprecated $OPAMBUILDDOC) to "true".
  • --dry-run β€” simulates the command but doesn't actually change anything. it's giving window shopping. πŸ›οΈ you can also toggle this with the $OPAMDEBUG environment variable.
  • --fake β€” registers the actions into the opam database without actually performing them. WARNING: this one is dangerous and will very likely break your whole opam environment. you almost definitely want --dry-run instead. you've been warned, don't come crying. πŸ’€
  • --ignore-available-on[=PACKAGES] (default=) β€” forces opam to mark those listed packages as available. good for testing compatibility, but expect builds to break when you use it. also note that version constraints on the packages' dependencies are totally unaffected.
  • --ignore-constraints-on[=PACKAGES] (default=) β€” makes opam ignore version constraints on all dependencies of the listed packages. again, compatibility testing purposes only, and again, expect breakage. heads up: availability of the packages, plus version constraints on optional dependencies and conflicts, are all unaffected. same as setting $OPAMIGNORECONSTRAINTS.
  • --inplace-build β€” when a package's source is bound to a local directory, this runs the build and install actions right there in that directory instead of in a clean copy that opam manages. only affects packages explicitly listed on the command line. equivalent to setting $OPAMINPLACEBUILD to "true".
  • -j JOBS, --jobs=JOBS β€” sets the max number of concurrent jobs. default is calculated from your number of cores (she's smart like that ✨). you can also set this with the $OPAMJOBS environment variable.
  • --lock-suffix=SUFFIX (absent=locked) β€” sets the locked files suffix to SUFFIX.
  • --locked β€” in commands that use opam files found from pinned sources, if there's a variant of the file with an added .locked extension (like foo.opam.locked sitting next to foo.opam), that one gets used instead. this is typically for offering a more specific set of dependencies and reproducing similar build contexts β€” hence the name. the lock option can generate those files for you, based on the versions of dependencies currently installed on the host. equivalent to setting $OPAMLOCKED. note that this doesn't generally affect already pinned packages.
  • -m MAKE, --make=MAKE β€” gone as of 2.1. use opam config set[-global] make MAKE instead.
  • --no-checksums β€” doesn't verify the checksum of downloaded archives. equivalent to setting $OPAMNOCHECKSUMS to "true".
  • --no-depexts β€” temporarily disables handling of external dependencies. super useful if a package isn't available on your system package manager but you installed the required dependency by hand (DIY queen πŸ’…). implies --assume-depexts, and stores the exceptions upon success as well.
  • --require-checksums β€” rejects installation of packages that don't provide a checksum for the upstream archives. equivalent to setting $OPAMREQUIRECHECKSUMS to "true".
  • --reuse-build-dir β€” reuses existing build directories (the ones you kept with --keep-build-dir) instead of compiling from a fresh clone of the source. can be faster, but lowkey can also cause failures if the packages' build systems don't handle dependency upgrades well. equivalent to setting $OPAMREUSEBUILDDIR to "true".
  • --show-actions β€” calls the solver and shows you the actions. doesn't perform any changes. equivalent to setting $OPAMSHOW.
  • --skip-updates β€” when you run an install, upgrade or reinstall on source-pinned packages, they normally get updated from their origin first. this flag says "no thank you" to that behaviour and keeps them at their cached version. equivalent to setting $OPAMSKIPUPDATE.
  • -t, --with-test β€” builds and runs the package unit-tests. only affects packages listed on the command line. equivalent to setting $OPAMWITHTEST (or the deprecated $OPAMBUILDTEST) to "true".
  • --unlock-base β€” removed in 2.1, use --update-invariant instead.
  • --update-invariant β€” allows changes to the set of packages designated as switch base (usually the main compiler). use with caution, this is not a casual move. equivalent to setting the $OPAMUNLOCKBASE environment variable.
  • --verbose-on=PACKAGES β€” gets more verbose on specific packages. equivalent to setting $OPAMVERBOSE.
  • --with-dev-setup β€” includes development-tools-only dependencies.

πŸ’– ARGUMENTS πŸ’–

  • PACKAGES β€” a list of package names, with an optional version or constraint, e.g. `pkg', `pkg.1.0' or `pkg>=0.5' ; or directory names containing a package description, with an explicit directory (e.g. `./srcdir' or `.').

🌈 OPTIONS 🌈

  • -a, --auto-remove β€” removes all the packages that weren't explicitly installed and that aren't necessary anymore. if you want to protect an already-installed package from getting swept up, you can run opam install <pkg> --set-root. this flag can also be set using the $OPAMAUTOREMOVE configuration variable.
  • --destdir=DIR β€” instead of uninstalling the packages, this reverts the action of opam install --destdir: it removes files corresponding to what the listed packages installed to the current switch, from the given DIR. quick note: the package needs to still be installed to the same version that was used for install --destdir for this to work reliably. also, the packages are not removed from the current opam switch when this is specified.
  • --force β€” executes the remove commands of the given packages directly, even if opam doesn't consider them installed. she's not asking questions, she's just doing it. πŸ”₯
  • --formula=FORMULA (absent=[]) β€” experimental. specifies a dependency formula to be verified by the solution, in addition to the switch invariant. the format is the same as for expressing dependencies in package definition files, e.g. '"foo" {>= "1.1"}'.
  • --recursive β€” allows recursive lookups of *.opam files. cf. --subpath too.
  • --subpath=PATH β€” *.opam files get retrieved from the given sub directory instead of the top directory. sources are then taken from the targeted sub directory β€” internally, only this subdirectory is copied/fetched. you can combine it with --recursive to get a recursive lookup on the subpath. 🧚

πŸ’– COMMON OPTIONS πŸ’–

okay bestie these are the options that literally every opam command has, like the shared friend group of flags 🫢. Same ones everywhere you go.

  • --best-effort β€” this one's the "we tried our best, and that's what matters" flag πŸ₯Ί. Instead of just dying when it can't install all the packages you asked for, it installs as many as it possibly can. Heads up though: not every external solver supports this (recent versions of aspcud or mccs should, no cap). Setting it is the same as setting the $OPAMBESTEFFORT environment variable.
  • --cli=MAJOR.MINOR (absent=2.6) β€” use the command-line interface syntax and semantics of MAJOR.MINOR. This one's for anyone doing persistent opam stuff β€” scripts, blog posts, whatever β€” because any opam in the same MAJOR series will behave like that specific MINOR release ✨. Real talk though: this flag did not exist in opam 2.0, so if you wanna select the 2.0 CLI you gotta set the OPAMCLI environment variable to 2.0 instead of using this parameter. iykyk πŸ™ˆ
  • --color=WHEN β€” colorizes your output 🌈. WHEN must be one of always, never or auto.
  • --confirm-level=LEVEL β€” sets the confirmation level :) LEVEL must be one of ask, no, yes or unsafe-yes 😳. You can pass this more than once. And if --yes or --no are also given, whichever --confirm-level came last is the one that counts. Equivalent to setting $OPAMCONFIRMLEVEL.
  • --criteria=CRITERIA β€” this is where you tell opam your ~preferences~ for dependency solving, just for this run πŸ’…. It overrides $OPAMCRITERIA, $OPAMFIXUPCRITERIA and $OPAMUPGRADECRITERIA. For the deets on the supported language and which external solvers exist, peep http://opam.ocaml.org/doc/External_solvers.html. And there's a whole general guide to solver preferences at http://www.dicosmo.org/Articles/usercriteria.pdf if you wanna go full nerd mode 🧚
  • --cudf=FILENAME β€” debug gorl option πŸ”: saves the CUDF requests sent to the solver into FILENAME-<n>.cudf, where <n> is the n-th call to the solver during the opam run.
  • --debug β€” prints debug messages to stderr. Equivalent to setting $OPAMDEBUG to "true".
  • --debug-level=LEVEL β€” same vibe as --debug, except you get to pick the debug level (--debug just sets it to 1). Equivalent to setting $OPAMDEBUG to a positive integer.
  • --git-version β€” prints the git version of opam if it's set (i.e. you're running a development version), then exits ✌️.
  • --help[=FMT] (default=auto) β€” shows this help in format FMT. FMT must be one of auto, pager, groff or plain. With auto, the format becomes pager or plain whenever the TERM env var is dumb or undefined.
  • --ignore-pin-depends β€” ignores the extra pins that packages require when they get pinned, whether you did it manually via opam pin or through opam install DIR πŸ“Œ. Equivalent to setting IGNOREPINDEPENDS=true.
  • --json=FILENAME β€” saves the results of your opam run into a computer-readable file πŸ€–. And listen: if the filename contains the character %, that gets replaced by an index that won't overwrite an existing file. Basically the same as setting the $OPAMJSON variable.
  • --no β€” answers no to every single opam yes/no question, no prompting, no hesitation πŸ™…β€β™€οΈ. See also --confirm-level. Equivalent to setting $OPAMNO to "true".
  • --no-aspcud β€” bestie... this one was removed in 2.1 πŸ’€. It's giving ghost of flags past.
  • --no-auto-upgrade β€” so when opam configures or updates a repository written for an earlier opam version (1.2), it internally converts it to the current format. This flag disables that behaviour, periodt. Note that repositories should define their format version in a 'repo' file at their root, or else they get assumed to be in the older format πŸ‘€. And honestly? It's preferable to upgrade the repositories manually using opam admin upgrade [--mirror URL] whenever you can.
  • --no-self-upgrade β€” by default opam will replace itself with a newer binary found at OPAMROOT/opam if one's there πŸ”„. This disables that behaviour (no glow-up for you today).
  • -q, --quiet β€” disables --verbose. shhh 🀫
  • --root=ROOT β€” uses ROOT as the current root path. Equivalent to setting $OPAMROOT to ROOT.
  • --safe, --readonly β€” makes sure nothing gets automatically updated or rewritten, which is super useful for calling from completion scripts and stuff like that πŸ›‘οΈ. It will fail whenever such an operation is needed ; it also avoids waiting for locks, skips interactive questions and overrides the $OPAMDEBUG variable. Equivalent to setting the environment variable $OPAMSAFE.
  • --solver=CMD β€” specify the CUDF solver used to resolve 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}%. Equivalent to setting $OPAMEXTERNALSOLVER.
  • --strict β€” fails whenever an error shows up in a package definition or a configuration file 🚨. The default behaviour is to just continue silently if possible. (we love a no-drama default ✨)
  • --switch=SWITCH β€” uses SWITCH as the current compiler switch. Equivalent to setting $OPAMSWITCH to SWITCH.
  • --use-internal-solver β€” disables any external solver and uses the built-in one instead (this requires that opam has been compiled with a built-in solver!). Equivalent to setting $OPAMNOASPCUD or $OPAMUSEINTERNALSOLVER.
  • -v, --verbose β€” be more verbose πŸ—£οΈ. One -v shows all package commands, and repeating it also displays commands called internally (like tar, curl, patch etc.). Repeating it n times is equivalent to setting $OPAMVERBOSE to "n".
  • --version β€” shows version information πŸ‘‘.
  • -w, --working-dir β€” whenever opam updates packages that are bound to a local, version-controlled directory, this updates to the current working state of their source instead of the last committed state, or the ref they're pointing to πŸ”₯. But watch out: since the source directory gets copied as it is, if it isn't clean it may result in an opam build failure 😭. This only affects packages explicitly listed on the command-line. It can also be set with $OPAMWORKINGDIR.
  • -y, --yes β€” answers yes to all opam yes/no questions without prompting πŸ™Œ. See also --confirm-level. Equivalent to setting $OPAMYES to "true".

✨ ENVIRONMENT ✨

okay so this section is a lot, bestie, but it's literally just the master list of every environment variable opam looks at πŸ’– and there are... many. So many. Grab a snack πŸ“

First, the rule for the boolean ones: set them to "0", "no", "false" or the empty string to disable them, and "1", "yes" or "true" to enable them. That's it, that's the whole vibe check βœ…


  • OPAMALLPARENS β€” surround all filters with parenthesis.
  • OPAMASSUMEDEPEXTS β€” see option --assume-depexts.
  • OPAMAUTOANSWER β€” internal use only, bestie, don't touch πŸ™ˆ
  • OPAMAUTOREMOVE β€” see remove option --auto-remove.
  • OPAMBESTEFFORT β€” see option --best-effort.
  • OPAMBESTEFFORTPREFIXCRITERIA β€” sets the string that must be prepended to the criteria when the --best-effort option is set, and is expected to maximise the opam-query property in the solution.
  • OPAMBUILDDOC β€” Removed in 2.1.
  • OPAMBUILDTEST β€” Removed in 2.1.
  • OPAMCLI β€” see option --cli.
  • OPAMCOLOR β€” when set to always or never, sets a default value for the --color option.
  • OPAMCONFIRMLEVEL β€” see option --confirm-level. Heads up: OPAMCONFIRMLEVEL has priority over OPAMYES and OPAMNO πŸ‘‘
  • OPAMCRITERIA β€” specifies user preferences for dependency solving. The default value depends on the solver version, use 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 β€” can be used to select a given curl program. See OPAMFETCH for more options.
  • OPAMDEBUG β€” see options --debug and --debug-level.
  • OPAMDEBUGSECTIONS β€” if set, 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, overrides $EDITOR and $VISUAL.
  • OPAMERRLOGLEN β€” sets the number of log lines printed when a sub-process fails. 0 to print all.
  • 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 install option --ignore-available-on.
  • OPAMIGNORECONSTRAINTS β€” see 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 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 β€” combination of --locked and --lock-suffix options.
  • OPAMLOGS β€” logdir sets 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 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 install option --with-dev-setup.
  • OPAMWITHDOC β€” see install option --with-doc.
  • OPAMWITHTEST β€” see 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 bestie, this part is short but it matters, and it's giving "future-proof yourself" energy ✨

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. And genuinely? Blog posts and other documentation benefit too, because it prevents information from becoming stale. Obsessed with a flag that keeps your docs from rotting πŸ’…

Although opam only supports roots (~/.opam/) for the current version, it does provide backwards compatibility for its command-line interface.

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. So yes, it will absolutely call you out πŸ“’

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. Last one wins, no cap πŸ‘‘

πŸ’€ EXIT STATUS πŸ’€

okay bestie, so here's the tea on exit codes β€” this is how you find out what went wrong when things go wrong 🫢

BUT first, a lil exception because of course there is one:

the exec command is built different πŸ’… it returns 127 if the command was not found or couldn't be executed, and otherwise it just hands you the command's own exit value. iconic behaviour tbh.

now the actual list, no cap:

  • 0 β€” Success! ✨ or true for boolean queries. slay.
  • 1 β€” False. you get this when a boolean return value is expected, like when you run with --check, or for queries like opam lint.
  • 2 β€” Bad command-line arguments 😭 or command-line arguments pointing to an invalid context (e.g. a file that doesn't follow the expected format).
  • 5 β€” Not found. you asked for something (package, version, repository, etc.) and it just... wasn't there πŸ’€
  • 10 β€” Aborted. the operation needed confirmation and you didn't give it πŸ™ˆ
  • 15 β€” Could not acquire the locks required for the operation πŸ”’
  • 20 β€” There is no solution to the user request. this can happen when you ask to install two incompatible packages, for example. pick a lane bestie 😭
  • 30 β€” Error in package definition, or other metadata files. using --strict raises this error more often.
  • 31 β€” Package script error. some package operations were unsuccessful. this may be an error in the packages or an incompatibility with your system, and it can be a partial error.
  • 40 β€” Sync error. could not fetch some remotes from the network 🌐 this can be a partial error.
  • 50 β€” Configuration error. opam or system configuration doesn't allow the operation, and it needs fixing.
  • 60 β€” Solver failure. the solver failed to return a sound answer. it can be due to a broken external solver, or an error in solver configuration.
  • 99 β€” Internal error. something went wrong, likely due to a bug in opam itself πŸ›
  • 130 β€” User interrupt. SIGINT was received, generally because the user pressed Ctrl+C. you did this. it was you πŸ’…
  • 0 β€” on success. yes again. periodt.
  • 123 β€” on indiscriminate errors reported on standard error.
  • 124 β€” on command line parsing errors.
  • 125 β€” on unexpected internal errors (bugs).

πŸ“š FURTHER DOCUMENTATION πŸ“š

like, there's a whole website bestie, go read it:


πŸ‘‘ AUTHORS πŸ‘‘

the literal icons who made this happen, put some respect on their names 🫢

  • 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 🌈

like, go read the main one, it's giving main character energy πŸ’–


πŸ› BUGS πŸ›

found something cursed? spill it here:

ngl if you found a bug, reporting it is highkey the most helpful thing you can do 🫢 don't be shy.

and that's the whole page bestie, you ate that πŸ’… this was Opam 2.6.1's OPAM-UNINSTALL(1) manual page β€” now go forth and uninstall things responsibly, mwah πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from