Skip to content

Bundle Installation Methods

Every practical way to install and distribute a multi-component software bundle — a product made of several parts (a database, a server, a CLI) that must end up working together on a user's machine. Each method here comes with how it works, an example, and honest pros & cons.

There is no single best method — there's a trade-off between shipping fast with low friction (script pipes, Docker) and trust, polish & discoverability (signed installers, OS package managers). Use this site to pick deliberately.

Compare all methods How to choose


⭐ Why major players lead with curl | sh and irm | iex

The one-liner pattern

The most common "Get started" command in modern developer tools is a single line that pipes a hosted install script into the shell. irm | iex is just the PowerShell-native equivalent of curl | shInvoke-RestMethod downloads, Invoke-Expression runs — and PowerShell ships in Windows, so it needs nothing else.

curl -fsSL https://example.com/install.sh | sh
irm https://example.com/install.ps1 | iex

Shipped this way by Claude Code, OpenAI Codex, rustup, Homebrew, Deno, Bun, uv, Ollama, nvm, Tailscale, k3s, Docker and many more.

Tool Get-started command (abridged)
Claude Code curl -fsSL https://claude.ai/install.sh \| bash · irm https://claude.ai/install.ps1 \| iex
OpenAI Codex CLI one-line script / npm bootstrap — same pattern
Rust (rustup) curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \| sh
Homebrew /bin/bash -c "$(curl -fsSL …/install.sh)"
Deno curl -fsSL https://deno.land/install.sh \| sh
Bun curl -fsSL https://bun.sh/install \| bash
uv (Astral) curl -LsSf https://astral.sh/uv/install.sh \| sh
Ollama curl -fsSL https://ollama.com/install.sh \| sh

Why they converge on it: one line, zero prerequisites · cross-platform parity · adaptive to OS/arch · does the whole job (PATH, services, config, multi-component startup) · ships & updates instantly · trivial in CI. The honest trade-off is trust — the user runs code they haven't read — which the verified variant and security guide address.

Read the full breakdown


Explore


The 20 methods

# Method Platforms Best stage
1 Script pipe (curl\|sh, irm\|iex) All MVP
2 Download → verify → run All MVP+
3 Homebrew macOS, Linux Growth → Mature
4 Winget Windows Mature
5 Scoop Windows Growth
6 Chocolatey Windows Growth → Mature
7 Linux native (deb/rpm) Linux Mature
8 Snap / Flatpak Linux Growth → Mature
9 pip / pipx / uvx All MVP → Growth
10 npm / npx All MVP → Growth
11 cargo / go / gem All Niche
12 Docker run / pull All MVP
13 Docker Compose All MVP (multi)
14 Docker socket bootstrap All CI/demo only
15 Helm / Kubernetes K8s Mature (cloud)
16 Native installers Per-OS Mature
17 GitHub Releases (binaries) All MVP → Growth
18 Version managers (asdf/mise/proto) All Niche (devs)
19 IaC & cloud marketplace Cloud Mature (cloud)
20 Source build All Fallback

See the full scored Comparison matrix, then the Decision guide.


Case study

This catalog grew out of bundling Exasol components (Nano / Personal + MCP Server + JSON Tables) into a one-command install. See why curl | sh + Docker Compose was chosen.