Added "0install apps"
[zeroinstall.git] / 0install.1
blob508117f07cc3d82e2ebb84573e1187fdd1660a61
1 .TH 0INSTALL 1 "2012" "Thomas Leonard" ""
2 .SH NAME
3 0install \(em a decentralised software installation system
5 .SH SYNOPSIS
7 .SS Downloading and running:
9 .B 0install select \fBURI\fP
11 .B 0install download \fBURI\fP
13 .B 0install run \fBURI\fP [\fBARG\fP]...
15 .B 0install update \fBURI\fP
17 .SS Applications:
19 .B 0install add \fBNAME\fP \fBURI\fP
21 .B 0install update \fBNAME\fP
23 .B 0install whatchanged \fBNAME\fP
25 .B 0install apps
27 .B 0install destroy \fBNAME\fP
29 .SS Other commands:
31 .B 0install config [NAME [VALUE]]
33 .B 0install import \fBFEED\fP
35 .B 0install list \fBPATTERN\fP
37 .B 0install add-feed [\fBINTERFACE\fP] \fBFEED\fP
39 .B 0install remove-feed [\fBINTERFACE\fP] \fBFEED\fP
41 .B 0install list-feeds \fBURI\fP
43 .B 0install digest \fBDIRECTORY\fP | \fBARCHIVE\fP [\fBEXTRACT\fP]
45 .SH DESCRIPTION
46 .PP
47 Zero Install is a decentralised cross-distribution software installation
48 system. Programs and libraries are identified by URIs, and there is no need
49 for a central repository. Zero Install ensures that packages cannot conflict
50 with each other and that programs can be shared between mutually untrusting
51 users. See the web-site for more information:
53 http://0install.net/
55 The simplest case is to ask 0install to run a program, given its URI. For
56 example:
58 .B 0install run http://rox.sourceforge.net/2005/interfaces/Edit
60 .PP
61 The first time you do this, details about available versions of the program are
62 downloaded and cached, along with details about any libraries it depends on.
64 Zero Install will run a solver to select the best version of each component
65 to use. For example, it will select binaries that are compatible with your
66 CPU and operating system, in your preferred language, and marked "stable" (by
67 default).
69 If $DISPLAY is set, 0install will display a window where you can confirm (or
70 change) the selected versions.
72 It will then download the corresponding archives for those versions and store
73 them in the cache too. Each package unpacks to its own directory.
75 Finally, 0install will launch the program, setting environment variables to
76 let it locate its libraries.
78 .SH GLOBAL OPTIONS
80 The first non-option argument to 0install is the particular sub-command you
81 want to perform; these are described in detail in the next section.
83 However, there are some options that apply to all operations. These are:
85 .TP
86 \fB\-c\fP, \fB\-\-console\fP
87 Never use the GUI. Normally, 0install switches to graphical mode if it needs to
88 download anything from the network (unless DISPLAY is not set).
90 .TP
91 \fB\-h\fP, \fB\-\-help\fP
92 Show the built-in help text.
94 .TP
95 \fB\-o\fP, \fB\-\-offline\fP
96 Run in off-line mode, overriding the default setting. This prevents 0install
97 from checking for updates, and from downloading updates even if it knows about
98 them.
101 \fB\-v\fP, \fB\-\-verbose\fP
102 More verbose output. Use twice for even more verbose output.
105 \fB\-\-with\-store=DIR\fP
106 Append a directory to the list of implementation caches. Each sub-directory
107 of DIR contains the contents of one version of a program or library.
109 .SH SUB-COMMANDS
111 .SS 0install select [OPTIONS] URI
114 Select a version of the program identified by URI, and compatible versions of
115 all of its dependencies. The information about available versions is
116 downloaded if it's not yet in the cache.
119 The URI can be an HTTP URL, such as
120 `http://site/program.xml', a local path name like `file:///path/to/program.xml',
121 or an alias like `alias:prog'.
124 For HTTP URLs, the remote file is a signed XML document. If the key is not
125 known and trusted, you will be prompted to accept it first. Local feed files
126 are not signed (any signature will be ignored). Aliases are created using
127 0alias(1).
130 You can also specify a local selections document, as created previously using
131 the \fB\-\-xml\fP option, rather than a feed. In that case, 0install simply
132 uses those versions without running the solver.
135 After selecting (but not downloading) a set of versions, the selection is
136 displayed in a human-readable format. Use \fB\-\-xml\fP to get
137 machine-readable output.
140 If a set of versions cannot be selected using the cached information, 0install
141 will check for updates first.
144 If a set of versions can be selected based on the currently-cached information,
145 but that information is getting stale, 0install will immediately return the
146 current selection and will also start a background process to check for updates.
147 The `freshness' configuration setting controls when cached information is
148 considered to be stale.
151 Options for select:
154 \fB\-\-before=VERSION\fP
155 Select a version earlier than VERSION (i.e. force the use of an old version of
156 the program). You can only restrict the version of the program itself using this
157 option, not the version of any dependencies.
160 \fB\-\-command=COMMAND\fP
161 Some programs provide multiple commands. This selects which one you want. Common
162 values are `run' (the default), `test' (used by 0test) and `compile' (used by
163 0compile). You can also use \fB\-\-command=""\fP if you don't want to run any
164 command (for example, if the package contains data rather than a program).
167 \fB\-\-message=MESSAGE\fP
168 If we show a dialog box for the download, display MESSAGE to the user to
169 explain why the download is needed.
172 \fB\-\-not\-before=VERSION\fP
173 The selected version must not be earlier than VERSION.
174 e.g. if you want to run version 2.0 or later, use \fB\-\-not\-before=2.0\fP.
177 \fB\-\-refresh\fP
178 Download a fresh copy of all used feeds before selecting. Normally, cached
179 copies will be used if available (checking for updates later, in the
180 background).
183 \fB\-\-source\fP
184 Select source code rather than a binary. This is used internally by `0compile'.
187 \fB\-\-xml\fP
188 Print the set of chosen implementations as an XML document to stdout. This can
189 be used later with the `download' and `run' sub-commands.
193 `select' returns an exit status of zero if it selected a set of versions, and
194 a status of 1 if it could not find a consistent set.
197 .SS 0install download [OPTIONS] URI
199 This behaves similarly to `0install select', except that it also downloads the
200 selected versions if they are not already cached. Unlike `select', it does not
201 print the selected versions by default.
203 All options for `select' can also be used for `download'. In addition, these
204 options are available:
207 \fB\-\-show\fP
208 Print the selected versions in a human-readable format to stdout.
211 `download' returns an exit status of zero if it selected a suitable set of
212 versions and they are now all downloaded and in the cache. It returns a
213 status of 1 otherwise.
216 .SS 0install run [OPTIONS] URI [ARGS]
219 This behaves similarly to `0install download', except that it also runs the
220 program after ensuring it is in the cache.
223 To avoid having to keep typing the full URI, use the 0alias(1) command
224 to create shortcuts to run your programs.
227 All options for `select' and `download' can also be used for `run'. In
228 addition, these options are available:
231 \fB\-m\fP, \fB\-\-main=MAIN\fP
232 Run the specified executable instead of the default. If MAIN starts with '/'
233 then the path is relative to the implementation's top-level directory,
234 whereas otherwise it is relative to the directory containing the default
235 MAIN program. For example, if the default MAIN is \fBbin/svn\fP then
236 using \fB\-\-main=svnadmin\fP will run \fB.../bin/svnadmin\fP instead.
237 This option has been largely superseded by the newer \fB\-\-command\fP option.
240 \fB\-w\fP, \fB\-\-wrapper=WRAPPER\fP
241 Instead of executing the chosen program directly, run \fBWRAPPER PROGRAM ARGS\fP.
242 This is useful for running debuggers and tracing tools on the program (rather
243 than on 0install!). Note that the wrapper is executed in the environment selected
244 by the program; hence, this mechanism cannot be used for sandboxing. See the
245 DEBUGGING section below.
248 `run' returns an exit status of 1 if the download step failed. Otherwise,
249 the exit status will be the exit status of the program being run.
251 .SS 0install update [OPTIONS] URI
254 Check for updates to the program and download them if found. This is similar to
255 \fB0install download \-\-refresh\fP, except that it prints information about
256 whether any changes were found.
259 The options are the same as for `select'.
261 .SS 0install import FEED
264 Import a feed from a local file, as if it had been downloaded from the network.
265 This is useful when testing a feed file, to avoid uploading it to a remote
266 server in order to download it again. The file must have a trusted digital
267 signature, as when fetching from the network.
270 It is also useful when installing a feed from a CD or similar. Note: to create
271 a full bundle, for archiving or distribution on CD, see 0export(1).
273 .SS 0install add-feed [INTERFACE] FEED
276 Register an additional source of implementations (versions) of a program.
279 For example, when you check out a developer version of a project, it may
280 contain an XML feed file. To add this version to the list of available
281 versions, use `add-feed' on the XML file. The file is not copied, so you don't
282 need to re-add the feed each time it is updated. You will probably also want to
283 set the `help_with_testing' configuration option to ensure that testing
284 versions are selected by default.
287 Note that if you just want to run the program, you can invoke 0install on the
288 feed file directly (without using `add-feed'). This will force the it to
289 use that version, but won't affect what happens when you run it using the URI
290 as normal. Use `add-feed' when you want to use the developer version even when
291 using the URI, or if the program is a library (and thus referenced by URI by
292 other programs).
294 .SS 0install remove-feed [INTERFACE] FEED
297 Un-register a feed, reversing the effect of `add-feed'. If INTERFACE is not
298 given, you will be prompted to choose which INTERFACE to remove it from.
300 .SS 0install list-feeds URI
303 List all extra feeds added to URI using `add-feed'.
305 .SS 0install list PATTERN
308 List all known interface (program) URIs. If a search term is given, only
309 URIs containing that string are shown (case insensitive).
311 .SS 0install config [NAME [VALUE]]
314 View or change configuration settings.
317 With no arguments, `0install config' displays all configuration settings.
318 With one argument, it displays the current value of the named setting.
319 With two arguments, it sets the setting to the given value.
321 .SS 0install digest DIRECTORY | ARCHIVE [EXTRACT]
324 Calculate the secure hash of an implementation. This is a unique "fingerprint" of
325 a directory and all the files and subdirectories it contains. When publishing a
326 program using 0install, this value must be placed in the XML file.
329 \fB\-m\fP, \fB\-\-algorithm=HASH\fP
330 Select the secure hash function to be used. Supported values are "sha1new" (the
331 default) or "sha256".
334 If an archive is given then the hash is for the directory that would be created if
335 the archive were unpacked (or the EXTRACT subdirectory of it, if one is specified).
336 See also: 0store(1)'s manifest command.
338 .SS 0install --version
339 This can be used (without any command) the get version of 0install itself:
341 .SH APPLICATIONS
343 An application provides an easy way to run a program without typing the full URL
344 each time.
346 .SS 0install add NAME URI
349 Creates a new application called \fBNAME\fP (which can be whatever you want) to run
350 the program \fBURI\fP. A directory (by default, ~/.config/0install.net/apps/NAME) is
351 created to record the current selections, as would be produced by "0install
352 select --xml URI".
355 A launcher command (also called \fBNAME\fP) will be created in $PATH to provide
356 an easy way to run the application. For example, to add and run ROX-Filer:
358 .B $ 0install add rox http://rox.sourceforge.net/2005/interfaces/ROX-Filer
360 .B $ rox
363 If additional requirements are given (as for "0install select", e.g. --before), they
364 are stored with the application and apply to all updates.
366 .SS 0install update NAME
369 The feeds used to make the selections are updated and a new set of selections
370 is generated and saved into the application's directory. Even if you don't run
371 this command explicitly, 0install will check for updates if you run the program
372 and it hasn't been updated for a while. This happens in the background and does
373 not delay starting the program.
376 If additional requirements are given (as for "0install select", e.g. --before),
377 they update the requirements stored with the application and apply to this and
378 future updates.
380 .B 0install apps
383 List all the applications which have been added. By default, this will open the
384 GUI, which also allows you to run or modify the applications. Use \-c to get a
385 simple list written to the console.
387 .B 0install whatchanged \fBNAME\fP
390 Show the differences between the current and previous selections for this
391 application. Various times may also be displayed: "Last checked" is the last
392 time we successfully checked for updates (even if none was found), "Last
393 attempted update" is the last time we tried to check for updates, and "Last
394 update" is the last time changes were found. If "Last attempted update" is
395 shown, then either the last updated failed or an update is currently in
396 progress.
399 By default, only changes that resulted in a different version being selected
400 are shown. To see all changes, use \-\-full. Note that at most one set of
401 selections is saved per day.
403 .SS 0install destroy NAME
404 The application \fBNAME\fP is deleted, along with any launchers added for it.
406 .SH DEBUGGING TIPS
409 To debug 0install itself, use the \-\-verbose and \-\-console options. For
410 example:
412 .B $ 0install \-vvc run http://myprog
415 To trace or debug programs run by 0install, use the \-\-wrapper option.
416 For example, to run \fBmyprog \-\-help\fP, displaying all calls to open(2):
418 .B $ 0install run \-\-wrapper="strace \-e open" http://myprog \-\-help
420 If your program is interpreted (e.g. a Python program), and you wish to debug
421 the interpreter running it, you can do it like this:
423 .B $ 0install run \-\-wrapper="gdb \-\-args python" http://myprog \-\-help
425 .SH FILES
427 Configuration files (see freedesktop.org basedir spec):
429 .IP "~/.config/0install.net/injector/global"
430 Global configuration settings.
432 .IP "~/.config/0install.net/injector/trustdb.xml"
433 List of trusted keys.
435 .IP "~/.config/0install.net/injector/feeds"
436 Per-feed information (e.g. time of last check).
438 .IP "~/.config/0install.net/injector/interfaces"
439 Per-interface settings (preferred stability and any extra feeds that have been
440 registered).
443 Cached data (can be re-downloaded if lost):
445 .IP "~/.cache/0install.net/interfaces"
446 Downloaded cached feed files.
448 .IP "~/.cache/0install.net/implementations"
449 Downloaded cached implementations, indexed by manifest digest.
452 See the 0store(1) man page for more information.
454 .SH ENVIRONMENT VARIABLES
456 .IP XDG_*
457 The configuration and cache directories can be changed using \fBXDG_CONFIG_HOME\fP,
458 \fBXDG_CONFIG_DIRS\fP, \fBXDG_CACHE_HOME\fP and \fBXDG_CACHE_DIRS\fP, as usual.
460 .IP ZEROINSTALL_PORTABLE_BASE
462 If this is set, then the XDG_ variables are ignored and the configuration and cache are stored in \fB$ZEROINSTALL_PORTABLE_BASE/config\fP and \fB$ZEROINSTALL_PORTABLE_BASE/cache\fP instead.
464 .IP ZEROINSTALL_EXTERNAL_STORE
466 When 0install wants to add an archive to the cache, it calls this program instead of doing it itself. This is used internally on Windows to connect to some .NET code. It may change in future.
468 .SH LICENSE
470 Copyright (C) 2012 Thomas Leonard.
473 You may redistribute copies of this program under the terms of the GNU Lesser General Public License.
474 .SH BUGS
476 Please report bugs to the developer mailing list:
478 http://0install.net/support.html
480 .SH AUTHOR
482 Zero Install was created by Thomas Leonard, with help from many others. See the Git log for details.
484 .SH SEE ALSO
485 0alias(1), 0store(1), 0launch(1)
487 The Zero Install web-site:
489 .B http://0install.net