---
name: "comigrate"
section: "1"
platform: "linux"
package: "coinst"
version: "1.9.3-6+b4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/comigrate"
---

# comigrate(1)

managing package migrations from Debian unstable to testing

## NAME

comigrate - managing package migrations from Debian *unstable* to *testing*

## SYNOPSIS

**comigrate** \[*options*\] \[**--heidi** *file*\] \[**--hints** *file*\]\
 **comigrate** \[*options*\] **--update**\
 **comigrate** \[*options*\] **--migrate** *package*\
 **comigrate** \[*options*\] **--equivocal**\
 **comigrate** \[*options*\] **--excuses** *file* \[**--svg**\]\
 **comigrate** \[*options*\] **--explain** *dir*

## DESCRIPTION

**comigrate** is a tool designed to manage the migration of packages from Debian *unstable* to *testing*. It can be used in different ways. First, it can compute which packages can migrate into testing; it can output either an *HeidiResult* file listing the updated contents of testing, or a set of hints that can be fed to *Britney* to help it perform the migration. Second, it can output detailed reports of what prevents packages from migrating. Last, it can be used to interactively troubleshoot the migration of a given package.

Unless an alternative command is given, **comigrate** will perform package migration and output the corresponding *HeidiResult* file at the location indicated in the configuration file.

## OPTIONS

### Commands

The default behavior of **comigrate** is to compute which packages can migrate from *unstable* to *testing*. This behavior can be overriden by the options below.

- **--equivocal**

  Output the set of packages that can migrate without making any package non-installable but that will make it impossible to install some set of packages together (package co-installability would no be preserved). This makes it possible to find the packages that would be allowed to migrate when using the **--inst** option (preserving only package installability), but that could nonetheless be problematic.

- **--excuses** *file*

  Write to this HTML file a detailed explanation of why some packages cannot migrate. With the **--svg** option, an SVG graph is also included for each installability or co-installability issue (set of packages that one would not be able to install together anymore) that prevents the migration. The **dot** tool is required to produce these graphs.

- **--explain** *dir*

  This command is designed to produce a report that can be published over HTTP. An HTML file is created for each package that cannot migrate, providing a detailed explanation of why this package cannot migrate. A file listing co-installability issues (that is, set of packages that can no longer be installed together) that would result from forthcoming migrations is also created. The **--popcon** option can be used to specify popcon data to use for the report. The **dot** tool is required for this command.

- **--migrate** *package*

  Compute whether it is possible to migrate this source package. If this is indeed possible, a corresponding *Britney* hint is outputted, by default on the standard output (this can be overridden with the **--hints** option).

- **--update**

  Initialize or update the data directory.

### Common Options

- **--arches** *lst*

  Comma-separated list of architectures to consider (default to all).

- **-c** *file***, --config** *file*

  Use this Britney configuration file.

### Package Migration Options

- **--all-hints**

  Show all hints.  By default, hints consisting of a single package are omitted when outputting hints.

- **--break** *sets*

  Override the default migration constraint that set of packages that could be install together can still be installed together after migration (package co-installability).  This option allows to specify that some precise set of packages can become non co-installable (or, in the case of a single package, that this package can become non installable). This is crucial to allow the migration of packages that are no longer compatible. The argument *sets* is a comma-separated list of sets of packages. Each set is either a list of binary package names separated by a vertical bar symbol \|, or a wildcard \_ standing for any package. We explain this option through examples. You can write **--break** *libjpeg62-dev* to state that package *libjpeg62-dev* does not have to remain installable. But it is usually better to indicate that the package should remain installable but that it is fine if it is no longer installable with some other packages: **--break** *libjpeg62-dev,\_*. You can be even more precise and specify that two given packages can become incompatible, but no other incompatibility should be introduced: **--break** *parallel,moreutils*. Finally, you can use the vertical bar symbol to factorize several sets of packages: **--break** *'unoconv,python-uno\|docvert-libreoffice'* means that package *unoconv* does not have to remain installable together with *python-uno* nor *docvert-libreoffice*.

- **--heidi** *HeidiResult*

  Write the result of package migration to file *HeidiResult*. When *HeidiResult* is **-**, write to standard output. The option only make sense when no specific command is given.

- **--hints** *file*

  Output hints to this file. When *file* is **-**, write to standard output. This disable the ouput of the *HeidiResult* file, unless an explicit **--heidi** option is provided as well.

- **--inst**

  When computing possible migration, only preserves single package installability. This is similar to what *Britney* does. The default is to ensure the stronger requirement that set of packages that could be install together can still be installed together after migration (that is, package co-installability).

- **--offset** *n*

  Move *n* days into the future. This is convenient to see what packages will be able to migrate in a few days.

- **--remove** *pkg*

  Compute package migration as if the source package *pkg* and its associated binary packages had been removed from *unstable*. This is a convenient way to migrate an important package when its migration is prevented by packages of low importance. Together with the **--migrate** command, this option can help finding out all issues preventing the migration of a given package.

### Command-Specific Options

- **--svg**

  Include conflict graphs (in SVG format) in excuse output. This option only makes sense together with the **--excuses** option.

- **--popcon** *file*

  Use popcon data from this file. This option only makes sense together with the **--explain** option.

- **--source** *url*

  Download package information from the given url. This option only makes sense together with the **--update** option.

### Miscellaneous Options

- **--debug** *name*

  Activate debug option *name*. Use **--debug help** to list available debug options.

- **-help**, **--help**

  Print a usage message  briefly  summarizing  the command-line options.

- **--input** *dir*

  Select the directory containing Britney data.

- **--no-cache**

  Disable on-disk caching.

- **--proc** *n*

  Provide number of processors.  Use 1 to disable concurrency. Defaults to use all processors.

### Ignored Options

These two *Britney* options are currently ignored and are present only for compatibility.

- **--control-files**

  Currently ignored.

- **-v**

  Currently ignored.

## EXAMPLES

To get started, you need to use a *Britney* configuration file *britney.conf*. The files specifies in particular the location of migration data (control files, hint files, ...). These data can then be downloaded (or updated) with the command below.

   comigrate -c britney.conf --update

Running **comigrate** without option will make it behave like *Britney*: it will compute the set of packages that can migrate and write a corresponding *HeidiResult* file at the location indicated in the configuration file.

   comigrate -c britney.conf

By default, **comigrate** is more picky than *Britney*: it will not allow packages to migrate if any set of packages that could be installed together can no longer be installed together. With the **--inst** option, **comigrate** will only check that packages remain installable, just like *Britney* does.

   comigrate -c britney.conf --inst

Alternatively, you can get the set of *Britney* easy hints corresponding to the migration.

   comigrate -c britney.conf --hints - --all-hints

The **--migrate** option will give you an explanation of why a package cannot migrate. (If the package can in fact migrate, the corresponding easy hint will be printed.)

   comigrate -c britney.conf --migrate ghc

The **--remove** and **--break** options can be used together with this option to get a clear understand of what needs to be done to migrate the package.

## AUTHOR

Comigrate has been written by Jérôme Vouillon.

## SEE ALSO

[**dot**(1)](/dot/1.md)\
 The tool Web page: \<**http://coinst.irill.org/comigrate**\>.
