0STORE(1)
β¨ 0STORE(1) β¨
Okay bestie, this is the manual for 0store π It's the manual page, 0STORE(1), and it covers how 0store manages the implementation cache. Let's get into it π
β¨ NAME β¨
0store π It's all about managing the implementation cache. That's literally the whole vibe β¨
β¨ 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 )
0store manage
β¨ DESCRIPTION β¨
So 0store gives you access to the low-level implementation cache π§ Normally the cache updates itself automatically through 0launch(1), so you usually don't have to touch anything πΈ
β¨ ADD β¨
Want to add a directory to the store? It makes a copy π
0store add sha256=XXX directory
Got an archive instead? Add it like this π¦
0store add sha256=XXX archive.tgz
And if you only want a subdirectory of an archive, just tack it on at the end π¦
0store add sha256=XXX archive.tgz subdir
The real digest gets calculated and compared to the one you gave it. If they don't match, the operation gets rejected π ββοΈ No mismatches allowed, periodt π
β¨ AUDIT β¨
This one is a whole vibe check π It verifies every implementation in each cache directory you give it, or in all the default cache directories if you don't give any arguments. It'll catch any packages that got tampered with after they were unpacked π΅οΈββοΈ
Heads up, bestie: if you think0storeitself might have been messed with by an attacker, mount the suspect file-system on a known-good machine and run that machine's0storeon the mounted cache directory. Don't trust the suspicious one π¨
For the details on how each package gets verified, check the "verify" command further down π
β¨ COPY β¨
To copy an implementation (a directory named in the form algorithm=value), use the copy function π«Ά It's basically a normal recursive directory copy, followed by a 0store verify to check that the name matches the contents. Super iconic π
For example:
0store copy ~someuser/.cache/0install.net/implementations/sha256=XXX /var/cache/0install.net/implementations/
β¨ FIND β¨
Lost something? To find the path of a stored item, just run π
0store find sha256=XXX
β¨ LIST β¨
Want to see which implementation caches are currently configured? Run this π
0store list
To add directories to this list, pop them into your 'implementation-dirs' configuration file π
β¨ MANAGE β¨
Okay so, to open a window showing what's in the cache, run πͺ
0store manage
You can use this to delete versions of programs you don't need anymore ποΈ Just know that it won't remove any launchers you added. Trying to launch the program will prompt you to download the missing files again π If you want to get rid of those launchers, try this π
0desktop
β¨ MANIFEST β¨
Deprecated, bestie π Don't use this one anymore. Use "0install digest" instead.
β¨ OPTIMISE β¨
This one is about hard-linking duplicate files together to save space πΎ Run it like this π§
0store optimise [CACHE]
So here's the tea β It reads in all the manifest files in the cache directory (~/.cache/0install.net/implementations by default) and hunts for duplicates. A duplicate is a file 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 one. Main character energy π¬
Implementations using the old 'sha1' algorithm are not optimised, so they get left alone π
β¨ VERIFY β¨
Want to check that an item is stored correctly? This is your move π
0store verify /path/to/sha256=XXX
It 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 match the current tree, you'll get a list of the differences in unified diff format π
β¨ COMMAND-LINE OPTIONS β¨
-h,--helpβ pulls up the built-in help text π-v,--verboseβ gives you more verbose output. Use it twice for even more verbose output π’-V,--versionβ shows you the version info π·οΈ
β¨ FILES β¨
~/.cache/0install.net/implementationsβ where the cached implementations live, indexed by manifest digest ποΈ~/.config/0install.net/injector/implementation-dirsβ the list of system cache directories, one per line π
β¨ LICENSE β¨
Copyright (C) 2010 Thomas Leonard. πΈ
You're free to redistribute copies of this program under the terms of the GNU Lesser General Public License π«Ά
β¨ BUGS β¨
Found something broken? Report it to the developer mailing list π Here's where to go π
http://0install.net/support.html
β¨ AUTHOR β¨
The Zero Install Injector was created by Thomas Leonard π Iconic, honestly β¨
β¨ SEE ALSO β¨
0install(1), 0launch(1), 0store-secure-add(1) π¦
For more, check out the Zero Install web-site π http://0install.net
Thanks for sticking with me, bestie π«Ά This page came from Thomas Leonard in 2010, and it's 0STORE(1) forever πβ¨
π¦ where this page comes from
- debian bookworm: 0install-core 2.18-2
- debian trixie: 0install-core 2.18-2.1
- ubuntu jammy: 0install-core 2.16-2
- ubuntu noble: 0install-core 2.18-2ubuntu2
- ubuntu questing: 0install-core 2.18-2.1build2
- ubuntu resolute: 0install-core 2.18-2.2
- ubuntu stonking: 0install-core 2.18-2.3
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms