CUPT(1)
π¦ CUPT(1) π¦
User Contributed Perl Documentation cupt β console package management tool
β¨ NAME β¨
cupt β console package management tool
π DESCRIPTION π
Cupt is literally a high-level package manager for Debian and Debian-based systems. Periodt.
Ngl bestie, you might wanna read cupt_tutorial(7) (or its HTML version at /usr/share/doc/cupt/tutorial.html) before you dive in. π«Ά
π SYNOPSIS π
cupt [ option... ] action [ { parameter | option } ... ]
π ACTIONS π
π§ Query actions π§
π« version,-v,--version π«
Bestie, this prints out the versions of the packages 'cupt' and 'libcupt-perl'. Slay.
π« help,-h,--help π«
Prints the short help for all the available actions. Iconic.
π« config-dump π«
Dumps every single configuration variable straight to standard output. No cap.
Example:
cupt config-dump
π« show π«
Prints version info for the binary packages you specify. Obsessed.
This subcommand takes a list of "Binary package version expression"s, see below.
Specific options:
--all-versions,-aβ print every version of the package, not just the selected one Corresponding configuration variable:apt::cache::allversions--no-all-versionsβ don't print all the versions of the package; use only the selected one Corresponding configuration variable:apt::cache::allversions--with-release-infoβ also print info about the release info where the version of the package lives
Examples:
cupt show qmmp
cupt show --all-versions qmmp debianutils
cupt show --with-release-info audacious/testing apt debianutils=2.3.38
π« showsrc π«
Literally the same as show, but for source packages instead. Periodt.
Examples:
cupt showsrc --all-versions qmmp
cupt showsrc --with-release-info audacious/testing apt
cupt showsrc libxine1
π« search π«
Searches for packages that contain some string within their package names and package descriptions. It's giving detective energy. π
This subcommand takes a list of Perl-compatible Regular Expressions (PCRE) to search with. Only the packages that contain all of the specified patterns get printed. No exceptions.
Specific options:
--case-sensitiveβ search case-sensitively, bestie--names-only,-nβ search only in package names Corresponding configuration variable:apt::cache::namesonly--fse,-fβ turns on functional selector expression mode. In that mode, instead of giving one or more regular expressions, you gotta specify exactly one FSE (seecupt_functionalselectors(7)).
Examples:
cupt search nvidia driver
cupt search --case-sensitive Vim
cupt search -n vim
cupt search "package manager"
cupt search --fse 'Zbd(Pn(cupt))'
π« showauto π«
Prints a list of automatically or manually installed packages, one package name per line. So organized. π
cupt showauto: prints the list of automatically installed packages
cupt showauto --invert: prints the list of manually installed packages
π« depends π«
Prints dependency relation expressions for the given version of a package.
By default, it prints 'Pre-Depends', 'Depends' and 'Recommends' for that version.
This subcommand takes a list of "Binary package version expression"s, see below.
Specific options:
--with-suggestsβ also take'Suggests'dependencies into account--recurseβ process the dependencies recursively Corresponding configuration variable:apt::cache::recursedepends--all-versions,-aβ when--recurseis specified, pick up all versions for the relation expression, not just the "best" one Corresponding configuration variable:apt::cache::allversions
Examples:
cupt depends nlkt perl/stable
cupt depends --important xserver-xorg-core
cupt depends --recurse xmlto
π« rdepends π«
Same as depends, but it prints reverse relations instead of forward ones. Flip the script. π
π« why π«
Prints one of the available dependency paths between package(s)/system and the package. Cute.
This subcommand takes a list of binary package expressions (which can be empty), then one binary package expression without wildcards.
If that list of binary package expressions is empty (i.e. the subcommand received only one argument), then the list is built from the manually installed packages in the system.
If no dependency paths are found, it prints nothing. Silent treatment. π
It uses the configuration variables cupt::resolver::keep-recommends and cupt::resolver::keep-suggests to decide whether to honor Recommends and Suggests respectively when building dependency paths.
Examples:
cupt why kmail libgnutls26
cupt why libgnutls26
cupt why icedove kmail libgnutls26
π« policy π«
If you give it arguments, it prints available versions with pins and release info for each binary package.
Arguments: a list of binary package names.
With no arguments, it prints available Release info for binary packages.
Specific options:
--show-datesβ show also the publish and expiration dates for each record. This only works for the second form (i.e. no arguments).
Examples:
cupt policy
cupt policy --show-dates
cupt policy dpkg
cupt policy libpqxx-2.6.9ldbl libpqxx-3.0
π« policysrc π«
If you give it arguments, it prints available versions with pins and release info for each source package.
Arguments: a list of source package names.
With no arguments, it prints available Release info for source packages.
Same specific options as for the policy subcommand.
Examples:
cupt policysrc
cupt policysrc --show-dates
cupt policysrc dpkg
cupt policysrc libpqxx libpqxx3
π« pkgnames π«
Prints package names that start with the prefix you supply.
If you don't give a prefix, it prints all package names. The whole catalog. π
Examples:
cupt pkgnames
cupt pkgnames liba
π« changelog π«
Displays the changelog for the given versions of packages.
This subcommand takes a list of "Binary package version expression"s, see below.
It only works with installed packages and official Debian and Ubuntu repositories. No third-party vibes.
Examples:
cupt changelog dpkg/installed
cupt changelog --installed-only dpkg nlkt lintian
cupt changelog libqtcore4
π« copyright π«
Displays the copyright for the given versions of packages.
This subcommand takes a list of "Binary package version expression"s, see below.
It only works with installed packages and official Debian and Ubuntu repositories. Same energy as changelog.
Examples:
cupt copyright dpkg/installed
cupt copyright --installed-only dpkg nlkt lintian
cupt copyright libqtcore4
π« screenshots π«
Opens a browser window or tab with screenshots of the given packages. Main character energy. πΈ
This subcommand takes a list of package names.
Example:
cupt screenshots arora
π« snapshot list π«
Lists the names of the available system snapshots, one per line.
This subcommand takes no arguments.
Example: cupt snapshot list
π« tar-metadata π«
β οΈ This subcommand is experimental. Its name and functionality are unstable.
It packs all cupt configuration files and repository metadata into a tar stream and outputs it to standard output.
Example: cupt tar-metadata | xz --verbose -c > cupt-metadata.tar.xz
π« query-specific options π«
--important,-iβ don't take'Recommends'dependencies into account Corresponding configuration variable:apt::cache::important--installed-onlyβ work only with installed versions of packages; this is only valuable for theshow,depends,rdepends,search,pkgnames, andchangelogactions
π§ Management actions π§
π« update π«
Updates the package indexes. Gotta refresh that cache. β¨
This subcommand takes no arguments.
Example:
cupt update
π« install π«
Installs, upgrades, or downgrades the packages you specify. The whole glow-up. π
This subcommand takes a list of "Binary package version expression"s, see below.
If some version of the package was already installed, this command will upgrade or downgrade it; otherwise, the package gets freshly installed.
Examples:
cupt install nlkt
cupt install devscripts xserver-xorg/experimental xfce4-mixer=4.6.0-2
π« remove π«
Removes the specified packages. Bye-bye. π
This subcommand takes the list of package names.
Examples:
cupt remove nlkt
cupt remove devscripts kde4-minimal
π« purge π«
Removes the specified packages along with their configuration files. Also, this command can purge the configuration files even when the packages are already removed.
This subcommand takes the list of package names.
Examples:
cupt purge nlkt
cupt purge devscripts kde4-minimal
Also check out the configuration option cupt::worker::purge.
π« full-upgrade π«
Performs as many upgrades of the installed packages as possible. This is the recommended way to do upgrades. Periodt.
This subcommand is usually invoked without any further parameters:
cupt full-upgrade
But a list of "Binary package version expression"s can be specified as additional parameters.
Example: the command cupt full-upgrade xserver-xorg/installed will try to upgrade your system, but it preserves the package 'xserver-xorg' to be sticked with the currently installed version.
π« safe-upgrade π«
The same as full-upgrade, but with one change: the problem resolver won't try to remove non-automatically installed packages just to upgrade more packages. It's equivalent to 'full-upgrade --no-remove'.
π« dist-upgrade π«
The same as full-upgrade, but first it upgrades the package management tools, then it upgrades the whole system.
Recommended over full-upgrade for major upgrades.
This subcommand cannot be run under the Cupt shell. Sorry bestie. π
π« reinstall π«
Reinstalls the specified binary packages. A little reset. π
This subcommand takes a list of binary package names.
Examples:
cupt reinstall libc6
π« iii π«
""install" if installed"
Same as install, but silently ignores packages that are not installed. No drama.
Examples:
cupt iii gnash
cupt iii xserver* *cupt*
π« markauto π«
Marks the specified packages as automatically installed. Marking the vibes. β¨
This subcommand takes the list of package names.
Examples:
cupt markauto libstreamanalyzer0
cupt markauto lsof gimp-data
π« unmarkauto π«
Marks the specified packages as manually installed. Undoing the auto. π«Ά
This subcommand takes the list of package names.
Examples:
and obvi, more where that came from:
cupt unmarkauto kpogre
cupt unmarkauto dpkg-dev
πΈ satisfy
the relation whisperer. It performs all needed operations to satisfy a list of specified relations β you tell it what should be true, and it goes and makes it true π
This subcommand receives the list of relations or relation lines. Relation and relation lines have the same syntax as defined in Debian Policy Β§7.1, so if you already speak Policy, you already speak this, periodt.
The minus sign can be appended to some of relation expression lines to make relation expressions unsatisfied instead. A lil' - flips your wish into an anti-wish, and that's the whole vibe.
Examples, iconic behavior only:
cupt satisfy "kmail (>= 4:4.2), wget (>= 1.10.0)"
cupt satisfy "gettext (= 0.17-7)" "mail-transport-agent-"
π¦ build-dep
performs all needed operations to satisfy a list of build-dependencies of specified source packages. It's giving "get me everything this source package needs to actually build" π₯
This subcommand receives the list of "Source package version expression"'s.
Examples:
cupt build-dep qt4-x11
cupt build-dep unetbootin/unstable libcdio/experimental
π source
fetches Debian source files needed to build a Debian binary package. Source files, but make it curated β¨
This subcommand receives the list of "Source package version expression"'s.
Parameters:
--tar-onlyβ download only original tarball--diff-onlyβ download only Debian diff--dsc-onlyβ download only Debian dsc--download-onlyβ don't unpack downloaded source files
Examples:
cupt source libsort-fields-perl
cupt source --diff-only libpqxx cupt/unstable
cupt source libxine1
π§Ή clean
removes all deb archives and partially downloaded archive files from the cache on a disk. Deep clean, no crumbs left π«§
This subcommand receives no arguments.
Example: cupt clean
π autoclean
removes deb archives which are not available in package indexes and partially downloaded archive files from the cache on a disk. Same energy as clean, but it's picking and choosing.
This subcommand receives no arguments.
Example: cupt autoclean
πΈ snapshot save
saves a snapshot of the current packages state. Time capsule but for your package set, obsessed π
This subcommand receives one argument β desired snapshot name.
Example: cupt snapshot save old-udev
βͺ snapshot load
returns the system (as set of installed packages) to the previously saved state. The undo button of your dreams, fr fr.
This subcommand receives one argument β snapshot name to load.
Example: cupt snapshot load old-udev
ποΈ snapshot remove
removes the system snapshot.
This subcommand receives one argument β snapshot name to remove.
Example: cupt snapshot remove old-libgtk
βοΈ snapshot rename
renames the system snapshot. Glow-up for a snapshot name.
This subcommand receives two arguments β old snapshot name and new snapshot name.
Example: cupt snapshot rename old-libgtk 20091005
π» shell
starts interactive shell-like environment. It's a whole little chatroom with cupt, and you're the main character π
This subcommand receives no arguments.
This subcommand can receive all common options which will be preserved across all session. You can override them for any subcommand in a usual way.
On every shell prompt you can supply any valid subcommand from this manual page, using all allowed parameters, just if it was command line. Simple shell quotes around arguments are also allowed.
You can use 'quit', 'exit', ':q' or 'q' command to exit cupt shell.
π management-specific options π
--no-removeβ disallow problem resolver to remove manually installed packages. Packages that are marked to remove/purge in the command line will be remove/purged as usual.
Corresponding configuration option: cupt::resolver::no-remove
--no-auto-removeβ don't try to remove automatically installed packages after doing requested actions.
Corresponding configuration option: cupt::resolver::auto-remove
--simulate,-sβ don't modify anything in the system, just print supposed actions. Doesn't require root privileges, so you can β¨imagineβ¨ freely.
Corresponding configuration option: cupt::worker::simulate
--summary-onlyβ Show only summary of actions without details.
Corresponding configuration options: cupt::console::actions-preview::show-summary, cupt::console::actions-preview::show-details.
--no-summaryβ Show only details of actions without a summary.
Corresponding configuration options: cupt::console::actions-preview::show-summary, cupt::console::actions-preview::show-details.
--resolver=β string, determines type of resolver. It can be:fairβ medium-class resolver. It chooses best possible solution (by overall score) each time. This is a default resolver.fullβ full resolver. Guaranteed to suggest solution in precise order from the best to the worst result score (by the resolver's opinion). Latter means that resolver builds full resolve tree before suggesting the solutions, which means large RAM and speed penalties. Use it with caution.
Corresponding configuration option: cupt::resolver::type
--max-solution-count=β number, determines how many maximum solutions will resolver store in memory. This option prevents large memory grows by purging away solutions with worst scores. Defaults to 32000. Note that very complex requests or requests on multi-repository system will increase size of solution tree dramatically, so prepare to play with increasing this option accordingly.
Corresponding configuration option: cupt::resolver::max-solution-count
--no-install-recommends,-Rβ cupt installs recommended packages by default, this option cancels described behavior.
Corresponding configuration option: apt::install-recommends
--show-archives,-Aβ when displaying actions preview prompt, display also release archives for each package.
Corresponding configuration option: cupt::console::actions-preview::show-archives
--show-codenames,-Nβ when displaying actions preview prompt, display also release codenames for each package.
This option cannot be used together with --show-archives.
Corresponding configuration option: cupt::console::actions-preview::show-codenames
--show-components,-Cβ when displaying actions preview prompt, display also release components for each package.
Corresponding configuration option: cupt::console::actions-preview::show-components
--show-versions,-Vβ when displaying actions preview prompt, display also versions of packages.
Corresponding configuration option: cupt::console::actions-preview::show-versions
--show-vendors,-Oβ when displaying actions preview prompt, display also vendors of packages.
Corresponding configuration option: cupt::console::actions-preview::show-vendors
--show-size-changes,-Zβ when displaying actions preview prompt, display also changes in disk space usage for each package.
Corresponding configuration option: cupt::console::actions-preview::show-size-changes
--show-reasons,--show-deps,-Dβ when displaying actions preview prompt, display also reasons why this action was considered to perform.
Corresponding configuration option: cupt::console::actions-preview::show-reasons
--show-not-preferredβ when displaying actions preview prompt, display also packages which will have a not preferred version after the proposed changes.
Corresponding configuration option: cupt::console::actions-preview::show-not-preferred
--download-only,-dβ stop after download stage, don't modify the system.
Corresponding configuration option: cupt::worker::download-only
--assume-yes,--yes,-yβ don't ask for solution confirmation, assume the answer is 'y' ("yes"), except for dangerous actions, where assume 'q' ("decline and exit").
Corresponding configuration options: apt::get::assume-yes, cupt::console::assume-yes
π management modifiers: action override options π
Unlike all the other options, these ones are positional and are effective only for the rest of parameters (and before next override option if any). One can specify as many action override options as needed.
--installβ install the rest of packages--removeβ remove rest of packages--purgeβ purge the rest of packages--satisfyβ satisfy the rest of relation expressions--unsatisfyβ unsatisfy the rest of relation expressions--iiiβ "install if installed" (see "iii" subcommand) the rest of packages--reinstallβ reinstall the rest of packages--markautoβ mark as automatically installed (see "markauto" subcommand) the rest of packages--unmarkautoβ mark as manually installed (see "unmarkauto") subcommand the rest of packages--asauto=yesβ in addition to following actions, also mark packages as automatically installed--asauto=noβ in addition to following actions, also mark packages as manually installed--asauto=defaultβ reset any previous "--asauto" switches (to default mode, which is: mark newly installed packages (except for satisfy-type actions) as manually installed and preserve auto-status otherwise)
π management modifiers: request type options π
--select=traditional,--stβ for install-type actions, request installing the best of chosen versions for each package; for remove-type actions, request removing the whole package. This is the default.--select=flexible,--sfβ for install-type actions, request installing any of chosen versions for each package; for remove-type actions, request removing only chosen versions for each package.
πΊ management modifiers: request importance options πΊ
--importance=must,--mustβ the following actions must be unconditionally performed, in other words, mandatory. This is the default.--importance=try,--tryβ the following actions are optional, but relatively big (cupt::resolver::score::unsatisfied-try) penalty will be applied for each non-satisfied request--importance=wish,--wishβ the following actions are optional, but relatively small (cupt::resolver::score::unsatisfied-wish) penalty will be applied for each non-satisfied request--importance=<value>β (where <value> is a positive integer) the following actions are optional, but exact penalty of <value> will be applied for each non-satisfied request
πͺ management modifiers: package name suffixes πͺ
-β remove the package, can be used in non-remove actions
Here come the examples, bestie β stay with me π
Examples:
"cupt install kde4 icewm-" - install the package 'kde4' and remove the
package 'icewm' simultaneously.
"cupt full-upgrade iceweasel- icedove-" - upgrade the system, deleting
iceweasel and icedove
+β bestie this one flips the script: it tells cupt to install the package, and you can drop it into remove actions too. It's giving reverse uno energy π
Examples, verbatim, no notes:
"cupt remove kde konqueror+" - remove kde, but install/upgrade konqueror
"cupt remove kde konqueror/installed+" - remove kde, but leave konqueror
π¦ EXPRESSIONS π¦
This section documents some common expressions used by actions. It's the shared vocabulary, the way everyone in the group chat agrees what a "version" even is π
π« Binary package version expression
package_name[modifier]
selects one version of a given binary package. One (1) version. Choose wisely.
Possible modifiers, in a lil list because we love a list:
<none>β selects the policy version of the package. Example:"audacious".=<version string>β selects the specified version of the package. Example:"audacious=1.5.1-2"./<distribution>β selects a version from the specified distribution, and by "distribution" we mean an archive name or a codename. Examples:"audacious/lenny"(that one's by codename),"audacious/stable"(that one's by archive name). Slay./installedβ selects the installed version of the package. Example:"audacious/installed".
Also, you may specify shell wildcards '*' and '?' in the package names. Yes really, go feral with it. Examples: "xfce4-*", "python2.5-*/unstable", "?aff*/installed".
For all management subcommands, there is also '@<path-to-file>' syntax. In this case the construction gets substituted by binary package expressions listed in the specified file, one per line. Chef's kiss, no cap πΈ
π Source package version expression
package_name[modifier]
selects one version of a given source package. Same deal, different package flavour.
Possible modifiers are identical to the ones defined up in "Binary package version expression" β except for /installed, which doesn't exist here. Sorry bestie, that one's binary-only.
Also, you can specify a "Binary package version expression" as a "Source package version expression", and then the binary-to-source mapping will be performed for you. The pipeline is pipeline-ing β¨
π§ Functional selectors
You can also use functional selectors (cupt_functionalselectors(7)) wherever a "Binary package version expression" or a "Source package version expression" is expected. Mix and match, it's your world π
π COMMON OPTIONS π
--option=,-oβ sets the specified configuration option. Syntax:<name>=<value>. Obsessed with how simple that is.
Examples:
"cupt remove nlkt -o 'cupt::resolver::keep-recommends=0'" (regular option)
"cupt remove nlkt -o 'apt::neverautoremove::=libcanberra0" (list option)
--target-release=,--default-release=,-tβ sets the preferred release to pick packages up from. You can specify a codename or an archive name, dealer's choice.
Corresponding configuration option: apt::default-release
Examples: "cupt install -t unstable xserver-xorg", "cupt -t squeeze full-upgrade"
--include-archives=β use only repositories with the specified archive names (comma-separated, bestie).
Corresponding configuration options: cupt::cache::limit-releases::by-archive, cupt::cache::limit-releases::by-archive::type.
Example:
"cupt safe-upgrade --include-archives=stable,stable-updates"
--exclude-archives=β ignore repositories with the specified archive names (comma-separated).
Corresponding configuration options: cupt::cache::limit-releases::by-archive, cupt::cache::limit-releases::by-archive::type.
Example:
"cupt rdepends libcomerr2 --exclude-archives=experimental,unstable"
--include-codenames=β use only repositories with the specified codenames (comma-separated).
Corresponding configuration options: cupt::cache::limit-releases::by-codename, cupt::cache::limit-releases::by-codename::type.
Example:
"cupt safe-upgrade --include-codenames=squeeze,squeeze-updates"
--exclude-codenames=β ignore repositories with the specified codenames (comma-separated).
Corresponding configuration options: cupt::cache::limit-releases::by-codename, cupt::cache::limit-releases::by-codename::type.
Example:
"cupt rdepends libcomerr2 --exclude-codenames=experimental,sid"
--quiet,-qβ don't output anything to standard output. Silence. Shhh. Sometimes that's the whole vibe π«Ά
π CONFIGURATION VARIABLES π
See cupt.conf(5). That's it, that's the section. Go read the other page, it's literally the whole thing π
π’ REPORTING π’
Please report all bugs in Cupt to the Debian BTS using reportbug(1). They want to hear from you, fr fr.
The user support mailing list is cupt-user@lists.alioth.debian.org. The discussion channel about Cupt is irc://irc.debian.org#cupt. Come hang out, the chat is lowkey iconic π
π SEE ALSO π
cupt_vs_apt(5), cupt_tutorial(7), cupt.conf(5), cupt_functionalselectors(7) β the extended cinematic universe, go binge it β¨
π AUTHOR π
Eugene V. Lyubimkin <jackyf@debian.org> β the main character who wrote all of this. Respect the icon π
And that's a wrap on the whole page, bestie! π This one was rendered by perl v5.38.2 on 2024-03-31, and it goes by CUPT(1). Love that for us. Now go run cupt and slay π
π¦π
π¦ where this page comes from
- ubuntu noble: cupt 2.10.4+nmu2build2
- ubuntu resolute: cupt 2.10.4+nmu2build2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms