OPAM-UPGRADE(1)
OPAM-UPGRADE(1) ๐
okay bestie, welcome to the Opam Manual โ this is the page for opam-upgrade, and it's a whole main-character moment. grab a boba, we're going through E V E R Y T H I N G โจ
๐ธ NAME ๐ธ
opam-upgrade โ upgrade the installed package to latest version. that's it, that's the vibe ๐
๐ฆ SYNOPSIS ๐ฆ
opam upgrade [OPTION]โฆ [PACKAGES]โฆ
โจ DESCRIPTION โจ
so what this does is: it upgrades your installed packages to their latest available versions. lowkey iconic. ๐ซถ
more precisely โ and this is the part you wanna actually remember โ the command calls the dependency solver to find a consistent state where most of the installed packages get upgraded to their latest versions. consistency stays winning, periodt.
and okay, plot twist: if you hand it a directory as an argument, then anything that's pinned to that directory gets selected for upgrade. cute. โจ
๐ ARGUMENTS ๐
PACKAGESโ a list of package names, each optionally with a version or a constraint, likepkg,pkg.1.0orpkg>=0.5; or directory names containing a package description, given with an explicit directory (like./srcdiror.). yes you can just raw-dog it withpkgand let opam figure it out, obsessed. ๐
๐ OPTIONS ๐
-a,--allโ run an upgrade of all installed packages. this is literally the default when you don't passPACKAGES, and it's still useful alongsidePACKAGESwhen you wanna upgrade but also make sure some packages get (or stay) installed. no cap. ๐ฅ--checkโ don't actually run the upgrade, just check if anything could be upgraded. returns0if yes there's stuff to upgrade,1if there's nothing that can be upgraded. it's giving vibe check but for packages. ๐--fixupโ recover from a broken state (eg. missing dependencies, two conflicting packages installed together...). we've all been there bestie, no judgment. ๐ฉน--formula=FORMULA(absent=[]) โ Experimental. specify a dependency formula to be verified by the solution, on top of the switch invariant. the format is the same as for expressing dependencies in package definition files, e.g."foo" {>= "1.1"}๐งช--installedโ when a directory is provided as argument, don't install pinned packages that aren't yet installed. we're only touching what's already here, tysm. ๐ โ๏ธ--recursiveโ allow recursive lookups of*.opamfiles. cf.--subpathalso. go deeper. ๐--subpath=PATHโ*.opamfiles are retrieved from the given sub directory instead of the top directory. sources are then taken from the targeted sub directory, and internally only this subdirectory is copied/fetched. it can be combined with--recursiveto have a recursive lookup on the subpath. nesting levels: iconic. ๐ช
๐ ๏ธ 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 is successful, opam won't prompt again about these system packages. 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". clingy in the best way. ๐ซถ--build-docโ Removed in 2.1, use--with-docinstead. she's gone, bestie. โฐ๏ธ--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 also can be set with environment variable$OPAMDEBUG. manifesting without committing, we love to see it. ๐ฎ--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-run. you've been warned. ๐
--ignore-available-on[=PACKAGES](default=) โ forces opam to mark the listed packages as available. this can be used to test compatibility, but expect builds to break when using this. 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. this can be used to test compatibility, but expect builds to break when using this. 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 which has its source 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 that are 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. multitasking queen. ๐--lock-suffix=SUFFIX(absent=locked) โ set 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 will be used instead. this is typically useful to offer a more specific set of dependencies and reproduce similar build contexts, hence the name. 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. another one bites the dust. ๐--no-checksumsโ do not verify the checksum of downloaded archives. this is equivalent to setting$OPAMNOCHECKSUMSto"true". living dangerously fr fr. ๐ญ--no-depextsโ temporarily disables handling of external dependencies. this can be used if a package is not 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. DIY energy. ๐ง--require-checksumsโ reject the installation of packages that don't provide a checksum for the upstream archives. this is equivalent to setting$OPAMREQUIRECHECKSUMSto"true". we do NOT accept mystery boxes here. ๐ซ--reuse-build-dirโ reuse existing build directories (kept by using--keep-build-dir), instead of compiling from a fresh clone of the source. this can be faster, but 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. just here to observe, main character spectator energy. ๐--skip-updatesโ when running an install, upgrade or reinstall on source-pinned packages, they are normally updated from their origin first. this flag disables that behaviour and will keep them to their version in cache. this is equivalent to setting$OPAMSKIPUPDATE. no peeking at the origin, we're staying home. ๐ก-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". test or it didn't happen. ๐งช--unlock-baseโ Removed in 2.1, use--update-invariantinstead. she's retired 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. dev tools get to come to the party too. ๐
โจ COMMON OPTIONS โจ
okay bestie, these ones are the communal wardrobe of opam โ every single command gets to wear them. ๐ No cap.
--best-effortโ Don't fail if all requested packages can't be installed: try to install as many as possible. Note that not all external solvers may support this option (recent versions ofaspcudormccsshould). This is equivalent to setting the$OPAMBESTEFFORTenvironment variable. like, it's the "we take those" of package installs ๐--cli=MAJOR.MINOR(absent=2.6) โ Use the command-line interface syntax and semantics ofMAJOR.MINOR. Intended for any persistent use of opam (scripts, blog posts, etc.), any version of opam in the sameMAJORseries will behave as for the specifiedMINORrelease. The flag was not available in opam 2.0, so to select the 2.0 CLI, set theOPAMCLIenvironment variable to2.0instead of using this parameter. time travel but make it CLI-compatible โจ--color=WHENโ Colorize the output.WHENmust be one ofalways,neverorauto. yes, aesthetic matters even in the terminal ๐--confirm-level=LEVELโ Confirmation level,LEVELmust be one ofask,no,yesorunsafe-yes. Can be specified more than once. If--yesor--noare also given, the value of the last--confirm-levelis taken into account. This is equivalent to setting$OPAMCONFIRMLEVEL. and yes,unsafe-yesis giving exactly what it sounds like ๐--criteria=CRITERIAโ Specify user preferences for dependency solving for this run. Overrides$OPAMCRITERIA,$OPAMFIXUPCRITERIAand$OPAMUPGRADECRITERIA. For details on the supported language, and the external solvers available, seehttp://opam.ocaml.org/doc/External_solvers.html. A general guide to using solver preferences can be found athttp://www.dicosmo.org/Articles/usercriteria.pdf. solver vibes are customizable, we love to see it ๐--cudf=FILENAMEโ Debug option: Save the CUDF requests sent to the solver toFILENAME-<n>.cudfwhere<n>is the n-th call to the solver during the opam run. for the debug girlies who love receipts ๐งพ--debugโ Print debug message to stderr. This is equivalent to setting$OPAMDEBUGto"true". spill the tea to stderr ๐ซ--debug-level=LEVELโ Like--debug, but allows specifying the debug level (--debugsets it to1). Equivalent to setting$OPAMDEBUGto a positive integer. debug but with range, main character energy ๐--git-versionโ Print the git version of opam, if set (i.e. you are using a development version), and exit. dev build reveal, icon behavior ๐--help[=FMT](default=auto) โ Show this help in formatFMT. The valueFMTmust be one ofauto,pager,grofforplain. Withauto, the format ispagerorplainwhenever theTERMenv var isdumbor undefined. not theTERMbeing dumb, bestie ๐ญ--ignore-pin-dependsโ Ignore extra pins required by packages that get pinned, either manually throughopam pinor throughopam install DIR. This is equivalent to settingIGNOREPINDEPENDS=true. pins? don't know her today ๐--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$OPAMJSONvariable. for when you need the data in JSON format, periodt ๐--noโ Answer no to all opam yes/no questions without prompting. See also--confirm-level. This is equivalent to setting$OPAMNOto"true". no means no, and it means it automatically ๐ โโ๏ธ--no-aspcudโ Removed in2.1. gone, deleted, she's not coming to the function ๐--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 this 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 usingopam admin upgrade [--mirror URL]when possible. manual upgrade era, do it with intention โจ--no-self-upgradeโ Opam will replace itself with a newer binary found atOPAMROOT/opamif present. This disables this behaviour. not me swapping my own binary without asking ๐-q,--quietโ Disables--verbose. shhh, we're being lowkey ๐คซ--root=ROOTโ UseROOTas the current root path. This is equivalent to setting$OPAMROOTtoROOT. pick your root, own your 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$OPAMDEBUGvariable. This is equivalent to set environment variable$OPAMSAFE. read-only queen, no surprise edits ๐ก๏ธ--solver=CMDโ Specify the CUDF solver to use 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}%. This is equivalent to setting$OPAMEXTERNALSOLVER. choose your solver fighter โ๏ธ--strictโ Fail whenever an error is found in a package definition or a configuration file. The default is to continue silently if possible. strict mode: no silent chaos allowed ๐--switch=SWITCHโ UseSWITCHas the current compiler switch. This is equivalent to setting$OPAMSWITCHtoSWITCH. switch it up, compiler edition ๐ฆ--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$OPAMNOASPCUDor$OPAMUSEINTERNALSOLVER. homegrown solver, no outside opinions ๐-v,--verboseโ Be more verbose. One-vshows all package commands, repeat to also display commands called internally (e.g.tar,curl,patchetc.) Repeating n times is equivalent to setting$OPAMVERBOSEto"n". verbose? more like yappuccino โ--versionโ Show version information. the classic "who am I" moment ๐-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 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. working dir realness, but keep it clean bestie ๐งผ-y,--yesโ Answer yes to all opam yes/no questions without prompting. See also--confirm-level. This is equivalent to setting$OPAMYESto"true". yes queen, say yes to everything ๐
๐ ENVIRONMENT ๐
okay bestie listen up ๐ opam is so into your environment variables. it reads a whole bunch of them, and they're basically your backstage passes to changing how opam acts without touching a single config file. iconic behavior tbh.
quick vocab check before we dive in โจ โ for the boolean ones, you turn them off by setting them to "0", "no", "false" or the empty string. you turn them on with "1", "yes" or "true". that's the whole vibe check, no cap ๐ซถ
OPAMALLPARENSโ surround all filters with parenthesis.OPAMASSUMEDEPEXTSโ see option--assume-depexts.OPAMAUTOANSWERโ internal use only. ๐คซ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-effortoption is set, and is expected to maximise theopam-queryproperty in the solution.OPAMBUILDDOCโ Removed in 2.1. ๐ ripOPAMBUILDTESTโ Removed in 2.1. also gone, also ripOPAMCLIโ see option--cli.OPAMCOLORโ when set toalwaysornever, sets a default value for the--coloroption.OPAMCONFIRMLEVELโ see option--confirm-level. also heads up:OPAMCONFIRMLEVELhas priority overOPAMYESandOPAMNO. it's the main character here ๐OPAMCRITERIAโ specifies user preferences for dependency solving. the default value depends on the solver version, so runconfig reportif you wanna 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.OPAMDOWNLOADJOBSโ sets the maximum number of simultaneous downloads. multitasking queen ๐ฆ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.OPAMERRLOGLENโ sets the number of log lines printed when a sub-process fails.0means print all of them. ๐ญ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 thedownload-commandvalue 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. very forensic of you ๐ง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.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, onupdateorinit.OPAMNOCHECKSUMSโ enables option--no-checksumswhen 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 tofalseto 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. lowkey witchcraft โจ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.OPAMSAFEโ see option--safe.OPAMSHOWโ see option--show.OPAMSKIPUPDATEโ see option--skip-updates.OPAMSKIPVERSIONCHECKSโ bypasses some version checks. Unsafe, for compatibility testing only. โ ๏ธ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. ๐ another one goneOPAMSTATUSLINEโ 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. ๐ช so cuteOPAMVALIDATIONHOOKโ 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. ๐ just don't, bestieOPAMWITHDEVSETUPโ 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 variable package:var when substituting%{package:var}%strings inopamfiles.
๐ป CLI VERSION ๐ป
okay so this one matters, 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. periodt. ๐
even though opam only supports roots (~/.opam/) for the current version, it does provide backwards compatibility for its command-line interface. slay ๐
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 if you see a warning, that's why, don't panic
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, fr fr ๐ธ
โจ EXIT STATUS โจ
Okay bestie, this is the part where opam tells you what happened using numbers instead of words, iykyk ๐
โ ๏ธ One exception to literally everything below: theexeccommand returns127if the command wasn't found or couldn't be executed, and returns the command's own exit value otherwise. That one plays by its own rules, no cap.
0โ Success! Ortruefor boolean queries. ๐1โFalse. You get this 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 pointing at an invalid context (for example, a file that doesn't follow the expected format).5โ Not found. You asked for something (a package, a version, a repository, whatever) and it simply wasn't there. ๐ญ10โ Aborted. The operation needed confirmation and it wasn't given. ๐15โ Could not acquire the locks required for the operation.20โ There's no solution to what you asked for. This can happen when you ask to install two incompatible packages, for example.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 might be an error in the packages, or an incompatibility with your system. It 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. This can be because of a broken external solver, or an error in the solver configuration.99โ Internal error. Something went wrong, and it's probably a bug in opam itself. ๐130โ User interrupt.SIGINTwas received, which is generally because the user pressed Ctrl+C.
And then a lil bonus trio, because why not:
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 spot for the deep lore, bestie ๐โจ
๐ AUTHORS ๐
The absolute icons who made this happen, in the order they're listed:
- 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)โ the main character, go read it ๐ซถ
๐ BUGS ๐
Check bug reports at https://github.com/ocaml/opam/issues. Found something cursed? Tell them, don't suffer in silence ๐
And that's a wrap on this page, bestie! ๐ It's Opam 2.6.1 talking to you through the OPAM-UPGRADE(1) page, and that's the whole thing โ every single line, no skips, no shortcuts. Go upgrade something and slay ๐
โจ
๐ฆ 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