OPAM-INIT(1)
π OPAM-INIT(1) β the opam-init page, but make it make sense π
okay bestie, welcome to the Opam Manual section for opam-init. This is the page that teaches you how to birth your opam state into existence. Sit down, grab a strawberry drink π, we're doing this.
β¨ NAME β¨
opam-init β Initialize opam state, or set init options.
π¦ SYNOPSIS π¦
opam init [OPTION]β¦ [NAME] [ADDRESS]
π DESCRIPTION π
Initialise the opam state, or update opam init options.
so basically, the init command initialises a local "opam root" β that's ~/.opam/ by default, unless you override it with --root or the OPAMROOT environment variable β and that root is where opam keeps all its data and packages. π
This is a necessary step for normal opam operation, no skipsies, no shortcuts. The initial software repositories get fetched, and an initial 'switch' can also be installed, depending on your configuration and options. Wanna tweak all that later? That's what opam switch and opam repository are for, bestie.
The initial repository and defaults can be set through a configuration file found at ~/.opamrc or /etc/opamrc.
Also!! This command lets you customise some aspects of opam's shell integration β when you run it initially (which skips the interactive dialog), but honestly also at any later time. Versatile icon. β¨
π ARGUMENTS π
ADDRESSβ the address of the initial package repository, used when creating a new opam root.NAME(absent=default) β the name of the initial repository, used when creating a new opam root.
π OPTIONS π
-a,--auto-setupβ automatically do a full setup, including adding a line to your shell init files. set it and forget it energy fr fr.--bareβ initialise the opam state but don't setup any compiler switch yet. just the skeleton, no compiler yet π¦΄--bypass-checksβ skip all the checks on required or recommended tools and just assume everything is fine. living dangerously, love that for you π-c PACKAGE,--compiler=PACKAGEβ set which compiler to install (when creating an initial switch).--config=FILEβ use the given init config file. If you repeat this, the latest one has the highest priority (i.e. each field gets its value from wherever it was defined last). You're also allowed to specify a URL pointing to a config file instead. fancy. π--cygwin-extra-packages=CYGWIN_PACKAGESβ Windows only (Experimental). Specify additional packages to install with--cygwin-internal-install.--cygwin-internal-installβ Windows only (Experimental). Let opam setup and manage an internal Cygwin install (this one is the recommended one π).--cygwin-local-installβ Windows only (Experimental). Use a preexistent Cygwin install.--cygwin-location=DIRβ Windows only (Experimental). Specify the Cygwin root location.--disable-completionβ disable shell completion in opam init scripts. no autocomplete for you π--disable-sandboxingβ use a default configuration with sandboxing disabled. Heads up: this may be overridden byopamrcif--no-opamrcis not specified or if--configis used. Use this at your own risk β without sandboxing it is possible for a broken package script to delete all your files. like, ALL of them. π--disable-shell-hookβ disable registration of a shell hook in opam init scripts.--dot-profile=FILENAMEβ name of the configuration file to update instead of~/.profileor~/.zshrcbased on shell detection.--enable-completionβ setup shell completion in opam init scripts, for supported shells. β¨--enable-shell-hookβ setup opam init scripts to register a shell hook that will automatically keep the shell environment up-to-date at every prompt. main character automation behavior π--git-location=DIRβ Windows only (Experimental). Specify the git binary directory. Make sure that it doesn't contain bash in the same directory.-i,--interactiveβ run the setup interactively. This is the default for an initial run, or when no more specific options are specified.-k KIND,--kind=KINDβ specify the kind of repository to be used. One ofhttp,local,git,darcsorhg.-n,--no-setupβ do not update the user shell configuration to setup opam. This also implies--disable-shell-hook, unless--interactiveis given or specified otherwise.--no-cygwin-setupβ Experimental. Don't setup Cygwin.--no-git-locationβ Experimental. Don't specify nor ask to specify the git binary directory.--no-opamrcβ don't read/etc/opamrcor~/.opamrc: use the default settings and the files specified through--configonly.--reinitβ re-run the initial checks and setup, according to opamrc, even if this is not a new opam root.--shell=SHELLβ sets the configuration mode for the opam environment appropriate forSHELL. One ofbash,sh,csh,zsh,fish,pwsh,cmdorpowershell. By default it's guessed from the parent processes and the$SHELLvariable.--shell-setupβ automatically setup the user shell configuration for opam, e.g. adding a line to the~/.profilefile.--show-default-opamrcβ print the built-in default configuration to stdout and exit. peek behind the curtain energy π§
π CONFIGURATION FILE π
Any field from the built-in initial configuration can be overridden through ~/.opamrc, /etc/opamrc, or a file supplied with --config. And if you wanna see what the default configuration for this version of opam actually looks like, just grab it with --show-default-opamrc. π«Ά
π₯ PACKAGE BUILD OPTIONS π₯
--assume-depextsβ skip the installation step for any missing system packages and attempt to proceed with compilation of the opam packages anyway. If the installation succeeds, opam won't prompt you again about these system packages. This is only meaningful if external dependency handling is enabled.-b,--keep-build-dirβ keep the build directories after compiling packages. This is equivalent to setting$OPAMKEEPBUILDDIRto"true".--build-docβ Removed in 2.1, use--with-docinstead. she's gone, babe βοΈ--build-testβ Removed in 2.1, use--with-testinstead. also gone π-d,--with-docβ build the package documentation. This only affects packages listed on the command-line. This is equivalent to setting$OPAMWITHDOC(or the deprecated$OPAMBUILDDOC) to"true".--dry-runβ simulate the command but don't actually perform any changes. This can also be set with the environment variable$OPAMDEBUG.--fakeβ this option registers the actions into the opam database, without actually performing them. β οΈ WARNING: This option is dangerous and likely to break your opam environment. You probably want--dry-runinstead. You've been warned. π--ignore-available-on[=PACKAGES](default=) β forces opam to mark the listed packages as available. You can use this to test compatibility, but expect builds to break when you do. Note that version constraints of the packages' dependencies are unaffected.--ignore-constraints-on[=PACKAGES](default=) β forces opam to ignore version constraints on all dependencies to the listed packages. You can use this to test compatibility, but expect builds to break when you do. Note that availability of the packages, as well as version constraints on optional dependencies and conflicts, are unaffected. This is equivalent to setting$OPAMIGNORECONSTRAINTS.--inplace-buildβ when compiling a package whose source is bound to a local directory, process the build and install actions directly in that directory, rather than in a clean copy handled by opam. This only affects packages explicitly listed on the command-line. This is equivalent to setting$OPAMINPLACEBUILDto"true".-j JOBS,--jobs=JOBSβ set the maximal number of concurrent jobs to use. The default value is calculated from the number of cores. You can also set it using the$OPAMJOBSenvironment variable.--lock-suffix=SUFFIX(absent=locked) β set the locked files suffix toSUFFIX.--lockedβ in commands that use opam files found from pinned sources, if a variant of the file with an added.lockedextension is found (e.g.foo.opam.lockedbesidesfoo.opam), that one will be used instead. This is typically useful to offer a more specific set of dependencies and reproduce similar build contexts β hence the name, iykyk. Thelockoption can be used to generate such files, based on the versions of the dependencies currently installed on the host. This is equivalent to setting the$OPAMLOCKEDenvironment variable. Note that this option doesn't generally affect already pinned packages.-m MAKE,--make=MAKEβ Removed in 2.1, useopam config set[-global] make MAKEinstead. rip ποΈ--no-checksumsβ do not verify the checksum of downloaded archives. This is equivalent to setting$OPAMNOCHECKSUMSto"true".--no-depextsβ temporarily disables handling of external dependencies. Use this if a package isn't available on your system package manager but you installed the required dependency by hand. Implies--assume-depexts, and stores the exceptions upon success as well.--require-checksumsβ reject the installation of packages that don't provide a checksum for the upstream archives. This is equivalent to setting$OPAMREQUIRECHECKSUMSto"true".--reuse-build-dirβ reuse existing build directories (the ones kept by using--keep-build-dir) instead of compiling from a fresh clone of the source. This can be faster, but it can also lead to failures if the build systems of the packages don't handle upgrades of dependencies well. This is equivalent to setting$OPAMREUSEBUILDDIRto"true".--show-actionsβ call the solver and display the actions. Don't perform any changes. This is equivalent to setting$OPAMSHOW.--skip-updatesβ when running an install, upgrade or reinstall on source-pinned packages, they're normally updated from their origin first. This flag disables that behaviour and will keep them at their version in cache. This is equivalent to setting$OPAMSKIPUPDATE.-t,--with-testβ build and run the package unit-tests. This only affects packages listed on the command-line. This is equivalent to setting$OPAMWITHTEST(or the deprecated$OPAMBUILDTEST) to"true".--unlock-baseβ Removed in 2.1, use--update-invariantinstead. bye bestie π--update-invariantβ allow changes to the packages set as switch base (typically, the main compiler). Use with caution. This is equivalent to setting the$OPAMUNLOCKBASEenvironment variable.--verbose-on=PACKAGESβ be more verbose on specific packages. This is equivalent to setting$OPAMVERBOSE.--with-dev-setupβ include development tools only dependencies.
more parts coming bestie, don't go anywhere πΈ
β¨ COMMON OPTIONS β¨
These ones are the universal besties β they work on literally every opam command. No cap. π
--best-effortβ okay so if not every package you asked for can actually be installed, this stops opam from just β¨dyingβ¨ about it. It'll try to install as many as it can instead. Small heads-up though: not all external solvers vibe with this option (recent versions of aspcud or mccs should be fine though π«Ά). Same thing as setting the$OPAMBESTEFFORTenvironment variable.--cli=MAJOR.MINOR(absent=2.6) β this one lets you use the command-line interface syntax and semantics ofMAJOR.MINOR. It's made for when you're doing persistent stuff with opam (scripts, blog posts, that kind of thing) β any opam in the sameMAJORseries will behave like theMINORrelease you picked. π Heads up: this flag was not available in opam 2.0, so if you want the 2.0 CLI you gotta set theOPAMCLIenvironment variable to2.0instead of using this parameter. iykyk.--color=WHENβ colorizes the output, obviously πWHENhas to be one ofalways,neverorauto.--confirm-level=LEVELβ picks your confirmation level.LEVELmust be one ofask,no,yesorunsafe-yes. You can pass this bad boy more than once! And if you also give--yesor--no, whichever--confirm-levelcame last wins. Equivalent to setting$OPAMCONFIRMLEVEL.--criteria=CRITERIAβ sets your user preferences for dependency solving, just for this run. It overrides$OPAMCRITERIA,$OPAMFIXUPCRITERIAand$OPAMUPGRADECRITERIA. For the full tea on the supported language and what external solvers exist, go peephttp://opam.ocaml.org/doc/External_solvers.html. And there's a general guide to using solver preferences athttp://www.dicosmo.org/Articles/usercriteria.pdfπ--cudf=FILENAMEβ debug mode, bestie π saves the CUDF requests sent to the solver intoFILENAME-<n>.cudfwhere<n>is the n-th call to the solver during the opam run.--debugβ prints debug messages to stderr. Same energy as setting$OPAMDEBUGto"true".--debug-level=LEVELβ like--debugbut you get to pick the debug level (--debugjust sets it to1). Equivalent to setting$OPAMDEBUGto a positive integer.--git-versionβ prints the git version of opam if it's set (i.e. you're running a development version), then bounces. π--help[=FMT](default=auto) β shows this help in formatFMT.FMTmust be one ofauto,pager,grofforplain. Withauto, the format becomespagerorplainwhenever theTERMenv var isdumbor just... not there. π--ignore-pin-dependsβ ignores the extra pins that packages require when they get pinned, whether that's manually viaopam pinor throughopam install DIR. Equivalent to settingIGNOREPINDEPENDS=true.--json=FILENAMEβ saves the results of the opam run into a computer-readable file π₯οΈ if the filename has a%character in it, that character gets replaced by an index that won't overwrite an existing file. Similar to setting the$OPAMJSONvariable.--noβ answers no to every single opam yes/no question, no prompting. See also--confirm-level. Equivalent to setting$OPAMNOto"true".--no-aspcudβ removed in 2.1 π it's gone, bestie.--no-auto-upgradeβ 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 turns that behaviour off. Note that repositories should define their format version in a'repo'file at their root, or they'll be assumed to be in the older format. Honestly though, it's preferable in any case to upgrade the repositories manually usingopam admin upgrade [--mirror URL]when you can. β¨--no-self-upgradeβ opam will replace itself with a newer binary found atOPAMROOT/opamif one's there. This disables that glow-up behaviour. π¦-q,--quietβ disables--verbose.--root=ROOTβ usesROOTas the current root path. Equivalent to setting$OPAMROOTtoROOT.--safe,--readonlyβ makes sure nothing gets automatically updated or rewritten. Super useful for calling from completion scripts and stuff like that. It'll fail whenever such an operation is needed; it also skips waiting for locks, skips interactive questions, and overrides the$OPAMDEBUGvariable. Equivalent to setting the$OPAMSAFEenvironment variable. π--solver=CMDβ picks the CUDF solver used for resolving package installation problems. This is either a predefined solver β this version of opam supportsbuiltin-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 is to just silently carry on if possible. π--switch=SWITCHβ usesSWITCHas the current compiler switch. Equivalent to setting$OPAMSWITCHtoSWITCH.--use-internal-solverβ disables any external solver and uses the built-in one instead (this needs opam to have been compiled with a built-in solver). Equivalent to setting$OPAMNOASPCUDor$OPAMUSEINTERNALSOLVER.-v,--verboseβ be more verbose β¨ one-vshows all package commands; repeat it to also display commands called internally (e.g.tar,curl,patchetc.). Repeating it n times is equivalent to setting$OPAMVERBOSEto"n".--versionβ shows version information. simple as that bestie π-w,--working-dirβ whenever you're updating packages 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. β οΈ Careful though β since the source directory is copied as it is, if it isn't clean it may result in a opam build failure. This only affects packages explicitly listed on the command-line. 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$OPAMYESto"true".
π¦ ENVIRONMENT π¦
Okay so opam is obsessed with environment variables, bestie. Here's the whole roster. If a variable is a boolean, set it to "0", "no", "false" or literally the empty string to turn it off, and "1", "yes" or "true" to turn it on. That's the vibe check for booleans. β¨
OPAMALLPARENSβ surrounds all filters with parentheses. All of them. Every single one.OPAMASSUMEDEPEXTSβ peek at the--assume-depextsoption, it's giving the same energy.OPAMAUTOANSWERβ internal use only, bestie, nothing for you here πOPAMAUTOREMOVEβ see the remove option--auto-remove.OPAMBESTEFFORTβ see option--best-effort.OPAMBESTEFFORTPREFIXCRITERIAβ sets the string that must be prepended to the criteria when the--best-effortoption is set, and it's expected to maximise theopam-queryproperty in the solution. Very specific, very iconic.OPAMBUILDDOCβ Removed in 2.1. π gone girlOPAMBUILDTESTβ Removed in 2.1. also πOPAMCLIβ see option--cli.OPAMCOLORβ when set toalwaysornever, sets a default value for the--coloroption.OPAMCONFIRMLEVELβ see option--confirm-level. Heads up:OPAMCONFIRMLEVELhas priority overOPAMYESandOPAMNO. It's the main character here, no cap.OPAMCRITERIAβ specifies user preferences for dependency solving. The default value depends on the solver version, so runconfig reportto 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 givencurlprogram. SeeOPAMFETCHfor more options.OPAMDEBUGβ see options--debugand--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:2orCLIENT CUDF:2), but otherwise use--debug-level.OPAMDIGDEPTHβ defines how aggressive the lookup for conflicts during CUDF preprocessing is. Dig, queen π³οΈOPAMDOWNLOADJOBSβ sets the maximum number of simultaneous downloads.OPAMDROPWORKINGDIRβ overrides packages previously updated with--working-diron 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$EDITORand$VISUAL. It said "I'm the editor now" πOPAMERRLOGLENβ sets the number of log lines printed when a sub-process fails.0to print all.OPAMEXTERNALSOLVERβ see option--solver.OPAMFAKEβ see option--fake.OPAMFETCHβ specifies how to download files: eitherwget,curlor 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 asOPAMUPGRADECRITERIA, 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--lockedand--lock-suffixoptions.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--noand--confirm-level. But ngl:OPAMNOis ignored if eitherOPAMCONFIRMLEVELorOPAMYESis set.OPAMNOAGGREGATEβ withopam 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-checksumswhen available.OPAMNODEPEXTSβ disables system dependencies handling, see option--no-depexts.OPAMNOENVNOTICEβ Internal.OPAMNOSELFUPGRADEβ see option--no-self-upgradeOPAMPINKINDAUTOβ 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 astar.gzfiles (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-checksumswhen available (e.g. foropam install).OPAMRETRIESβ sets the number of tries before failing downloads.OPAMREUSEBUILDDIRβ see option--reuse-build-dir.OPAMROOTβ see option--root. This is automatically set byopam env --root=DIR --set-root.OPAMROOTISOKβ don't complain when running as root. (root? as root?? okay pioneeer π«Ά)OPAMSAFEβ see option--safe.OPAMSHOWβ see option--show.OPAMSKIPUPDATEβ see option--skip-updates.OPAMSKIPVERSIONCHECKSβ bypasses some version checks. Unsafe, for compatibility testing only. Do not make this your whole personality.OPAMSOLVERALLOWSUBOPTIMALβ (defaulttrue) 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. Iftrue, opam will continue with a warning; iffalsea timeout is an error. Currently only the builtin-z3 backend handles this degraded case.OPAMSOLVERTIMEOUTβ change the time allowance of the solver. Default is60.0, set to0for 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 from0.0(best solution known to the solver) to1.0(unoptimized solution). Default is0.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 ofalways,neverorauto)OPAMSTRICTβ fail on inconsistencies (file reading, switch import, etc.).OPAMSWITCHβ see option--switch. Automatically set byopam env --switch=SWITCH --set-switch.OPAMUNLOCKBASEβ see install option--unlock-base.OPAMUPGRADECRITERIAβ specifies user preferences for dependency solving when performing an upgrade. OverridesOPAMCRITERIAin 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 ofalways,neverorauto). By defaultauto, which is determined from the locale.OPAMUTF8MSGSβ use extended UTF8 characters (camels) in opam messages. ImpliesOPAMUTF8. This is set by default on macOS only. πͺ camels!!OPAMVALIDATIONHOOKβ if set, uses the%{hook}%command to validate an opam repository update.OPAMVERBOSEβ see option--verbose.OPAMVERBOSEONβ see option--verbose-onOPAMVERSIONLAGPOWERβ do not use. that's it. that's the whole description. do NOT use it bestie π ββοΈ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--yesand--confirm-level.OPAMYEShas priority overOPAMNOand is ignored ifOPAMCONFIRMLEVELis set.OPAMVAR_varβ overrides the contents of the variable var when substituting%{var}%strings inopamfiles.OPAMVAR_package_varβ overrides the contents of the variablepackage:varwhen substituting%{package:var}%strings inopamfiles.
π CLI VERSION π
Okay so, all scripts and programmatic invocations of opam should use --cli, because that's how you make sure they work seamlessly with future versions of the opam client. And honestly? Blog posts and other documentation benefit too, because it stops information from becoming stale. Slay.
Although opam only supports roots (~/.opam/) for the current version, it does provide backwards compatibility for its command-line interface. So you're covered, bestie. π
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. Yeah. It will 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, always. Periodt. π
--cli
OPAMCLI
--cli=2.0
--cli=2.1
π EXIT STATUS π
okay bestie, this is the part where opam tells you what it's feeling by yeeting a number at your shell. every exit code is a whole mood, and they're all here, no cap. π«Ά
β¨ one (1) exception before we start, and she's iconic: theexeccommand does not play by these rules.execreturns 127 if the command wasn't found or couldn't be executed, and otherwise it returns the command's own exit value. that's it, that's the exception, moving on. π
0β Success π or, for boolean queries, true.1β False. comes back at you when a boolean return value is expected, like when you're running with--check, or for queries likeopam lint.2β Bad command-line arguments π or command-line arguments that point at an invalid context (e.g. a file that isn't in the expected format).5β Not found. you asked for something (package, version, repository, etc.) and it simply 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's no solution to the user request. this can happen when you ask to install two incompatible packages, for example. bestie. you can't have both. π30β Error in package definition, or other metadata files. using--strictraises 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. this can be a partial error.40β Sync error. couldn't fetch some remotes from the network. this can be a partial error too.50β Configuration error. opam or your 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, and it's likely a bug in opam itself. π130β User interrupt.SIGINTwas received, generally because the user pressed Ctrl+C.
and then there's this second little batch of generic ones, all lowercase and businesslike, slay:
0on success.123on indiscriminate errors reported on standard error.124on command line parsing errors.125on unexpected internal errors (bugs).
π FURTHER DOCUMENTATION π
See https://opam.ocaml.org/doc. that's the link, go read, it's giving study session. π§
π AUTHORS π
the whole squad, and honestly? legends. every single one. π
- 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 π
opam(1)β yeah. the main character. go say hi. β¨
π BUGS π
found something cursed? check bug reports at https://github.com/ocaml/opam/issues. tell them everything, they're nice about it, i promise. π«Ά
okay bestie that's the whole page!! you just read the entire manual like the absolute icon you are. π this was Opam 2.6.1, page OPAM-INIT(1), and you've officially graduated. go init something. i'm obsessed. πβ¨ππ¦
π¦ where this page comes from
- arch rolling: opam 2.6.1-1 Β· LGPL-2.1-only
- fedora 44: opam 2.6.1-1.fc44 Β· LGPL-2.1-only WITH OCaml-LGPL-linking-exception
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms