~ach/hermes unlisted

Add pkg_tree builtin.
Tests and fixes for broken tests.
Work on edn mirrors, removing content mirrors and a new builtin.

clone

read-only
https://git.sr.ht/~ach/hermes
read/write
git@git.sr.ht:~ach/hermes

You can also use your local clone with git send-email.

#Hermes - Build, Package, Deploy

Hermes is a decentralized, time traveling package manager, build tool, and deployment tool that ...

  • Is easy to learn and fun to use.
  • Makes it easy to share programs with your friends.
  • Works well with existing tools (docker, various operating systems and more).
  • Let you put packages in version control.
  • Helps solve dependency hell, allows multiple versions of the same package.

And more ...

#Installation

There are two main choices when installing hermes:

  • The recommended full system install, which enables proper package build sandboxing and a secure shared package store for all users.

  • The alternative, single user mode with a non standard package store path, for when you do not have the ability to install with root privileges. The major downsides for single user unprivileged installs is that you will need rebuild packages for your own chosen store path and manage your own package cache. Another downside is that your user account may not have sufficient privileges to do fully sandboxed package builds, so the sandbox is disabled by default.

Once you have decided what mode you would like you can proceed as follows...

#Install from prebuilt binaries

Coming soon...

#Compile from source

First install go, a C compiler and make, which are necessary to build hermes.

Glibc does not statically link properly, causing issues with sandboxing, so we highly recommend building hermes with musl libc. If you are unsure about this, prebuilt binaries are a better choice for you.

$ ./configure --prefix="/hermes"
$ sudo make install
$ export PATH="$PATH:/hermes/bin"
$ useradd --system --no-create-home --home /homeless hermes_build_user
$ sudo hermes init

Inspect "/hermes/store.cfg" for any configuration you would like to change.

#Single user unprivileged build

$ ./configure --prefix="$HOME/hermes"
$ make install
$ export PATH="$PATH:$HOME/hermes/bin"
$ hermes init --single-user --store "$HOME/hermes"
$ cat > $HOME/.config/hermes/hermes.cfg <<EOF
store_path="$HOME/hermes"
EOF

Inspect "$HOME/hermes/store.cfg" for any configuration you would like to change.

#Uninstallation

$ make uninstall

Which will remove the hermes binaries from $PREFIX/bin and $PREFIX/libexec.

Then you can manually:

Remove the hermes store, the default is in /hermes. Remove any build users you have created.

#Reference Guide

For more information see the book