diff --git a/bin/panama b/bin/panama index e5774e6..734fa7b 100755 --- a/bin/panama +++ b/bin/panama @@ -92,7 +92,7 @@ ${BOLD}Examples:${RESET} $PROGRAM upgrade $PROGRAM apps $PROGRAM app - $PROGRAM app claude-desktop + $PROGRAM app chatgpt-desktop EOF } diff --git a/setup/apps/claude-desktop b/setup/apps/claude-desktop deleted file mode 100644 index ab1951c..0000000 --- a/setup/apps/claude-desktop +++ /dev/null @@ -1,28 +0,0 @@ -# Claude Desktop. -# -# Anthropic ships macOS and Windows only. This is a community wrapper that -# downloads the official build, bundles Electron, and packages the result as a -# proper Fedora RPM -- so what lands on the system is still a package dnf owns -# and can remove, which is the part of the dnf/flatpak rule that matters most. -# -# The exception it needs is the build itself. There is no RPM or flatpak of -# Claude Desktop to install, so the choice is building one or not having it. -# Nothing is pinned: the default branch is built every time, and a failure is -# reported rather than worked around. sunhat pinned versions and every pin was -# a 404 within a release cycle. - -description="Claude Desktop, built into a Fedora RPM" -repo="https://github.com/dewzor/claude-desktop-fedora.git" - -# The upstream script installs its own build dependencies and prints the RPM it -# produced. It needs root because of that dependency install. -build() { - sudo ./build-fedora.sh - - local rpm - rpm="$(find build -name 'claude-desktop-*.rpm' -newermt '-1 hour' 2>/dev/null | head -1)" - [[ -n "$rpm" ]] || rpm="$(find . -name 'claude-desktop-*.rpm' 2>/dev/null | head -1)" - [[ -n "$rpm" ]] || { printf 'the build produced no RPM\n' >&2; return 1; } - - sudo dnf install -y "$rpm" -} diff --git a/setup/scripts/install-packages b/setup/scripts/install-packages index 5ec6445..58b1a7a 100755 --- a/setup/scripts/install-packages +++ b/setup/scripts/install-packages @@ -151,10 +151,14 @@ fi # --- Applications no repository packages ------------------------------------- # -# Everything else Panama installs comes from dnf or Flathub. These three do not +# Everything else Panama installs comes from dnf or Flathub. These four do not # exist in either, so each is an explicit exception with a reason, and each is # skipped when already present so a re-run costs nothing. # +# Claude Desktop is the half-exception: a repository does carry it, just not one +# Fedora or Flathub knows about, so what is exceptional there is adding the +# repository rather than installing around one. +# # None of them pins a version. sunhat pinned URLs -- upscayl 2.11.5, LACT 0.5.4, # a fedora-40 RPM -- and every one of them was a 404 within a release cycle. An # installer that resolves "latest" keeps working; one that names a version rots. @@ -180,6 +184,28 @@ else curl -fsSL https://claude.ai/install.sh | bash > /dev/null 2>&1 || log "Claude Code install failed; skipping" fi +# Claude Desktop: Anthropic ships macOS and Windows only, so this is a community +# RPM built from the official release. Panama used to build it from source -- it +# was `panama app claude-desktop` -- because no repository carried it. Upstream +# publishes one now, which is strictly better: the result upgrades with every +# other package instead of needing a slow rebuild each time a version ships. +# +# The repository is added by upstream's own setup script rather than by writing +# the .repo file out here. A baseurl copied into this repository is a pin by +# another name, and that script is the part upstream keeps correct. +if rpm -q claude-desktop-extra >/dev/null 2>&1; then + log "Claude Desktop already installed" +else + if [[ ! -f /etc/yum.repos.d/claude-desktop.repo ]]; then + log "Adding the Claude Desktop repository..." + curl -fsSL https://patrickjaja.github.io/claude-desktop-extra/install-rpm.sh \ + | sudo bash > /dev/null 2>&1 || log "Could not add the Claude Desktop repository" + fi + log "Installing Claude Desktop..." + sudo dnf install -y claude-desktop-extra > /dev/null \ + || log "Claude Desktop install failed; skipping" +fi + # RustDesk: remote desktop. The flatpak cannot register the root-owned system # service that unattended access needs -- see panama-doctor's rustdesk check -- # so this takes the RPM. The download URL is resolved from the latest release diff --git a/tests/setup/launcher-search-contract b/tests/setup/launcher-search-contract index f48c118..bc44f37 100755 --- a/tests/setup/launcher-search-contract +++ b/tests/setup/launcher-search-contract @@ -106,8 +106,9 @@ grep -q 'command -v npm' "$stage" \ # Checking for npm is not enough. Node comes from nvm, whose script only an # interactive shell sources -- and a stage is not one, so npm is absent unless # the stage goes and gets it. This machine hid that: a system npm existed only -# because Claude Desktop depends on nodejs. Without this line, a fresh install -# builds no extension and says so in one line nobody reads. +# because the Claude Desktop of the day pulled in nodejs. It no longer does, so +# nothing hides it any more. Without this line, a fresh install builds no +# extension and says so in one line nobody reads. grep -q '/etc/profile.d/nvm.sh' "$stage" \ || note 'the extension build never sources nvm, so npm is missing on any machine without a system node'