A bash wrapper for sbopkg that recursively resolves and installs SlackBuild packages and their dependencies from SlackBuilds.org.
multisbo automates the installation of a target SlackBuild package and all its required dependencies as defined in the .info file’s REQUIRES field. It handles dependency trees and several edge cases that the standard sbopkg tool does not cover automatically.
- Recursive dependency resolution with cycle detection.
- Respects the
REQUIRESfield of each.infofile. - Non‑interactive operation by default (using
sbopkg -B -k -e continue); interactive mode available via--interactive. - Caches all
.infofile locations after the first run to speed up subsequent invocations. - Pre‑downloads all source tarballs (handles multi‑file
DOWNLOADentries). - Falls back to a direct SlackBuild + installpkg when sbopkg fails – for example, when it mishandles redirected GitHub URLs, multi‑line DOWNLOAD entries, or MD5 checksum ordering.
- Logs all actions to
/tmp/multisbo.log. - Package detection: checks
/var/log/packages/before attempting installation.
- Slackware Linux (tested on 15.0 and -current).
sbopkg(installed and configured with a synced SBo repository).sudoprivileges to runsbopkgandinstallpkg.- Standard shell utilities:
grep,sed,tr,find,ls,wget,installpkg,bc.
- Install
sbopkg:wget https://github.com/sbopkg/sbopkg/releases/download/0.38.3/sbopkg-0.38.3-noarch-1_wsr.tgz sudo installpkg sbopkg-0.38.3-noarch-1_wsr.tgz
- Download the script
wget https://raw.githubusercontent.com/annemedia/multisbo/refs/heads/main/multisbo
- Make it executable:
chmod +x multisbo
- Move it to bin (e.g.,
/usr/sbin/,~/bin/or/usr/local/bin/).sudo mv multisbo /usr/sbin/
- Ensure
sbopkgis synced:sudo sbopkg -r
multisbo [OPTIONS] <package_name>
| Option | Description |
|---|---|
--interactive |
Run sbopkg in interactive mode (without -B -k -e continue). |
-h, --help |
Display help and exit. |
Install letsencrypt without confirmation:
multisbo letsencryptInstall letsencrypt, interactively:
multisbo --interactive letsencrypt- Determines the Slackware version from
/etc/slackware-version(fallback: 15.0). - Builds or loads a persistent cache of all
.infofile locations (stored in~/.cache/multisbo/). - Recursively examines the target package’s
REQUIRESfield. - For each package not already installed:
- Downloads all source files defined in
DOWNLOAD(andDOWNLOAD_x86_64, etc.) into/var/cache/sbopkg/. - Executes
sbopkg -B -k -e continue -i <package>. - If
sbopkgsucceeds (exit 0) or fails with exit 1 but the package appears in/var/log/packages/, the package is considered installed. - If
sbopkgfails and the package is not installed, the script falls back to a direct build: it runs theSlackBuildscript and installs the resulting package withinstallpkg.
- Downloads all source files defined in
- Records any failures and presents a summary at the end.
sbopkgitself contains bugs with multi‑lineDOWNLOADand swapped MD5 checksums;multisboworks around these via the direct build fallback.- The persistent cache is not automatically updated when the SBo repository changes (e.g., after
sbopkg -r). If you sync the repository, delete the cache file (~/.cache/multisbo/<version>.cache) to force a rebuild. - If a circular dependency is detected (e.g., package A requires B, and B requires A), the script aborts with an error message. It does not attempt to break the cycle automatically.
All operations are logged to /tmp/multisbo.log. The log includes timestamps, executed commands, and all output from sbopkg, wget, and SlackBuild scripts.
This script is released under the CC0 1.0 Universal. See the LICENSE file for details.
multisbo was created to make SlackBuilds.org dependency handling more accessible to end users. It works alongside sbopkg, automating the recursive installation of required packages and providing a fallback build mechanism for edge cases where sbopkg alone would need manual intervention. Contributions and issue reports are welcome.