Renaming a Debian package

Recently, the authors of lincvs decided to rename the software to crossvc. This put me as the current maintainer of the lincvs Debian package into a new situation: How do I rename a Debian package? It turned out that this is indeed not so trivial, especially when a seamless upgrade should be possible with apt-get dist-upgrade. After a short web research, it turned out that the following steps are necessary:

  • Create a new package with the new name which will get uploaded to the NEW queue. This package Replaces, Provides and Conflicts with the old package: Replaces: oldPackage Provides: oldPackage Conflicts: oldPackage (<< firstVersionOfNewPackage) Replaces and Conflicts are obvious, and Provides assures that other packages which depend on the old package still can satisfy their dependency.
  • Once the package has moved from the NEW queue to unstable, create a new revision of the old package which serves as dummy package. It does not install any files (except the mandatory ones in /usr/share/doc) and depends on the new package.
  • Finally, after the current testing distribution has been released, file a bug asking ftpmaster to remove the old, dummy package.
I asked on debian-devel whether this is the correct approach, and it seems to. There is still some discussion ongoing whether the new package can itself provide the dummy binary packages of the old package. This would make the process much simpler … [UPDATE] It turned out that is indeed possible to skip the step of uploading a new revision of the old package when the new package has left the NEW queue. A source package can own other binary packages which are already in the archive, and takeover ownership once they are uploaded. So, for the seamless upgrade, the new package simply needs to create a new binary version of the old package which depends on the new package: Package: oldpackage Architecture: any Depends: newpackage