0install

Aus Open Source Ecology - Germany
Version vom 21. Dezember 2016, 05:39 Uhr von Jan R.B.-Wein (Diskussion | Beiträge) (Add dependency filename aliasing as huge benefit of the development setup.)
Zur Navigation springen Zur Suche springen

Why

0install is used as cross-platform dependency resolver for not having to package the projects' releases for multiple package managers. This allows:

  • modular, flexible development (single source principle).
  • using the same toolchain for developing all kinds of projects (not only code)
  • on all operating systems.
  • version control.
  • distributing, depending on modules in any revision and not only a certain release. (Releasing/tagging revisions is optional for development but still useful for indicating stable versions.)
  • automatic backup of projects.
  • easy testing of modules locally without breaking the system due to multiple versions of a package.
  • developer interaction (world wide team work) without being forced to release just to allow other developers to fetch the new changes (because Git is the base system)
  • users turning into developers with ease (because 0install is used for releases and can fetch the sources, i.e. the Git repository contents).
  • easily fetching, inspecting the sources of a project in a certain version. (e.g. to debug or further develop / fork a local version, this can be rebased later on)
  • preventing dependency mess.
  • linear project history (not mandatory but possible) and all other Git powers.
  • having the 0install XML file under version control where it belongs: in the same repository where the project sources reside.
  • aliasing filenames a project depends upon to a functional general name to be able to exchange a file (e.g. a used image or schematic) later without updating all used references e.g. in FreeCAD or blender files (which may be binary where search replace does not work easily).


How to package

A module package version is released directly in the Git repository. (see epic 0install <-> git interaction outlined under #Why

It is packaged using the repository contents. => No magic extra ingredients to be figured out, then merged.

The resulting package can be hosted in the version control repository but it might be desirable to have it separate for big release data amounts. The package URI is provided in the 0install XML file.


How to install, depend on a module

Install a module / package:

   0install add <repository.uri>/<module>.xml

Depend on a module by using the 0install XML file URI of the corresponding module repository.