.\" compat32ctl.8 - manual page for compat32ctl .\" Copyright (C) 2026 Danilo M. .\" SPDX-License-Identifier: GPL-2.0-only .TH COMPAT32CTL 8 "2026-09-19" "compat32ctl" "System Administration" .SH NAME compat32ctl \- manage AlienBOB's compat32 packages on Slackware64 \-current .SH SYNOPSIS .B compat32ctl .I command .RI [ options ] .SH DESCRIPTION .B compat32ctl installs, updates and removes AlienBOB's collection of 32\-bit compatibility packages (the .B \-compat32 packages) on a Slackware64 .B \-current system. .PP On .B \-current the multilib capability is provided by Slackware's own .BR gcc (1) and .BR glibc , so no third\-party toolchain replacement is required; only the 32\-bit compatibility library layer is managed. Packages are sourced from .IR https://slackware.nl/people/alien/multilib/current . .PP The package tree is mirrored into a local cache, verified against the repository's .B CHECKSUMS.md5 file, and installed with .BR upgradepkg (8). .SH COMMANDS .TP .B sync Mirror the remote package tree into .I MIRROR_DIR using .BR lftp (1) with .BR "mirror \-c \-e" , then verify every downloaded file against .BR CHECKSUMS.md5 . .TP .B install Run .B sync and then install or upgrade .B compat32\-tools and every .B \-compat32 package with .BR "upgradepkg \-\-install\-new" . .TP .B update Identical to .BR install . Provided as a distinct verb for intent; the underlying command is idempotent, upgrading packages that are already installed and adding new ones. .TP .B remove Remove every installed package whose name contains .BR compat32 , covering both the .B \-compat32 libraries and .BR compat32\-tools . Does not touch the network and does not roll back .BR gcc / glibc , which are Slackware's own packages on .BR \-current . .TP .BR help ", " \-h ", " \-\-help Show the usage message. .SH OPTIONS .TP .BR \-n ", " \-\-dry\-run Print the commands that would be executed without running them. With this option the root and dependency checks are skipped, so the preview can be run as an unprivileged user. .TP .BR \-h ", " \-\-help Show the usage message. .SH ENVIRONMENT .TP .B REPO_URL Remote package tree to mirror. Default: .IR https://slackware.nl/people/alien/multilib/current . .TP .B MIRROR_DIR Local package cache. Default: .IR /var/cache/compat32 . .TP .B PKGDIR Directory holding installed\-package metadata, used by .BR remove . Default: .IR /var/log/packages . .SH FILES .TP .I /var/cache/compat32 Default local mirror (see .BR MIRROR_DIR ). .TP .I /var/log/packages Installed\-package database (see .BR PKGDIR ). .TP .I /etc/slackpkg/blacklist When .BR slackpkg (8) is used, the entries .B [0\-9]+alien and .B [0\-9]+compat32 should be present so slackpkg does not remove or replace the multilib packages. .SH EXIT STATUS .TP .B 0 Success. .TP .B 1 A usage error, a missing dependency, insufficient privileges, or a failing .BR upgradepkg (8) or .BR removepkg (8) invocation. The script runs with .BR "set \-e" , so any failing step aborts the run. .SH NOTES .SS Progress When run on a terminal, .BR lftp (1) displays a live status line for the file being transferred, including bytes transferred, percentage, transfer rate and estimated time. The .B \-v option passed to .B mirror also prints a .B "Transferring file" line for each file. When the output is not a terminal (for example under cron), no progress is shown. .SS Requirements .BR lftp (1) and .B md5sum are required for .BR sync ; .BR upgradepkg (8) and .BR removepkg (8) are required for the respective commands. Root is required for any command that modifies the system. .SH EXAMPLES Preview a sync without changing anything: .PP .RS 4 compat32ctl sync \-n .RE .PP Install or update the compat32 layer: .PP .RS 4 compat32ctl install .RE .PP Remove the compat32 layer: .PP .RS 4 compat32ctl remove .RE .PP Mirror into a staging directory instead of the system cache: .PP .RS 4 MIRROR_DIR=/srv/compat32 compat32ctl sync .RE .SH SEE ALSO .BR lftp (1), .BR upgradepkg (8), .BR removepkg (8), .BR installpkg (8), .BR slackpkg (8) .SH LICENSE GNU General Public License, version 2 only. .SH AUTHOR Written by Danilo M. .