FLDIGI Suite Setup Script ========================== Installs the latest available release of each of: FLDIGI, FLRIG, FLMSG, FLAMP How it's installed: Built from source (./configure && make && sudo make install) Source: w1hkj.org (https://www.w1hkj.org/) JS8Call How it's installed: Official prebuilt AppImage Source: js8call.com (https://js8call.com/) JS8Spotter How it's installed: Python source Source: sitrepnet.com (https://sitrepnet.com/) SitRepMapper How it's installed: Python source, in its own virtual environment Source: sitrepnet.com (https://sitrepnet.com/) Targets Debian-family Linux (Debian, Ubuntu, Linux Mint, Pop!_OS) and Raspberry Pi OS. The FLDIGI-family build approach is modeled loosely on gitlab.com/amrron/setup-scripts (https://gitlab.com/amrron/setup-scripts), trimmed down to just these programs -- no yad GUI, no radio/PTT configuration, no other bundled software. Usage ----- chmod +x install-sitrepnet-suite.sh ./install-sitrepnet-suite.sh The script will: 1. Detect your OS/architecture. 2. Report currently installed vs. latest available versions for every program. 3. With a real terminal and no --only given, ask which programs (if any) to skip -- press Enter to install everything. 4. Install dependencies via apt. 5. Download and install whatever was selected and is missing or out of date. 6. Create desktop launcher icons (optional). Where things end up ~~~~~~~~~~~~~~~~~~~~ - FLDIGI/FLRIG/FLMSG/FLAMP install system-wide via make install (typically /usr/local/bin). - JS8Call, JS8Spotter, and SitRepMapper install under ~/src/fldigi-suite// (see --build-dir) -- SitRepMapper gets its own Python virtual environment there (.venv/) so its pip dependencies never touch the system Python. - All seven get a /usr/local/bin/ launcher (so fldigi, js8call, js8spotter, sitrepmapper, etc. all just work from a terminal) and a desktop icon, unless --no-desktop-entries is given. Options ~~~~~~~ --only=NAME[,NAME...] Only act on the named program(s): fldigi, flrig, flmsg, flamp, js8call, js8spotter, sitrepmapper. Skips the interactive selection prompt. --check-only Just show installed vs. latest versions, don't install --force Rebuild/reinstall even if already at the latest version --skip-deps Skip apt-get install of dependencies --build-dir=DIR Where to download/install into (default ~/src/fldigi-suite) --jobs=N Parallel make jobs for the source builds (default: auto -- see Pi note below) --no-desktop-entries Don't create desktop launcher icons --fldigi-version=X.Y.Z Skip the latest-version lookup and use this exact version --flrig-version=X.Y.Z Same, for FLRIG --flmsg-version=X.Y.Z Same, for FLMSG --flamp-version=X.Y.Z Same, for FLAMP --js8call-version=X.Y.Z Same, for JS8Call --js8spotter-version=X.Y.Z Same, for JS8Spotter --sitrepmapper-version=X.Y.Z Same, for SitRepMapper --allow-unknown-latest If a program's version source is unreachable/unparseable and no --*-version was given, fall back to a hardcoded last-known-good version instead of skipping the program (opt-in; prints a loud warning when used) -h, --help Show usage If a program's version source is down or unreachable ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ By default, if the script can't reach or parse the source it uses to check a program's latest version (w1hkj.org's listing, JS8Call's GitHub releases, or SitRepNet's version endpoints), it skips that program with a warning rather than guessing. Two ways to install anyway: - ---version= -- pin an exact version yourself, bypassing the version lookup entirely. - --allow-unknown-latest -- fall back to a small hardcoded table of last-confirmed-good versions baked into the script. Caveat: each program's actual files are hosted on the same site/API as its version check, so if that whole source is actually down, neither option gets you a fresh download -- nothing can fetch code from a host that's unreachable. These options mainly help when just the version check fails to parse or is briefly flaky while the file server itself is still up. The fallback table can also go stale over time since it isn't live-checked, so it always prints a warning distinguishing it from a confirmed-live lookup -- treat it as "known to have worked before," not "definitely the latest." The script does no checksum/signature verification on downloads either way. Raspberry Pi notes ~~~~~~~~~~~~~~~~~~~ FLDIGI's compile is memory-hungry and can get OOM-killed with a high -j count on boards with < 2GB RAM. The script auto-detects total RAM and defaults to -j1 below that threshold. If a build still fails partway through, add swap and re-run, or pass --jobs=1 explicitly. Re-running / updating ---------------------- Re-run the script any time -- it checks installed versions against the latest available release of each program and only reinstalls what's out of date (use --force to reinstall anyway).