KISS(1)

NAME
kiss

DESCRIPTION
Tiny and straightforward package manager for Carbs Linux written in POSIX sh. Forked from KISS Linux.

SYNOPSIS

kiss
    [a|b|c|d|e|f|i|l|r|s|u|v] [pkg] [pkg] [pkg]

OPTIONS

alternatives List and swap to alternatives

build        Build a package

checksum     Generate checksums

download     Download sources for the given package

extension    List available kiss extensions

fetch        Fetch repositories

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

CUSTOMIZATION
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 seperated). 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 (pre-build, post-build, build-fail, pre-install, post-install).

$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=/

  KEEPING LOGS
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

  KEEPING BUILD FILES
You can keep build, package and extraction cache directories for debugging purposes. Set it to '1' to enable.

    export KISS_DEBUG=0

  CHANGING COMPRESSION METHOD
KISS by default uses gzip for packaging, but it can be changed. Valid options are bz2, gz (default), xz, zst. If an unknown compression method is specified, it fallbacks to gz.

    export KISS_COMPRESS=gz

  SUDO UTILITIES
You can force the usage of a different 'sudo' tool. Available options are 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=

  SPECIFYING BUILD DIRECTORY
All build related files, by default, are stored in the cache directory. If the user specifies KISS_TMPDIR, it will be used instead of the cache directory for building packages. This can be useful if you want to build a package on ram or a different filesystem. Unset by default.

    export KISS_TMPDIR=

  ENABLING/DISABLING COLOUR
If run in a subshell, KISS disables colour output. However, this behaviour can be overriden. If a user defines a KISS_COLOR environment value, it will be enabled or disabled globally

    export KISS_COLOR=1 # Enables globally

    export KISS_COLOR=0 # Disables globally

  DISABLING PROMPTS
User can disable prompts by setting a KISS_NOPROMPT environment value. This can be useful for scripting purposes.

    KISS_NOPROMPT=1 kiss b pkg1 pkg2

ALTERNATIVES SYSTEM
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
# 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
# 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

AUTHORS
Cem Keylan, Fork Maintainer, Carbs Linux
<cem@ckyln.com>

Dylan Araps, Original Author, KISS Linux

LICENSE
See LICENSE for copyright information

SEE ALSO
kiss-contrib(1)