. .TH KISS "1" "October 2019" "kiss" "User Commands" .SH NAME kiss .SH DESCRIPTION Tiny and straightforward package manager for KISS written in POSIX sh. .PP .SH "Usage" . .nf -> kiss [a|b|c|i|l|r|s|u|v] [pkg] [pkg] [pkg] -> alternatives: List and swap to alternatives -> build: Build a package -> checksum: Generate checksums -> install: Install a package -> list: List installed packages -> remove: Remove a package -> search: Search for a package -> update: Check for updates -> version: Package manager version . .fi . .SH "Customization" . .nf # The package manager is controlled through environment variables. # # These can be set in your '.profile' or '/etc/profile.d' to have # the options apply all the time. # # These can also be set in the current shell to have them apply # only for the current session. # # NOTE: The values shown below are the defaults. # Managing repositories. # # This works exactly like '$PATH' (Colon separated). # # A list of repositories the package manager will use. You can # add your own repositories or remove the default ones. export KISS_PATH=/var/db/kiss/repo/core:/var/db/kiss/repo/extra:/var/db/kiss/repo/xorg # Force package installation or removal. # # This can be used to bypass the dependency checks on installation # and removal of packages. # # Set it to '1' to force. export KISS_FORCE=0 # Hook into kiss through a script. # # This can be used set custom CFLAGS per package, modify builds, # etc. This environment variable must point to a shellscript. # # The script will have the following environment variables set. # # $PKG: Name of the current package . # $TYPE: The type of hook (valid: pre-build, post-build). # $DEST: The full path to where 'make install' will put the package. # # Simple example script: # # case $TYPE in # pre-build) # case $PKG in # zlib) export CFLAGS="-Os -static" ;; # curl) export CFLAGS="-O3" ;; # esac # ;; # # post-build) # : "${DEST:?DEST is unset}" # # rm -rf "$DEST/usr/share/doc" # rm -rf "$DEST/usr/share/gettext" # ;; # esac # export KISS_HOOK=/path/to/script # Root directory. # # Where installed packages will go. You won't ever need # to touch this during normal usage. # # This can be used to have the package manager run in a "fake root". export KISS_ROOT=/ # Keep build logs around for successful builds and not just failing # ones. Helpful when debugging. # # Set it to '1' to enable. export KISS_KEEPLOG=0 # Compression method to use for package tarballs. # # Valid options: 'bz2', 'gz' (default), 'xz', 'zst' export KISS_COMPRESS=gz # Keep build, package and extraction cache directories for debugging # purposes. # # Set it to '1' to enable. export KISS_DEBUG=0 # Force the usage of a different 'sudo' tool. # # Values: 'su', 'sudo', 'doas' export KISS_SU= # Use a reproducible cache naming scheme. # # The package manager builds packages inside 'build-$PID/' with '$PID' # being the package manager's process ID. This allows for multiple # builds to happen at once. # # You can override this and _know_ the location beforehand with the # below environment variable. 'KISS_PID=test' will build the package # in 'build-test'. # # Unset by default. export KISS_PID= # # non-package-manager related options. # These are listed for clarity. # # Cache directory location. export XDG_CACHE_HOME=$HOME/.cache/ # Compiler. export CC=gcc export CXX=g++ # AR. export AR=ar # NM. export NM=nm # RANLIB. export RANLIB=ranlib # Compiler flags. # Good value: CFLAGS/CXXFLAGS='-march=native -pipe -O2' export CFLAGS= export CXXFLAGS= # Linker flags. export LDFLAGS= # Make flags. # Good value: MAKEFLAGS='-j4' (number of cores). export MAKEFLAGS= # Ninja (Samurai) flags. # Good value: SAMUFLAGS='-j4' (number of cores). export SAMUFLAGS= # Cmake Generator. # Good value (Ninja): export CMAKE_GENERATOR='Ninja' # Good value (Makefiles): export CMAKE_GENERATOR='Unix Makefiles' export CMAKE_GENERATOR= . .fi . .SH "Alternatives System" . .nf When a package with conflicts is installed the conflicting files will be added as "choices" to the alternatives system. Afterwards, running kiss a/kiss alternatives will list all of the choices you are able to make. Each line of output with this command is also usable directly as input. NOTE: To disable this functionality, set 'KISS_CHOICE=0'. Example usage: # List alternatives. -> kiss a -> Alternatives: ncurses /usr/bin/clear ncurses /usr/bin/reset # Swap to ncurses 'clear'. -> kiss a ncurses /usr/bin/clear -> Swapping '/usr/bin/clear' from 'busybox' to 'ncurses' Password: # New listing (busybox clear was swapped out). -> kiss a -> Alternatives: busybox /usr/bin/clear ncurses /usr/bin/reset Example usage (complex): -> kiss i sbase # More lines... -> sbase Found conflict (/usr/bin/renice), adding choice -> sbase Found conflict (/usr/bin/logger), adding choice -> sbase Found conflict (/usr/bin/flock), adding choice -> sbase Found conflict (/usr/bin/cal), adding choice -> sbase Installing package incrementally -> sbase Installed successfully # List alternatives. -> kiss a -> Alternatives: # More lines... sbase /usr/bin/uuencode sbase /usr/bin/wc sbase /usr/bin/which sbase /usr/bin/whoami sbase /usr/bin/xargs sbase /usr/bin/yes # Swapping in bulk (all of sbase). # The 'kiss a' command with '-' as an argument will read # from stdin and use each line as arguments to 'kiss a'. kiss a | grep ^sbase | kiss a - # New listing, sbase has replaced busybox utilities. -> kiss a -> Alternatives: # More lines... busybox /usr/bin/uuencode busybox /usr/bin/wc busybox /usr/bin/which busybox /usr/bin/whoami busybox /usr/bin/xargs busybox /usr/bin/yes