Skip to content

v0.3.0 — arc-sync self-update

Choose a tag to compare

@ATECHPCS ATECHPCS released this 01 May 16:39
· 60 commits to main since this release

Headline: arc-sync self-update — hosts can now pull the latest binary from the relay with a single subcommand. Atomic, idempotent, and a clean drop-in for nightly cron.

What's new

  • arc-sync self-update — replaces the running binary with the latest from the configured relay's /download/ endpoint
    • Same-directory atomic rename (no torn writes)
    • Hash-based no-op: re-running with no upstream change is exit-0 silent
    • 1 MiB min-size sanity check (catches captive portals, partial transfers)
    • Preserves the existing binary's mode bits (root-owned installs stay root-owned)
    • Flags: --dry-run (fetch + hash, don't replace), --json (single-line cron-log-friendly output)
    • macOS prints a follow-up codesign --force --sign - reminder after replacing (avoids amfid SIGKILL on adhoc-signed Go binaries)

Use it

arc-sync self-update                    # human output
arc-sync self-update --dry-run          # preview only
arc-sync self-update --json             # for cron / log scraping

Cron-friendly:

30 3 * * * root arc-sync self-update --json >> /var/log/arc-sync.log 2>&1

This retires the standalone /etc/cron.d/arc-sync-update shell script we'd deployed on hosts as a stopgap.

Compatibility

  • arc-sync v0.3.0 is binary-compatible with arc-relay v0.2.0+ (no relay-side changes required for self-update).
  • The relay's /download/<binary> endpoint already serves these v0.3.0 assets if ARC_RELAY_DOWNLOAD_REPO=ATECHPCS/arc-relay (default since v0.2.0).