forked from kiss-community/kiss
8d2f470295
- Added POSIX shell implementation of the 'readlink' utility for use _only_ when the 'readlink' utility is not available. - Made tar usage more portable. All that is left now is the removal of --strip-components 1 for full (presumed) portability. - Swapped from sha256sum to shasum as it's more portable. This is still not a full solution. Here's a checklist of where we currently are: POSIX Core utilities (depends coreutils) - [x] sh (POSIX) - [x] find (POSIX) -type f, -type d, -exec {} [+;], -o, -print, ! - [x] ls (POSIX) -l, -d - [x] sed (POSIX) -n, s/<search>/<replace>/g, /<delete>/d - [x] grep (POSIX) -l, -F, -x, -f, -q, -v - [x] sort (POSIX) -r, -u, -k - [x] tee (POSIX) - [x] date (POSIX) - [x] mkdir (POSIX) -p - [x] rm (POSIX) -f, -r - [x] rmdir (POSIX) - [x] cp (POSIX) -f, -P, -p, -L, -R - [x] mv (POSIX) -f - [x] chown (POSIX) -h - [x] diff (POSIX) -U BSD utilities - [x] install (BSD, not POSIX) (still portable) -o, -g, -m, -d Misc - [x] readlink (NOT POSIX) (fallback shell implementation) - [x] su* (sudo, doas, su) (in order, optional) - [x] git (downloads from git) (must link to curl) Compiler/libc utilities (depends cc & libc) - [x] readelf (Part of compiler toolchain) (GNU, LLVM or elfutils) - [x] strip (Part of compiler toolchain) (GNU, LLVM or elfutils) - [x] ldd (Part of libc) Tarball compression - [ ] tar (must have --strip-components) (busybox, GNU, libarchive)) - [x] bzip2 (widely used) -d, -z - [x] xz (widely used) -d, -z, -c, -T - [x] gzip (widely used) -d, -6 - [x] zstd (optional) -d, -z, -c - [x] unzip (optional) - [ ] shasum (checksums) (NO standard. Portable across Linux/BSD) |
||
---|---|---|
.github/workflows | ||
contrib | ||
.editorconfig | ||
kiss | ||
kiss.1 | ||
LICENSE.md | ||
README.md |
kiss
Tiny and straightforward package manager for KISS written in POSIX sh
.
- Only 600~ lines of POSIX
sh
(See cloc). - Runtime dependency detection.
- Incremental package installation.
- Fast dependency solver.
- File conflict detection.
- Package alternatives system.
- Binary stripping.
shellcheck
compliant.
kiss
Guidestones
Read: https://k1ss.org/guidestones.txt
Usage
-> 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
Index
Package format
See: https://k1ss.org/package-system
Extending the package manager
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.
kiss-cargo-urlgen
: Generate sources for rust packages.kiss-chbuild
: Spawn a throwaway chroot.kiss-chroot
: Enter a KISSchroot
.kiss-depends-finder
: Find missing dependencies by parsing 'ldd'.kiss-depends
: Display a package's dependencies.kiss-export
: Turn an installed package into a KISS tarball.kiss-fork
: Copy a package's repository files into the current directory.kiss-link
: Link a repository file to another repository.kiss-manifest-tree
: Display all files as tree owned by a package.kiss-manifest
: Display all files owned by a package.kiss-maintainer
: Display the package maintainers.kiss-new
: Create a boilerplate package.kiss-orphans
: List orphaned packages.kiss-outdated
: List outdated packages based on Repology versions.kiss-owns
: Check which package owns a file.kiss-repodepends
: Display a package's original dependencies.kiss-reset
: Reset the system to the base.kiss-revdepends
: Display packages which depend on package.kiss-size
: Show the size on disk for an installed package.
cloc
+---------------------------------------+
| Language files blank comment code |
|---------------------------------------|
| Shell 1 271 391 663 |
+---------------------------------------+