mccs(1)
π mccs β the Debian User's Manual moment
okay bestie, welcome to mccs, a.k.a. the Multi Criteria CUDF Solver, and she is that girl when it comes to package dependency problems β¨
β¨ NAME β¨
mccs β package dependency solver π
πΈ SYNOPSIS πΈ
mccs [options]
π¦ DESCRIPTION π¦
So mccs literally stands for Multi Criteria CUDF Solver, and no cap, she solves package dependency problems written in the CUDF format. By default she reads the problem spec from standard input, and drops the solution right onto standard output. Iconic behaviour, honestly. π
π OPTIONS FOR CONTROLLING INPUT/OUTPUT π
-ifile β read the input from file instead of from standard input, bestie.-ofile β write the solution to file instead of standard output.-foβ full solution output π-vn β set the verbosity level to n.-hβ print this help π«Ά
π₯ OPTIONS FOR SELECTING THE SOLVER ENGINE π₯
By default, mccs uses the cbc solving engine. that's just her default main character energy, periodt.
-lpsolveβ use the lpsolve solver.-lplpsolver β specify a solving engine that takes the cplex input format. lpsolver is the path of a script that takes as input the file name containing the cplex input, and that produces the solution on standard output. (an example for scip is given in/usr/share/doc/mccs/engines/sciplp) π§-pblibpbsolver β use the pseudo-Boolean solver pbsolver as the solving engine.-nosolveβ do not solve the problem (it's for debugging, lowkey)
π OPTIONS FOR CONTROLLING CONSTRAINT GENERATION π
-noreduceβ do not reduce the initial problem.-only-agregate-constraintsβ generate only agregate constraints.-only-desagregate-constraintsβ generate only deagregate constraints (default, so this is the one she's on unless you say otherwise).-all-constraintsβ generate all kind of constraints (ensure redundancy).
π OPTIONS FOR CONTROLLING OPTIMIZATION π
for the full grammar of optimization criteria, go read the file /usr/share/doc/mccs/README.optimization-criteria. it's giving required reading, fr fr π
π EXAMPLES π
an example input file can be found at /usr/share/doc/mccs/examples/legacy.cudf.
mccs -i legacy.cudf
this calls mccs on examples/legacy.cudf and prints the solution on stdout. with a call like this, mccs will resort to the default underlying solver cbc and use a default criterion to solve the problem. simple, clean, slay. β¨
mccs -i legacy.cudf -o sol -lexagregate[-removed,-changed]\
-lpsolve
here, mccs puts the solution into the file "sol" and solves the problem using the lpsolve solver with the paranoid criterion, which consists of first minimizing the number of removed packaged, and then the number of packages that change installation status or installed version. π (yes it says "packaged", we're not touching it, the manpage said what it said)
mccs -i legacy.cudf -o sol \
-lexsemiagregate[-removed,-notuptodate,\
-nunsat[recommends:,true],-new]
the criterion used here is the trendy criterion, which consists of first minimizing the number of package removals, then to minimize the number of installed packages that are installed in a version older the most recent available version, then to minimize the number of recommendations of installed packages that are not satisfied, and finally the number of newly installed packages. she's trendy for a reason π
π AUTHOR π
mccs has been written by Claude Michel <cpjm@polytech.unice.fr>. the development of mccs has been partly supported by the European research project Mancoosi. π«Ά
okay that's the whole thing, you ate that π this was the Debian User's Manual page for mccs(1), dated 9 May 2011. go solve some dependencies bestie, i'm obsessed with you πβ¨π¦
π¦ where this page comes from
- debian bookworm: mccs 1:1.1-10 Β· BSD-3-Clause
- debian trixie: mccs 1:1.1-10+b2 Β· BSD-3-Clause
- ubuntu jammy: mccs 1:1.1-9 Β· BSD-3-Clause
- ubuntu noble: mccs 1:1.1-10build1 Β· BSD-3-Clause
- ubuntu resolute: mccs 1:1.1-10build1 Β· BSD-3-Clause
- ubuntu stonking: mccs 1:1.1-10build1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms