Ubuntu – How to create a Debian package with disjoint/alternate dependencies


I have written an application, and I'm now interested in creating a Debian package and setting up a PPA. The application is written primarily in XSLT, and includes a very thin front-end that can be written in any language that can access an XSLT processor. I currently have front-ends written in JavaScript (able to run in the browser client, and from the command-line under Rhino) and Python. I'd also like to write a front-end entirely in bash, and simply use one of the command-line XSLT processors available in apt.

There are several available via apt, including xsltproc, xalan, and 4suite's xslt processor. I'd like to make the bash front-end flexible so that it is able to use any of these command-line clients, and will simply use whichever is available.

How can I best express in terms of Debian's package dependency system the relationship between my package and these three other packages, which is a logical disjunction (OR relationship)?

My package relies on xsltproc OR 4suite OR xalan. Ideally, when my package is installed, the user should be prompted to choose any of these three package to install as a dependency; and if one of these packages is already installed on the system when my package is installed, then no additional dependencies should be installed. Is such a thing possible with Debian packages?

Best Answer

OR relationships can be expressed like xsltproc | 4suit | xalan in the Depends: field for the binary package in debian/control. The first package on the list will be preferred when none of them are currently on the system.

For further details, see http://www.debian.org/doc/debian-policy/ch-relationships.html

Related Question