Release 0.54
[zeroinstall/solver.git] / 0install.1
blob97dec864874956efe403bd74070db9a2aea77e14
1 .TH 0INSTALL 1 "2011" "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 Other commands:
19 .B 0install config [NAME [VALUE]]
21 .B 0install import \fBFEED\fP
23 .B 0install list \fBPATTERN\fP
25 .B 0install add-feed \fBFEED\fP
27 .B 0install remove-feed [\fBINTERFACE\fP] \fBFEED\fP
29 .B 0install list-feeds \fBURI\fP
31 .SH DESCRIPTION
32 .PP
33 Zero Install is a decentralised cross-distribution software installation
34 system. Programs and libraries are identified by URIs, and there is no need
35 for a central repository. Zero Install ensures that packages cannot conflict
36 with each other and that programs can be shared between mutually untrusting
37 users. See the web-site for more information:
39 http://0install.net/
41 The simplest case is to ask 0install to run a program, given its URI. For
42 example:
44 .B 0install run http://rox.sourceforge.net/2005/interfaces/Edit
46 .PP
47 The first time you do this, details about available versions of the program are
48 downloaded and cached, along with details about any libraries it depends on.
50 Zero Install will run a solver to select the best version of each component
51 to use. For example, it will select binaries that are compatible with your
52 CPU and operating system, in your preferred language, and marked "stable" (by
53 default).
55 If $DISPLAY is set, 0install will display a window where you can confirm (or
56 change) the selected versions.
58 It will then download the corresponding archives for those version and store
59 them in the cache too. Each package unpacks to its own directory.
61 Finally, 0install will launch the program, setting environment variables to
62 let it locate its libraries.
64 .SH GLOBAL OPTIONS
66 The first non-option argument to 0install is the particular sub-command you
67 want to perform; these are described in detail in the next section.
69 However, there are some options that apply to all operations. These are:
71 .TP
72 \fB\-c\fP, \fB\-\-console\fP
73 Never use the GUI. Normally, 0launch switches to graphical mode if it needs to
74 download anything from the network (unless DISPLAY is not set).
76 .TP
77 \fB\-h\fP, \fB\-\-help\fP
78 Show the built-in help text.
80 .TP
81 \fB\-o\fP, \fB\-\-offline\fP
82 Run in off-line mode, overriding the default setting. This prevents 0install
83 from checking for updates, and from downloading updates even if it knows about
84 them.
86 .TP
87 \fB\-v\fP, \fB\-\-verbose\fP
88 More verbose output. Use twice for even more verbose output.
90 .TP
91 \fB\-\-with\-store=DIR\fP
92 Append a directory to the list of implementation caches. Each sub-directory
93 of DIR contains the contents of one version of a program or library.
95 .SH SUB-COMMANDS
97 .SS 0install select [OPTIONS] URI
99 .PP
100 Select a version of the program identified by URI, and compatible versions of
101 all of its dependencies. The information about available version is
102 downloaded if it's not yet in the cache.
105 The URI can be either an HTTP URL, such as
106 `http://site/program.xml', or a local path name like `/path/to/program.xml'.
109 For HTTP URLs, the remote file is a signed XML document. If the key is not
110 known and trusted, you will be prompted to accept it first. Local feed files
111 are not signed (any signature will be ignored).
114 You can also specificy a local selections document, as created previously using
115 the \fB\-\-xml\fP option, rather than a feed. In that case, 0install simply
116 uses those versions without running the solver.
119 After selecting (but not downloading) a set of versions, the selection is
120 displayed in a human-readable format. Use \fB\-\-xml\fP to get
121 machine-readable output.
124 If a set of versions cannot be selected using the cached information, 0install
125 will check for updates first.
128 If a set of versions can be selected based on the currently-cached information,
129 but that information is getting stale, 0install will immediately return the
130 current selection and will also start a background process to check for updates.
131 The `freshness' configuration setting controls when cached information is
132 considered to be stale.
135 Options for select:
138 \fB\-\-before=VERSION\fP
139 Select a version earlier than VERSION (i.e. force the use of an old version of
140 the program). You can only restrict the version of the program itself using this
141 option, not the version of any dependencies.
144 \fB\-\-command=COMMAND\fP
145 Some programs provide multiple commands. This selects which one you want. Common
146 values are `run' (the default), `test' (used by 0test) and `compile' (used by
147 0compile). You can also use \fB\-\-command=""\fP if you don't want to run any
148 command (for example, if the package contains data rather than a program).
151 \fB\-\-message=MESSAGE\fP
152 If we show a dialog box for the download, display MESSAGE to the user to
153 explain why the download is needed.
156 \fB\-\-not\-before=VERSION\fP
157 The selected version must not be earlier than VERSION.
158 e.g. if you want to run version 2.0 or later, use \fB\-\-not\-before=2.0\fP.
161 \fB\-\-refresh\fP
162 Download a fresh copy of all used feeds before selecting. Normally, cached
163 copies will be used if available (checking for updates later, in the
164 background).
167 \fB\-\-source\fP
168 Select source code rather than a binary. This is used internally by `0compile'.
171 \fB\-\-xml\fP
172 Print the set of chosen implementations as an XML document to stdout. This can
173 be used later with the `download' and `run' sub-commands.
177 `select' returns an exit status of zero if it selected a set of versions, and
178 a status of 1 if it could not find a consistent set.
181 .SS 0install download [OPTIONS] URI
183 This behaves similarly to `0install select', except that it also downloads the
184 selected versions if they are not already cached. Unlike `select', it does not
185 print the selected versions by default.
187 All options for `select' can also be used for `download'. In addition, these
188 options are available:
191 \fB\-\-show\fP
192 Print the selected versions in a human-readable format to stdout.
195 `download' returns an exit status of zero if it selected a suitable set of
196 versions and they are now all downloaded and in the cache. It returns a
197 status of 1 otherwise.
200 .SS 0install run [OPTIONS] URI [ARGS]
203 This behaves similarly to `0install download', except that it also runs the
204 program after ensuring it is in the cache.
207 To avoid having to keep typing the full URI, use the 0alias(1) command
208 to create shortcuts to run your programs.
211 All options for `select' and `download' can also be used for `run'. In
212 addition, these options are available:
215 \fB\-m\fP, \fB\-\-main=MAIN\fP
216 Run the specified executable instead of the default. If MAIN starts with '/'
217 then the path is relative to the implementation's top-level directory,
218 whereas otherwise it is relative to the directory containing the default
219 MAIN program. For example, if the default MAIN is \fBbin/svn\fP then
220 using \fB\-\-main=svnadmin\fP will run \fB.../bin/svnadmin\fP instead.
221 This option has been largely superseded by the newer \fB\-\-command\fP option.
224 \fB\-w\fP, \fB\-\-wrapper=WRAPPER\fP
225 Instead of executing the chosen program directly, run \fBWRAPPER PROGRAM ARGS\fP.
226 This is useful for running debuggers and tracing tools on the program (rather
227 than on 0install!). Note that the wrapper is executed in the environment selected
228 by the program; hence, this mechanism cannot be used for sandboxing. See the
229 DEBUGGING section below.
232 `run' returns an exit status of 1 if the download step failed. Otherwise,
233 the exit status will be the exit status of the program being run.
235 .SS 0install update [OPTIONS] URI
238 Check for updates to the program and download them if found. This is similar to
239 \fB0install download \-\-refresh\fP, except that it prints information about
240 whether any changes were found.
243 The options are the same as for `select'.
245 .SS 0install import FEED
248 Import a feed from a local file, as if it had been downloaded from the network.
249 This is useful when testing a feed file, to avoid uploading it to a remote
250 server in order to download it again. The file must have a trusted digital
251 signature, as when fetching from the network.
254 It is also useful when installing a feed from a CD or similar. Note: to create
255 a full bundle, for archiving or distribution on CD, see 0export(1).
257 .SS 0install add-feed FEED
260 Register an additional source of implementations (versions) of a program.
263 For example, when you check out a developer version of a project, it may
264 contain an XML feed file. To add this version to the list of available
265 versions, use `add-feed' on the XML file. The file is not copied, so you don't
266 need to re-add the feed each time it is updated. You will probably also want to
267 set the `help_with_testing' configuration option to ensure that testing
268 versions are selected by default.
271 Note that if you just want to run the program, you can invoke 0install on the
272 feed file directly (without using `add-feed'). This will force the it to
273 use that version, but won't affect what happens when you run it using the URI
274 as normal. Use `add-feed' when you want to use the developer version even when
275 using the URI, or if the program is a library (and thus referenced by URI by
276 other programs).
278 .SS 0install remove-feed [INTERFACE] FEED
281 Un-register a feed, reversing the effect of `add-feed'. If INTERFACE is not
282 given, you will be prompted to choose which INTERFACE to remove it from.
284 .SS 0install list-feeds URI
287 List all extra feeds added to URI using `add-feed'.
289 .SS 0install list PATTERN
292 List all known interface (program) URIs. If a search term is given, only
293 URIs containing that string are shown (case insensitive).
295 .SS 0install config [NAME [VALUE]]
298 View or change configuration settings.
301 With no arguments, `0install config' displays all configuration settings.
302 With one argument, it displays the current value of the named setting.
303 With two arguments, it sets the setting to the given value.
305 .SS 0install --version
306 This can be used (without any command) the get version of 0install itself:
308 .SH DEBUGGING TIPS
311 To debug 0install itself, use the \-\-verbose and \-\-console options. For
312 example:
314 .B $ 0install \-vvc run http://myprog
317 To trace or debug programs run by 0install, use the \-\-wrapper option.
318 For example, to run \fBmyprog \-\-help\fP, displaying all calls to open(2):
320 .B $ 0install run \-\-wrapper="strace \-e open" http://myprog \-\-help
322 If your program is interpreted (e.g. a Python program), and you wish to debug
323 the interpreter running it, you can do it like this:
325 .B $ 0install run \-\-wrapper="gdb \-\-args python" http://myprog \-\-help
327 .SH FILES
329 Configuration files (see freedesktop.org basedir spec):
331 .IP "~/.config/0install.net/injector/global"
332 Global configuration settings.
334 .IP "~/.config/0install.net/injector/trustdb.xml"
335 List of trusted keys.
337 .IP "~/.config/0install.net/injector/feeds"
338 Per-feed information (e.g. time of last check).
340 .IP "~/.config/0install.net/injector/interfaces"
341 Per-interface settings (preferred stability and any extra feeds that have been
342 registered).
345 Cached data (can be re-downloaded if lost):
347 .IP "~/.cache/0install.net/interfaces"
348 Downloaded cached feed files.
350 .IP "~/.cache/0install.net/implementations"
351 Downloaded cached implementations, indexed by manifest digest.
354 See the 0store(1) man page for more information.
356 .SH LICENSE
358 Copyright (C) 2010 Thomas Leonard.
361 You may redistribute copies of this program under the terms of the GNU Lesser General Public License.
362 .SH BUGS
364 Please report bugs to the developer mailing list:
366 http://0install.net/support.html
368 .SH AUTHOR
370 The Zero Install Injector was created by Thomas Leonard.
372 .SH SEE ALSO
373 0alias(1), 0store(1), 0launch(1)
375 The Zero Install web-site:
377 .B http://0install.net