CUDF Solver Farm

CUDF is a file format for the description of dependencies between packages, designed by the Mancoosi team, at IRILL. This format is used by modern package managers (such as OPAM) to communicate with solvers (such as aspcud), to find the near optimal set of modifications to perform (installation, upgrade, removal) to move a computer from one configuration to another one.

This solver farm can be used to get the power of the most efficient CUDF solvers through the network, without having to install them on your computer.

OPAM Configuration

OPAM is the package manager developed by OCamlPro to manage contributions in the OCaml language, edited by INRIA.

To use our CUDF solver farm from OPAM, here is the procedure to follow:

  1. Download the cudf_remote_proxy script here:


    Note that this script will assume that curl is installed on your system, and will be much faster if bzip2 is present as well.

  2. Make it executable:

    % chmod +x cudf_remote_proxy
  3. Copy it in a directory accessible from your PATH (for example, the one where opam is installed):

    % which opam
    % mv cudf_remote_proxy /usr/local/bin/
    mv: cannot move `cudf_remote_proxy' to `/usr/local/bin/cudf_remote_proxy': Permission denied
    % sudo mv cudf_remote_proxy /usr/local/bin/
  4. Test that it works:

    1. Download this example file.

    2. Run the script on it (with a working network connection !):

      cudf_remote_proxy example.cudf example.result -removed,-notuptodate,-changed
    3. The script should contact the server farm, and generate a file example.result similar to this one.

  5. Use with opam

  6. With a recent version of opam, you can just type opam --solver=cudf_remote_proxy, or set the appropriate environment variable by adding to your shell profile:
    • OPAMEXTERNALSOLVER=cudf_remote_proxy (opam < 1.2.1);
    • OPAMEXTERNALSOLVER="cudf_remote_proxy %{input}% %{output}% %{criteria}%" (opam >= 1.2.1).

    A less elegant solution that works even with old versions of opam is to just copy cudf_remote_proxy to aspcud:

    % cp /usr/local/bin/cudf_remote_proxy /usr/local/bin/aspcud
  7. You are done ! Enjoy !

Cache and Statistics

The solver farm keeps a cache of the requests. This allows to provide faster answers and may in the future be used to compute various kinds of statistics. We do not log the IP from which the request orginates.


If you have problems using the farm, put a bug report on our bug tracker.