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 think 0store itself might have been messed with by an attacker, mount the suspect file-system on a known-good machine and run that machine's 0store on 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 πŸ’œβœ¨