Debian Mono Group

Solving the /usr/bin/csc name clash

The Mono 2.0 transition caused the introduction of a new binary in $PATH: /usr/bin/csc. That's a generic name for the Mono compiler, which is CLR-independent (CLR 1.0 had "mcs", CLR 2.0 had "gmcs", so to avoid further transitions in future, we simply made "csc" to call the right compiler on each transition for new CLRs).

/usr/bin/csc has historically been the Chicken Scheme Compiler (chicken-bin in Debian GNU systems), so we now have a file clash to be resolved. There's only one easy solution: renaming our file to something safer (alternatives aren't a solution, since they do not provide the same functionalities).

Proposal Draft





Used by the alternatives system, would be a symlink to /etc/alternatives/cli-csc, which would be handled by update-alternatives(8)

Already covered by our CLI Policy


Mono namespace. All current Mono tools (al, ilasm, resgen, [..]) would then be renamed as mono-$name. This would ensure we don't have any more filename clashes with other packages

-dev plan needed


DotGNU Portable.NET namespace. This hasn't been fully packaged yet, so it would be easy to support :)

The mono* packages implementing this "transition" would then need to Conflict&Replace the strictly older revision (i.e. if the package is -4, conflict&replace with -3). All CLI packages (Applications/Libraries) would then need to Depend on that particular revision, and the patches already done for the aforementioned transition should be updated (i.e. we patched using CSC=csc → update it to CSC=cli-csc [0]).

[0] this means that the package would also compile using the DotGNU Portable.NET framework. If this is not the case, then we would need to fix it to CSC=mono-csc, or kinda.