2019-06-13 08:49:05 -06:00
# kiss
2019-09-11 00:00:33 -06:00
Tiny and straightforward package manager for KISS written in POSIX `sh` .
2019-06-13 11:22:08 -06:00
2020-05-12 02:44:57 -06:00
- Less than 1000 lines of POSIX `sh` (excluding blank lines and comments).
2019-09-11 00:00:33 -06:00
- Runtime dependency detection.
- Incremental package installation.
2019-09-11 00:02:24 -06:00
- Fast dependency solver.
- File conflict detection.
2020-01-29 01:26:31 -07:00
- Package alternatives system.
2020-05-12 02:44:57 -06:00
- 3-way handshake for /etc/ configuration files.
2019-09-11 00:00:33 -06:00
- Binary stripping.
- `shellcheck` compliant.
2019-06-13 11:22:08 -06:00
2020-02-11 03:41:41 -07:00
2019-06-13 11:32:46 -06:00
## Usage
```sh
2020-01-29 01:19:56 -07:00
-> 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
2019-06-13 11:32:46 -06:00
```
2019-08-13 03:22:12 -06:00
2020-05-12 02:44:57 -06:00
## Dependencies / Portability
2020-01-29 03:21:20 -07:00
2020-05-12 02:44:57 -06:00
```sh
# - Anything with a specification should follow it (POSIX, BSD, etc).
# - Anything without a specification which has ONLY a single (widely used)
# implementation will be considered portable (git, curl, etc).
#
# POSIX utilities
# - sh (POSIX)
# - find (POSIX) -type f, -type d, -exec {} [+;], -o, -print, !
# - ls (POSIX) -l, -d
# - sed (POSIX) -n, s/<search>/<replace>/g, /<delete>/d
# - grep (POSIX) -l, -F, -x, -f, -q, -v
# - sort (POSIX) -r, -u, -k
# - tee (POSIX) -a
# - date (POSIX)
# - mkdir (POSIX) -p
# - rm (POSIX) -f, -r
# - rmdir (POSIX)
# - cp (POSIX) -f, -P, -p, -L, -R
# - mv (POSIX) -f
# - chown (POSIX) -h
# - diff (POSIX) -U
#
# Misc
# - su* (sudo, doas, su) (in order, optional)
# - git (downloads from git) (must link to curl)
# - curl (downloads over http) (also needed by git)
# - sha256 (multiple fallbacks: sha256sum, shasum, sha256, openssl, etc)
#
# Compiler/libc utilities (depends cc & libc)
# - readelf (optional) (Part of compiler toolchain) (GNU, LLVM or elfutils)
# - strip (optional) (Part of compiler toolchain) (GNU, LLVM or elfutils)
# - ldd (optional) (Part of libc)
#
# Tarball compression
# - tar (as portable as can be) (merely: cf, tf, xf)
# - bzip2 (widely used) -d, -z
# - xz (widely used) -d, -z, -c, -T
# - gzip (widely used) -d, -6
# - zstd (optional) -d, -z, -c
# - unzip (optional)
# - lzma (optional)
# - lzip (optional)
```
2020-01-29 03:21:20 -07:00
2019-09-11 00:00:33 -06:00
## Package format
2020-03-11 08:52:48 -06:00
See: < https: / / k1ss . org / package-system >
2019-09-11 00:00:33 -06:00
2019-10-07 07:31:26 -06:00
## Extending the package manager
2020-02-19 02:53:03 -07:00
The `contrib` directory contains a set of simple scripts to extend the package manager. These are just simple and stupid automations which parse the package format.
2019-10-30 04:51:48 -06:00
2020-02-19 02:53:03 -07:00
- `kiss-chbuild` : Spawn a throwaway chroot.
2019-10-30 04:51:48 -06:00
- `kiss-chroot` : Enter a KISS `chroot` .
- `kiss-depends` : Display a package's dependencies.
- `kiss-export` : Turn an installed package into a KISS tarball.
2020-03-13 07:45:07 -06:00
- `kiss-fork` : Copy a package's repository files into the current directory.
- `kiss-link` : Link a repository file to another repository.
2019-10-30 04:51:48 -06:00
- `kiss-manifest` : Display all files owned by a package.
- `kiss-maintainer` : Display the package maintainers.
2020-02-19 02:53:03 -07:00
- `kiss-new` : Create a boilerplate package.
2019-10-30 04:51:48 -06:00
- `kiss-orphans` : List orphaned packages.
2020-03-03 15:49:41 -07:00
- `kiss-outdated` : List outdated packages based on Repology versions.
2019-10-30 04:51:48 -06:00
- `kiss-owns` : Check which package owns a file.
2020-02-19 02:53:03 -07:00
- `kiss-reset` : Reset the system to the base.
2019-10-30 04:51:48 -06:00
- `kiss-revdepends` : Display packages which depend on package.
- `kiss-size` : Show the size on disk for an installed package.