CUPT(1)

πŸ“¦
version 2.10.4 Β· 4 versions
, in ubuntu noble, ubuntu resolute

πŸ¦‹ 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

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 (see cupt_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 --recurse is 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

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 the show, depends, rdepends, search, pkgnames, and changelog actions

🧚 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