Skip to content

fix(recipes): give ollama (and the generator) a Linux curl install path#65

Merged
noahhyden merged 1 commit into
mainfrom
fix/ollama-linux-curl-install
Jul 21, 2026
Merged

fix(recipes): give ollama (and the generator) a Linux curl install path#65
noahhyden merged 1 commit into
mainfrom
fix/ollama-linux-curl-install

Conversation

@noahhyden

Copy link
Copy Markdown
Owner

The bug

ollama only had homebrew (macOS) + winget (Windows) install methods. On a plain Linux box with no Homebrew, every install guard fails and bootstrap dead-ends with no method. Ollama's canonical Linux install — curl -fsSL https://ollama.com/install.sh | sh — had nowhere to live.

Root cause: the generator, not just the YAML

recipes/ollama.yaml is generated from a seed in scripts/recipe_data.py, and scripts/gen_recipes.py only knew brew/winget/language-manager methods. So any Linux-only-via-curl tool has the same hole, and a hand-edit to ollama.yaml would be clobbered on the next --rewrite.

Fix

  • Add a reusable curl install-method type to the generator: a curl seed field (the install-script URL) renders curl -fsSL <url> | sh.
  • Emitted last in the preference order — after winget too, since Windows also ships curl — so it only fires when no managed installer matches (e.g. plain Linux).
  • Wired into both install and update (re-running the script upgrades to latest).
  • Seeded on ollama; regenerated with --rewrite (only ollama.yaml drifted — the other 482 rows render byte-identical, so no hand-curation touched).

Verification

  • On this Linux host (no brew, no winget, has curl): erbina now selects curl -fsSL https://ollama.com/install.sh | sh for both install and update.
  • lint_recipes.py: all 520 valid.
  • pytest: 3620 passed, 511 skipped.

🤖 Generated with Claude Code

ollama only had `homebrew` + `winget` install methods, so on a plain Linux
box with no Homebrew every install guard failed and bootstrap dead-ended
with no method — ollama's canonical Linux install (`curl -fsSL
https://ollama.com/install.sh | sh`) had nowhere to live.

The gap was in the generator, not just the YAML: gen_recipes.py only knew
`brew`/`winget`/language-manager methods, so any Linux-only-via-curl tool
had the same hole (and a hand-edit to ollama.yaml would be clobbered on the
next --rewrite).

Add a reusable `curl` method type: a `curl` seed field (the install-script
URL) renders `curl -fsSL <url> | sh`, emitted LAST in the preference order —
after winget too, since Windows also ships `curl` — so it only fires when no
managed installer matches. Wired into both install and update (re-running
the script upgrades). Seed it on ollama and regenerate (only ollama.yaml
drifts). Verified on this Linux host: erbina now picks the curl method for
install and update. Lint + full pytest suite green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@noahhyden
noahhyden merged commit 47e1d4d into main Jul 21, 2026
5 checks passed
@noahhyden
noahhyden deleted the fix/ollama-linux-curl-install branch July 21, 2026 00:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant