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 πŸ’…

  • -i file β€” read the input from file instead of from standard input, bestie.
  • -o file β€” write the solution to file instead of standard output.
  • -fo β€” full solution output πŸ‘‘
  • -v n β€” 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.
  • -lp lpsolver β€” 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) 🧚
  • -pblib pbsolver β€” 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