3
5
Fork
You've already forked xut
3
xtra user templates - Build and install packages for Void Linux, using templates from the abyss-packages unofficial repo
  • Shell 84.2%
  • Roff 13.9%
  • Makefile 1.9%
Find a file
2026年07月05日 16:18:15 +02:00
.forgejo/workflows Add CI testing capabilities 2026年03月15日 19:43:30 +02:00
.woodpecker Add CI testing capabilities 2026年03月15日 19:43:30 +02:00
spec Add CI testing capabilities 2026年03月15日 19:43:30 +02:00
.shellspec Add CI testing capabilities 2026年03月15日 19:43:30 +02:00
LICENSE Add the proper license... 2024年11月17日 20:28:17 +02:00
Makefile Fix Makefile 2025年12月21日 18:53:52 +01:00
README.md xut: add documentation for the -U argument. 2026年07月05日 16:17:40 +02:00
xut use the variable for default repo in awk, make find_repodir better 2026年07月05日 16:17:40 +02:00
xut.1 xut: add documentation for the -U argument. 2026年07月05日 16:17:40 +02:00
xut.1.scd xut: add documentation for the -U argument. 2026年07月05日 16:17:40 +02:00
xutconf.sample change additions_repos to additionalRepos, both xut and xutconf. 2025年12月25日 19:01:29 +02:00

xut : xtra user templates

Installs and updates unofficial packages for Void Linux.

Created and tested for/with the abyss-packages repo. Working with other unofficial repos is supported partially. Code contributions, testing and general coordination is highly appreciated!

This script is in the alpha stage.

Why and how

The xbps-src package builder for voidlinux is a really powerful tool, but it only works with a single repository, the void-packages repo. The only straightforward way to add software to repo provide it in an accessible way to the users is to send PRs and be accepted. That created a well-maintained and curated repository by the distribution developers but impedes the inclusion of software that the same maintainers decide - for entirely valid reasons - to not accept.

xut tries to provide a solution for users that need more packages that cannot be provided in the official repos. It clones the void-packages, the abyss-packages repository and possibly other third party repos, merges the templates from unofficial repos to the clone of void-packages and installs or updates sw with a single command.

Install and setup

  1. Clone this repo, run the xut command directly from the clone or install using the Makefile.
  2. Use the xutconf.sample if you want to modify configuration.
  3. The script depends on:
    • sh and the posix userland (*),
    • xbps >= 0.60,
    • git,
    • mktemp,
    • the xi tool from the xtools package which requires a working sudo configuration, (for installation/update).
    • the tput tool from ncurses (optional).

Note that xut will run in other distributions that have the above tools available, but installing (-i) and upgrading (-u) packages is disabled. In this case, xi is not needed.

(*) xut uses posix sh and tries to use only the posix userland utilities. The local keyword may be used in the future, but effort is being made to use only the extensions that are supported in gnu coreutils, busybox and the bsd userland (additional arguments).

Todo

  • Deal with shlibs in order to package more complex sw or modified packages from the upstream repos.
  • Implement a way to handle package updates gracefully. [-u argument]
  • Search for a practical way to enable more than one unofficial repos (Inteligent merging by @zenobit available from 0.4.1).
  • ... (suggestions are welcome, working code even more welcome)

Usage

xut [options]
OPTIONS Info
-s Sync the repos
-l Keep a log file (5 most recent log files remain)
-h Display this usage information.
-d Enable debugging and logging output.
-b <package1,package2> Build a (comma-separated) list of packages.
-i <package1,package2> Build and install a (comma-separated) list of packages.
-x Give xbps-src commands.
-q Search for in available templates.
-u Update packages.
-U Update all installed packages, official or not,
rebuild what is not in the repos.

Examples

  • Build packages (without installing them):
xut -b package1,package2
  • Sync repos and install packages:
xut -si package1,package2
  • Use the above command with logging enabled:
xut -sli package1,package2
  • Execute an xbps-command in the merged repo:
xut -x <command>
  • Update packages after syncing repos:
xut -su