Install

Three install paths — static binary first, distro package manager second, source build third.

1. Static binary (one line)

The fastest and most portable install path. Use x eget — x-cmd's wrapper around the upstream GitHub release pipeline:

x eget ljh-sh/lhasa    # ~200 KB, zero deps, multi-arch static build

The installed CLI is named lha (not lhasa — the project deliberately mirrors the original LHa for UNIX command). After install:

$ lha --help | head -1
Lhasa v0.6.0 command line LHA tool  - Copyright (C) 2011-2025 Simon Howard

What the eget install does

Manual install from a release archive

Grab the per-platform tarball/zip directly from releases/latest:

PlatformFileLinkage
Linux x86_64 lhasa-x86_64-linux-musl.tar.gz Static musl — runs on every Linux distro.
Linux ARM64 lhasa-aarch64-linux-musl.tar.gz Static musl — aarch64 Linux.
macOS Apple Silicon lhasa-aarch64-macos.tar.gz Static; uses system libc++/libSystem.
macOS Intel lhasa-x86_64-macos.tar.gz Static; cross-compiled from Apple Silicon.
Windows x86_64 lhasa-x86_64-windows.zip Static; MinGW. No VC redistributables.
tar xzf lhasa-x86_64-linux-musl.tar.gz
sudo install -m 0755 lhasa-x86_64-linux-musl/bin/lha /usr/local/bin/lha
sudo install -m 0644 lhasa-x86_64-linux-musl/man/man1/lha.1 /usr/local/share/man/man1/
man lha

2. Distro package manager

If you already use x install lhasa, x-cmd resolves to your distro's official lhasa package — identical source to ljh-sh/lhasa. Distro-table:

x install lhasa    # apt / brew / pacman / zypper / xbps-install / pkg / pkgin

Distribution package installs:

OS familyinstall command
Debian / Ubuntu / Kali / Raspbian sudo apt install lhasa
macOS brew install lhasa
Arch Linux yay -S lhasa-git
FreeBSD pkg install archivers/lhasa
NetBSD pkgin install lhasa
openSUSE sudo zypper install lhasa
Void sudo xbps-install lhasa

Distro lhasa packages install the binary as /usr/bin/lha (upstream convention). If both lhasa and any lha-named binary are on your PATH, the first wins; run which lha to confirm.

3. Build from source

Vendored source is in upstream/lhasa/, fetched via git subtree from fragglet/lhasa. Build commands:

git clone https://github.com/ljh-sh/lhasa.git
cd lhasa
bash scripts/build.sh
bash scripts/smoke.sh

To refresh vendoring when upstream advances:

git subtree pull --prefix=upstream/lhasa https://github.com/fragglet/lhasa.git master --squash

The wrapper scripts mirror what CI does: out-of-tree build via autoreconf -is, then configure && make. See build audit for the per-platform CI shape.