compat32ctl
Install, update and remove AlienBOB's -compat32 package collection on a
Slackware64 -current system.
On -current the multilib capability is built into Slackware's own gcc and
glibc packages (added 2024-08-30), so no third-party toolchain replacement is
needed. What is still required is the layer of 32-bit compatibility packages,
which this script manages from
https://slackware.nl/people/alien/multilib/current.
Requirements
- Slackware64
-current lftp(mirroring),md5sum(verification)- Slackware
pkgtools(upgradepkg,removepkg) for install/update/remove - root for any command that modifies the system (
syncalso writes to the default cache directory, so run it as root too;--dry-runworks unprivileged)
Usage
compat32ctl sync # download/refresh the package tree and verify checksums
compat32ctl install # sync, then install compat32-tools and all -compat32 packages
compat32ctl update # same as install (upgradepkg --install-new upgrades existing)
compat32ctl remove # remove every installed compat32 package
compat32ctl <command> -n # dry run: print the commands without executing them
compat32ctl help
install and update are the same idempotent flow: upgradepkg --install-new
upgrades packages that are already installed and adds any new ones, so the same
command serves both first-time setup and later refreshes.
Configuration
Overridable via environment variables:
| Variable | Default | Purpose |
|---|---|---|
REPO_URL |
https://slackware.nl/people/alien/multilib/current |
Remote package tree |
MIRROR_DIR |
/var/cache/compat32 |
Local package cache |
PKGDIR |
/var/log/packages |
Installed-package database |
Example: mirror to a staging directory instead of the system cache:
MIRROR_DIR=/srv/compat32 compat32ctl sync
How it works
- sync mirrors the remote tree with
lftp ... mirror -c -e -v(incremental, resumable, prunes locally deleted/stale files) intoMIRROR_DIR, then verifies the packages against the repository'sCHECKSUMS.md5withmd5sum -c --ignore-missing. - install/update run
sync, thenupgradepkg --install-newovercompat32-tools-*.tgzandslackware64-compat32/*-compat32/*.t?z. - remove deletes every installed package whose name contains
compat32(the-compat32libraries pluscompat32-tools). Nogcc/glibcrollback is needed on-current, since those are Slackware's own packages.
Download progress
When run on a terminal, lftp shows a live status line for the file being
transferred (bytes, percentage, rate, ETA), and mirror -v prints a
Transferring file line per file. Progress is only shown when the output is a
terminal; under cron or a non-interactive pipe the transfer is silent.
Note for slackpkg users
If you use slackpkg, add these lines to /etc/slackpkg/blacklist so it does
not remove or replace the multilib packages:
[0-9]+alien
[0-9]+compat32
Man page
compat32ctl.8 documents the script. Install it into section 8 with:
install -Dm644 compat32ctl.8 /usr/man/man8/compat32ctl.8
Then read it with man compat32ctl.
Testing
test_compat32ctl.sh runs unprivileged and exercises argument handling and the
--dry-run previews, including the remove-discovery logic against a temporary
package database:
./test_compat32ctl.sh
License
GPL v2.0 (see LICENSE).
Development Approach
This project is developed using AI-assisted tools. Code is generated with the help of AI based on human-provided specifications, design decisions, and iterative feedback.
All contributions are reviewed, tested, and curated by the maintainer before being included in the codebase. AI is used as a productivity and exploration tool, while human oversight remains central to all decisions.
The goal is to combine the flexibility of AI-assisted development with standard open-source practices such as transparency, review, and accountability.
