Start here

Build & install

VM builds, pinned dependencies, installation paths, and staged packaging.

Source snapshot 60c72c2bView original
On this page

Build in the disposable guest

The current target is Linux x86-64. All development builds and tests use tools/vm/vm.sh ; do not run test binaries, listeners, or account-management tests on the host.

tools/vm/vm.sh start
tools/vm/vm.sh wait
tools/vm/vm.sh sync
tools/vm/vm.sh run 'make -j2 all'

The binaries are build/psh and build/pshd inside /work/psh in the guest. Source sync preserves guest build artifacts and excludes the host’s root build/ directory. See the VM guide for prerequisites, state-directory overrides, and guest access.

Dependencies

OpenSSL 4.1.0 and libyaml 0.2.5 source trees and release archives are vendored. The build verifies the pinned inputs and builds static libraries under build/deps; it does not fetch dependencies or use host/system crypto or YAML libraries. Initial VM provisioning downloads the cloud image and installs guest build tools separately. See dependency provenance .

Install

Exercise installation in the guest:

tools/vm/vm.sh run 'make install'

System installation requires root for the default ownership and paths.

Installed contentDefault path
Client/usr/local/bin/psh
Daemon/usr/local/sbin/pshd
Server configuration/etc/psh/pshd.yaml
Configuration examples/usr/local/share/psh/examples/
Guides and specifications/usr/local/share/doc/psh/
Manual pages/usr/local/share/man/man1/, man5/, and man8/

Binaries install with mode 0755; configuration directories use 0750, and the initial server configuration uses 0640. Existing configuration and host keys are preserved. Installation creates no identities or accounts and starts or enables no service. The installed server YAML is a template; complete the setup guide before starting the daemon.

Package or customize paths

Run these examples inside the guest, from /work/psh:

make install DESTDIR=/tmp/psh-package
make install DESTDIR=/tmp/psh-package-usr prefix=/usr sysconfdir=/etc

DESTDIR stages files without executing installed programs or generating identities. It is prepended to each installation path.

Make variableDefault
prefix/usr/local
bindir$(prefix)/bin
sbindir$(prefix)/sbin
sysconfdir/etc
datarootdir$(prefix)/share
docdir$(datarootdir)/doc/psh
examplesdir$(datarootdir)/psh/examples
mandir$(datarootdir)/man

pshd always defaults to /etc/psh/pshd.yaml, independently of installation variables. If sysconfdir changes, pass the actual path with pshd -f.

Runtime requirements

The daemon requires Linux 5.14 or newer, cgroup v2, clone3(CLONE_INTO_CGROUP), and permission to create root-owned connection cgroups under /sys/fs/cgroup and write cgroup.kill. Restricted environments reject connections without a fallback; a successful build or configuration check does not establish those runtime capabilities.

END OF DOCUMENT / psh/3All documentation