TSClient LEGACY GNU/Linux
TSClient LEGACY is a GNU/Linux distribution with emphasis on
efficient, dependency-based package installation.
Goals
- Allow for minimal installations
- Binary packages shall be as atomic as possible while not
splitting packages that always need to be installed as
group
- System upgrades are regular package upgrades — this makes system
upgrades seemless and efficient
- Pure dependency-based installation ("runtime systems") — this
allows for bootstrapping and updating an entire system by just
installing a single package
- Packages conflict if and only if they have a file in common
(though directories might be shared)
- Building packages and the package manager are decoupled (i.e.
the package manager does not know how to build a package)
- Make creating and distributing site-local packages easy
- The simplest repository type must be really simple
- The "installation problem" is NP complete - solve it by creating
package versions that yield easy scenarios
- Rebuilds that require reinstallation of packages shall usually
trigger new versions (s.t. no reinstall is required)
- Treat the distribution as a single entity — this allows for
packages to interact, and to perform transformations on the
entire distribution (like moving a specific class of file that
every package has into a auto-generated new package for each
source package)
- All parameters of a package shall carry a timestamp of last
change, and of the last time an entity (e.g. a part of the build
system, or an external user) concluded that the current value is
still valid — this allows for "questioning" automatically if
e.g. build instructions might be outdated
- Packaging software should be simple, and as many dependencies
between packages as possible should be identified
automatically
- Stay close to upstream versions
- Rolling releases, but allow for "strict snapshots" of a state by
installing a specific meta-package
Downloads
Installation instructions
This section must still be written, but here is the process in a
nutshell:
Download the livecd and repo (or the iso with embedded repo), boot
from it, format a disk, create a package manager config, install
desired packages (usually simply one of the tsl-* meta-packages,
which then pulls more packages in as dependencies), chroot, finish
installation, install a bootloader (BIOS grub, UEFI grub, or UEFI
stub booting).
The TSClient LEGACY Build System
The distribution's build system, which supports a multi-build-node
cluster can be found at https://git.tsclientlegacy.de/tslb.git/
(and https://github.com/erbth/tslb).
It uses a PostgreSQL database, Ceph storage, and the following
custom components:
- A centralized lock manager: TCLM
- A TCP-based message bus: YAMB
- The distribution's package manager: TPM2
About the name:
It's probably a bad name, but the first intended
usecase for the distribution where terminalserver clients, and they
should have been small and efficient. This requires to allow for
fully functional installations without frameworks like e.g. the
Python programming language's runtime, or other "modern" approaches
to writing UI software like Electron.js, which can require
substantial resources. Therefore, an installation providing a full
terminalserver client should use only what some might call "legacy"
technology today (even small programs are written in C++ etc.).
However note that other software can of course be installed - it
should just not be required by the distribution's core.
Contact
If you have questions etc., feel free to drop me an email at t.erbesdobler--at--tsclientlegacy.de .