Zero Install: Comparison with other systems
This matrix shows some desirable features in a packaging system, and shows which systems provide them. Obviously, these things tend to be a bit biased (both in terms of what features are chosen for comparison, and of what is considered to be a 'pass') but it should give the general idea.
| Feature | Source tarball | APT | Autopackage | Klik | Java WS | Zero Install |
|---|---|---|---|---|---|---|
| Users can install software | Yes | No | Yes | Yes | Yes | Yes |
| Dependencies handled automatically | No | Yes | Yes | No | Yes | Yes |
| Automatic upgrading | No | Yes | No | No | Yes | Yes |
| Libraries shared between programs | Yes | Yes | Yes | No | Yes | Yes |
| Downloads shared between users | No | No user downloads | No | No | No | Yes |
| Multiple versions coexist | Yes | No | No | Yes | No | Yes |
| Uninstall | Sometimes | Yes | Yes | Yes | (cache) | (cache) |
| Digital signatures | No | Yes | No | No | Only one | Yes |
| Conflict-free | No | No | No | Yes | Yes | Yes |
| Decentralised | Yes | No | Yes | No | Yes | Yes |
| Non-root install of system | Yes | No | Yes | Yes | Yes | Yes |
| All programming languages | Yes | Yes | Yes | Yes | Only Java | Yes |
| Supports sandboxing | No | No | No | No | Yes | Yes |
| Usable when off-line | Yes | Yes | Yes | Yes | Yes | Yes |
| Thousands of packages available | Yes | Yes | No | Yes | Unknown | No |
Explanation of features
- Users can install software
- A user without root privileges can install software using this system (without unreasonable extra effort).
- Dependencies handled automatically
- If a program requires some library to function, the system will locate, download and install the library too.
- Automatic upgrading
- The system can check for and install upgrades automatically or at the operator's request. User does not have to perform a full install operation manually on each package.
- Libraries shared between programs
- If two programs use the same library, the library is only downloaded and stored once. Upgrading a library will benefit all programs that use it.
- Downloads shared between users
- If two users install/use the same program, it is only downloaded once and stored once.
See Sharing for how to set this up with Zero Install. - Multiple versions coexist
- Two versions of a program or library can be installed at the same time, and the user can choose which one to run.
- Uninstall
- Programs can be cleanly removed from the system easily (reversing the effects of the install).
- Signatures
- Software comes with a digital signature, which is checked automatically by the system.
Note: Java Web-Start requires all components to be signed with the same key. - Conflict-free
- If program A requires an old version of a library, and program B requires a new version, A and B can both be installed and used at the same time. The system will never refuse to install one program because some other program is installed.
- Decentralised
- A program packaged for this system can be installed easily, without having to be in some special centralised repository.
Notes: Debian allows extra repositories to be added, but this is a manual step, requires root access, and is a considerable security risk. - Non-root install of system
- The packaging system itself can be easily installed without administrator privileges, and the normal selection of software will be available.
- All programming languages
- All types of program can be accessed using this system.
- Supports sandboxing
- If you have a way of running an application in a sandboxed environment (eg, a Java virtual machine), then the
installation system will let you install and run the program without forcing you to run any of the downloaded
code outside of the sandbox.
The easiest way to get sandboxing with the injector is to run it twice: once in download-only mode with write access to the cache, and then again in offline mode with read-only access to actually run the program. To control access, you can use a program such as Plash, e.g.:plash$ !!0launch --download-only 'http://0install.net/2006/interfaces/0publish' plash$ 0launch --offline 'http://0install.net/2006/interfaces/0publish' + ~/.cache ~/.config
This downloads and runs the 0publish program (which will display its help message) without granting it write access to anything. Even if it contained a bug which made it try to delete all your files, plash should prevent it from doing any harm. If you use it to process a file, you can give it write access to just that file by using => in the normal plash manner. In future versions, this should all be made automatic, so you don't have to run 0launch twice. - Usable when off-line
- Once a program has been installed, the program can be run again while disconnected.
- Thousands of packages available
- The system is widely adopted.
See also
- The links page (lists some related projects, with a summary of each)
- Klik Comparison (similar to this page, but from Klik's perspective)
- Comparing Linux/UNIX Binary Package Formats (by Joey Hess, author of Alien)