Zero Install is a decentralized cross-platform software-installation system. It allows software developers to publish programs directly from their own web-sites, while supporting features familiar from centralized distribution repositories such as shared libraries, automatic updates and digital signatures.
v2.3 [Aug 2, 2013]
0install 2.0 brings many enhancements to the XML metadata syntax used to describe packages and their dependencies, allowing a more precise specification of their requirements. Support for using distribution-provided packages as dependencies was extended and now covers Arch Linux, Cygwin, Darwin, Debian, Fink, FreeBSD Ports, Gentoo, MacPorts, Mint, openSUSE, Red Hat, Slackware and Windows. The 0install software now supports apps, an easier way to manage 0install applications, improved diagnostics when no compatible versions can be selected, improved usability, and better support for use on headless servers.
The Ryppl project is using 0install as the package manager for a modular C build system, starting with a modularised C Boost library. This has driven many of the enhancements in 2.0, such as support compiling 0install packages on Windows. We hope that 0install will one day replace many of the language-specific packaging systems currently in use.
Extensions to the XML feed format
The 2.0 feed format is 100% backwards compatible with the 1.0 format (all software distributed for 1.0 will also work with 2.0). The new features are:
Optional dependencies
We try to select the best available version of the dependency, but it's OK if nothing can be selected (this is useful if a dependency isn't available on all platforms):
...
OS-specific dependencies
For dependencies that are only needed on Windows, etc:
...
Restrict-only dependencies
These let you specify constraints/conflicts on the acceptable versions of another interface without requiring that interface to be selected at all:
Dependencies for native packages
These are useful when a distribution package is only for a particular major version of another interface:
Restrictions on distribution type
Some native packages only work with other packages from the same distribution. For example, MacPorts Python libraries only work with the MacPorts Python:
The value can be any valid distribution name (e.g. 'RPM'), or '0install' to force a 0install implementation, not a package implementation.
More flexible version syntax
The new 'version' attribute provides a shorter and more flexible way to specify the compatible versions:
This allows any version from 2.6 up to (but excluding) 3, or version 3.2 or later. However, the previous syntax using should be used where possible, since it works with all versions of 0install.