NAME
0store — manage the implementation cache
SYNOPSIS
0store add DIGEST DIRECTORY
0store add DIGEST ARCHIVE [ EXTRACT ]
0store audit [ DIRECTORY ... ]
0store copy DIRECTORY [ DIRECTORY ]
0store find DIGEST
0store list
0store manifest DIRECTORY [ ALGORITHM ]
0store optimise [ CACHE ]
0store verify ( DIGEST | DIRECTORY )
DESCRIPTION
0store provides access to the low-level implementation cache. Normally,
the cache is updated automatically using 0launch(1).
ADD
To add a directory to the store (makes a copy):
0store add sha256=XXX directory
To add an archive to the store:
0store add sha256=XXX archive.tgz
To add a subdirectory of an archive to the store:
0store add sha256=XXX archive.tgz subdir
The actual digest is calculated and compared to the given one. If they
don’t match, the operation is rejected.
AUDIT
Verifies every implementation in each of the given cache directories,
or in all of the default cache directories if no arguments are given.
This will detect any packages which have been tampered with since they
were unpacked. If 0store itself could have been modified by an
attacker, mount the suspect file-system on a known-good machine and run
that machine’s 0store on the mounted cache directory.
See the "verify" command below for details of the verification
performed on each package.
COPY
To copy an implementation (a directory with a name in the form
"algorithm=value"), use the copy function. This is similar to
performing a normal recursive directory copy followed by a 0store
verify to check that the name matches the contents. E.g.:
0store copy ~someuser/.cache/0install.net/implementations/sha256=XXX
/var/cache/0install.net/implementations/
FIND
To find the path of a stored item:
0store find sha256=XXX
LIST
See the list of implementation caches currently configured:
0store list
To add directories to this list, add them to your ’implementation-dirs’
configuration file.
MANIFEST
To generate the manifest for a directory structure:
0store manifest DIRECTORY [ALGORITHM]
The manifest lists every file and directory in the tree, along with the
digest of each file, thus uniquely identifying that particular set of
files. After the manifest, the last line gives the digest of the
manifest itself.
This value is needed when creating feed files. However, the 0publish
command will automatically calculate the required digest for you and
add it to a feed file. See the packager’s guide on the Zero Install web
site for details.
Supported algorithms are ’sha1’ (supported by all versions), ’sha1new’
(requires injector 0.20 or later) and ’sha256’ (requires injector 0.20
or later AND the Python hashlib module).
OPTIMISE
To hard-link duplicate files together to save space:
0store optimise [CACHE]
This reads in all the manifest files in the cache directory
(~/.cache/0install.net/implementations by default) and looks for
duplicates (files with the same permissions, modification time and
digest). When it finds a pair, it deletes one and replaces it
(atomically) with a hard-link to the other.
Implementations using the old ’sha1’ algorithm are not optimised.
VERIFY
To check that an item is stored correctly:
0store verify /path/to/sha256=XXX
This calculates the manifest of the directory and checks that its
digest matches the directory’s name. It also checks that it matches the
digest of the .manifest file inside the directory. If the .manifest
doesn’t correspond to the current tree, it displays a list of the
differences (in unified diff format).
COMMAND-LINE OPTIONS
-h, --help
Show the built-in help text.
-v, --verbose
More verbose output. Use twice for even more verbose output.
-V, --version
Display version information.
FILES
~/.cache/0install.net/implementations
Cached implementations, indexed by manifest digest.
~/.config/0install.net/injector/implementation-dirs
List of system cache directories, one per line.
LICENSE
Copyright (C) 2010 Thomas Leonard.
You may redistribute copies of this program under the terms of the GNU
Lesser General Public License.
BUGS
Please report bugs to the developer mailing list:
http://0install.net/support.html
AUTHOR
The Zero Install Injector was created by Thomas Leonard.
SEE ALSO
0alias(1), 0launch(1), 0store-secure-add(1)
The Zero Install web-site:
http://0install.net