## SYNOPSIS

**mccs**[

*options*]

## DESCRIPTION

mccs (which stands for Multi Criteria CUDF Solver) is a solver for package dependency problems expressed in the CUDF format. By default, mccs reads a problem specification from standard input, and writes the solution to standard output.

## OPTIONS FOR CONTROLLING INPUT/OUTPUT

**-i***file*-
Read input from file
*file*instead of standard input. **-o***file*-
Write the solution to
*file*instead of standard output. **-fo**- full solution output
**-v***n*-
set verbosity level to
*n*. **-h**-
print this help

## OPTIONS FOR SELECTING THE SOLVER ENGINE

By default, mccs uses the cbc solving engine.**-lpsolve**- use 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 pseudo-Boolean solver
*pbsolver*as solving engine. **-nosolve**-
do not solve the problem (for debugging)

## 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)
**-all-constraints**-
generate all kind of constraints (ensure redundancy)

## OPTIONS FOR CONTROLLING OPTIMIZATION

See the file /usr/share/doc/mccs/README.optimization-criteria for a full grammar of optimization criteria.

## EXAMPLES

An example input file can be found at /usr/share/doc/mccs/examples/legacy.cudf.

mccs -i legacy.cudf

calls mccs on examples/legacy.cudf and prints the solution on stdout. With such a call mccs will resort to the default underlying solver cbc and use a default criterion to solve the problem.

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.

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.
` `

## AUTHOR

mccs has been written by Claude Michel <[email protected]>. The development of mccs has been partly supported by the European research project Mancoosi.