Zero Install Injector 0.24 review

by on

Zero Install Injector project makes it possible for users to install software easily and without the need for root privileges. It

License: GPL (GNU General Public License)
File size: 0K
Developer: Thomas Leonard
0 stars award from

Zero Install Injector project makes it possible for users to install software easily and without the need for root privileges.

It takes the URL of a program's interface description and chooses suitable versions of the program and all of its dependencies (also identified by URLs) according to the user's policy settings (eg. "stable", "testing", "minimal network use", etc).

The chosen versions are downloaded and cached and the program is run, using environment variables to let it find the components.

A running process is created by combining many different libraries (and other components). In the Zero Install world, we have all versions of each library available at all times. The problem then is how to choose which versions to use.

The injector solves this problem by selecting components to meet a program's requirements, according to a policy you give it. The injector finds out which versions are available, and downloads and runs the ones you choose

Python (version 2.3 or later, including any -dev package).
GnuPG (to check the digital signatures).
PyGTK 2.2 or later (only needed for the GUI).
My GPG key. You can download and import it with:

$ gpg --recv-key --keyserver 59A53CC1

What's New in This Release:
Added --before and --not-before options to 0launch. This lets you restrict the acceptable versions of the root interface.
Added support for more complex version numbers. The new grammar is:

Version := DottedList ("-" Mod? DottedList?)*
DottedList := (Integer ("." Integer)*)"""
Mod := "pre" | "rc" | "post"

For example: "1.0-pre2" < "1.0-rc1" < "1.0" < "1.0-post" < "1.0-post5-pre1"

Added a 'version-modifier' attribute for s. If present, its value is appended to the version. This allows the use of modifiers without breaking older versions of the injector.
Added support for 0compile's min-version attribute, so that instead of complaining that the version selected is too old, we actually select a suitable version in the first place.
Make XDG_CACHE_DIRS default to /var/cache, not the empty list. This makes it easier to create live CDs with the required interfaces pre-cached (you no longer have to set XDG_CACHE_DIRS to make it work).
When opening the cache explorer, import GTK only after forking, so that ATK doesn't crash when accessibility is being used (reported by Guillaume Millet).
Added support for .cab archives (requested by Thomas Formella).
Check that 'gpg' is available, as Python's execvp gives a useless error message if not (reported by Adam Metcalf).
Better message than "Unsupported machine type" for source code.
Split Properties dialog into two tabs.
Added a list area displaying the feeds.
Remote feeds can now be added, and feeds can also be removed.
Added new key for Lennon Cook (previous one lost).
Added 'Compile' button to interface properties window. This will compile a binary using 0compile and register it as a feed, if source is available.

Python API changes:

Added lots of documentation for epydoc. See:
Store metadata (extra attributes) on Dependency objects. This is needed by 0compile to indicate whether a dependency is just build-time, or whether it should be copied to the binary.
Removed unused reader.get_singleton_text.
Marked reader's process_depends parse_time and merge_attrs functions as private.
cli.main takes an argument, instead of using sys.argv
iface_cache's import_new_interface marked private
Policy.root_restrictions is now public.
Made format_version() a top-level function so you don't need an Implementation to use it.
Moved much of the compile GUI out into 0compile.

Zero Install Injector 0.24 search tags