SYNOPSISA new Linux distro approaches!
CONTENT(or, I really should write a better title)
There’s a new Linux distribution on the block, and unlike many distros, it doesn’t rely on other big distributions (e.g. Debian, Ubuntu (itself based on Debian), Red Hat/Fedora, Arch), KISS Linux. [0]
This project is initiated by Dylan Araps, the creator of neofetch [1], pure bash bible [2], and now pure sh (POSIX, specifically) bible [3].
And as usual, this piqued my interest.
“Simple” can mean different things to different people. An end-user will never care about underlying system. “I want my Google to work!”, that’s it, and that’s perfectly understandable.
However, some “power users” can and will question, “why is this software installed?”, “why is this needed?”, “is there any way a better and straightforward way to do X?”. KISS Linux aims to use less software where possible and believes that “the less software and code running the less error prone the system will be overall”. I’m not going to delve deeper into this because it’s going to be similar to a lot of “experimental” Linux distributions. Instead, I’m going to talk about its packaging system.
One of the things I like about the kiss
packaging system is how the package metadata is structured. In many Linux distributions (e.g. CRUX, Arch Linux, GoboLinux, Void Linux) uses a somewhat shell-compatible format. Something like this:
pkgname=make
version=4.2.1
release=1
makedepends=('glibc' 'guile')
source=https://ftp.gnu.org/make/${pkgname}-${version}.tar.bz2
license=GPL-3
md5sum=15b012617e7c44c0ed482721629577ac
package() {
./configure --prefix=/usr
make
make install
}
This file is then sourced by a program specifically made to a script to build the packages itself (e.g. makepkg
by Arch Linux).
Others, such as rpm
and dpkg
, may have a more sophisticated format.
kiss
takes things differently. Instead of lumping all of the metadata together, it separates them into several files. source
holds all the file paths, version
has all the package versions and release. depends
has all the dependencies needed, and build
, which combines prepare
, build
, and package
all together. checksums
file is always generated in SHA256, and manifest
, which contains all the files contained in a package.
Personally, I’m a big fan of the packaging system, since it’s straightforward, and makes it simple in case I want to “fork” just a portion of the package, and make the rest follow upstream packaging.
In my case, I can just symlink the sources
and version
file with upstream (in this case, kisslinux/community [4]) and create my own modifications to enable/disable certain features in build
and depends
. Way better.
For now, that’s it. I guess.
[0] getkiss.org
[1] github.com/dylanaraps/neofetch
[2] github.com/dylanaraps/pure-bash-bible
[3] github.com/dylanaraps/pure-sh-bible
[4] github.com/konimex/kiss-repo-modified commit