tum
(TheUnixManager) is a universal package management and system initialization library created by Archetypum, designed to simplify interactions with UNIX-like operating systems and streamline the development of system-related bash/shell scripts.
This is the Bash implementation of tum
.
- Why?
- What does it solve?
- Use Cases
- Requirements
- Installation
- Documentation
- Supported Package Management Utilities (35)
- Supported Initialization Systems (7)
- Example Usage
- Other Implementations by Archetypum
- Legal
Because interacting with countless package managers and init systems across UNIX-like platforms is painful — tum
fixes that.
With tum
, you:
-
Don't need to be a UNIX maniac who knows every package manager and init system syntax and arguments by heart;
-
Don't waste time building utilities from scratch — core functions are prebuilt and ready;
-
Don't write bloated, error-prone scripts — your code stays clean, readable, and portable.
Managing packages and system services is inconsistent across distros. Whether you're scripting for Arch, Debian, Void, Slackware, Red Hat, or others, tum
provides a unified interface to abstract those differences.
It gives you:
-
A standardized way to install, remove, purge, update, upgrade packages (any many more!);
-
Unified service control (status, start, stop, enable, etc.) across multiple init systems (and many more);
-
A modular approach to extend support for more tools and distros;
-
Shell-friendly integration for faster development and cleaner scripts.
-
Write portable installation scripts that “just work” on most UNIX-like systems;
-
Build lightweight system provisioning tools in pure Bash;
-
Create consistent automation for servers, containers, or virtual machines;
-
Prototype cross-distro sysadmin tools without rewriting core logic.
tum
executable consists of 1239 lines of pure bash (without empty lines and comments) that makes your code support 400+ GNU/Linux, BSD and macOS distros. That makes tum
a very small and lightweight dependency in your project.
Your users can install it in just three commands and forget about tum
existence for forever, because their cross-platform scripts are working just like intended.
So why not give it a shot?
tum
requires only one dependency - GNU Bash version >3.2+
. You can install it on practically any UNIX-like operating system if you somehow don't have it installed already.
- Via Makefile:
git clone https://github.com/Archetypum/tum-bash.git
cd tum-bash/
# You can use doas instead of sudo.
sudo make dependencies
sudo make install
- Also, you can use
tum-bash
modules separately if you only need to use some specific functionality:
cp lib/unix.sh your_desired_location/
cp lib/package_manager/apt.sh your_desired_location/
cp lib/init_system/systemd.sh your_desired_location/
You can find tum-bash
documentation inside the doc/
directory.
- apt, apt-get, apt-cache, apt-cdrom, apt-config, apt-extracttemplates, apt-listchanges, apt-mark, apt-sortpkgs, aptitude, aptitude-create-state-bundle, aptitude-run-state-bundle, dpkg
- pacman, yay, trizen, pamac
- portage (open for pull requests)
- slackpkg
- apk
- xbps-install, xbps-remove, xbps-query
- guix
- qi
- pkg_add, pkg_delete, pkg_create, pkg_info
- pkg
- pkgin
- yum, dnf
- zypper, zypper-log
- homebrew
-
systemd
-
sysvinit
-
openrc
-
runit
-
s6
-
dinit
-
launchd
#!/usr/bin/env bash
source /usr/bin/tum
distro=$(get_user_distro)
init=$(get_init_system)
init_comm=$(get_pid1_comm)
check_privileges # example: [*] Success! Root privileges are present.
echo $distro # example: artix
echo $init # example: s6
echo $init_comm # example: s6-svscan
#!/bin/bash
source sysvinit.sh
SERVICE_NAME="ssh"
echo -e "${GREEN}Starting service '$SERVICE_NAME'...${RESET}"
start_service "$SERVICE_NAME"
echo -e "${GREEN}Checking status of service '$SERVICE_NAME'...${RESET}"
status_service "$SERVICE_NAME"
echo -e "${GREEN}Restarting service '$SERVICE_NAME' using execute_service function...${RESET}"
execute_service restart "$SERVICE_NAME"
echo -e "${GREEN}Stopping service '$SERVICE_NAME'...${RESET}"
stop_service "$SERVICE_NAME"
echo -e "${GREEN}Trying unknown command with execute_service...${RESET}"
execute_service foobar "$SERVICE_NAME"
#!/bin/bash
source apk.sh
echo "=== Display apk version ==="
apk_version
echo -e "\n=== Show apk help ==="
apk_help
echo -e "\n=== Update package index ==="
apk_update
echo -e "\n=== Search for package 'bash' ==="
apk_search bash
echo -e "\n=== Show info about package 'bash' ==="
apk_info bash
echo -e "\n=== List installed packages ==="
apk_list
echo -e "\n=== Add package 'curl' (dry-run) ==="
apk_add --simulate curl
echo -e "\n=== Remove package 'curl' (dry-run) ==="
apk_del --simulate curl
tum-bash
is free software, released under the GNU Lesser General Public License v3.
See: