Generally installation of a skelpkg is just an unpacking of the bin archive to skelbins directory and creating a symbolic links to files inside it. But there is ability to run "pre install" (preinst), "post install" (postinst), "pre remove" (prerm) and "post remove" (postrm) hooks. Hook is a directory with at least one executable file. All executable files in that directory are called in a lexicographical order. Each hook is placed in $NAME-$hsh/skelpkg/$NAME-$hsh/hooks/$hook directory. Hook is executed inside the directory we performing skelpkg installation, directory with the local/ subdirectory. It expects to get following environmental variables: * $DST Path to directory where we perform installation of the skelpkg. * $PKG Name of the skelpkg user entered. As a rule it is more-or-less human readable name without any hashes. * $NAMENHASH $NAME-$hsh name of the package. * $BASS_ROOT, $BASS_RC, ... One of the frequent uses of preinst hook is installation of runtime dependencies. For example cURL depends on OpenSSL, so let's see its hook: $ tar xfO $SKELPKGS/$ARCH/curl-8.6.0 name | read namenhash $ tar xfO $SKELPKGS/$ARCH/curl-8.6.0 bin | tar tf - $namenhash/skelpkg/$namenhash/hooks/preinst $namenhash/skelpkg/$namenhash/hooks/preinst/010-rdeps $ tar xfO $SKELPKGS/$ARCH/curl-8.6.0 bin | tar xfO - $namenhash/skelpkg/$namenhash/hooks/preinst/010-rdeps #!/bin/sh -e exec "$BASS_ROOT"/build/bin/pkg-inst openssl-1.1.1w postinst hook can be used to alter $DST's rc file, like pkgconf skelpkg does: $ tar xfO $SKELPKGS/$ARCH/pkgconf-2.1.1 name | read namenhash $ tar xfO $SKELPKGS/$ARCH/pkgconf-2.1.1 bin | tar xfO - $namenhash/skelpkg/$namenhash/hooks/postinst/01rc-add #!/bin/sh -e _localpath="$(realpath local)" cat >>rc <<EOF PKG_CONFIG_PATH="$_localpath/lib/pkgconfig:\$PKG_CONFIG_PATH" PKG_CONFIG_PATH="$_localpath/libdata/pkgconfig:\$PKG_CONFIG_PATH" export PKG_CONFIG_PATH EOF