---
name: installing-julia
description: Use when your machine does not have JuliaLang runtime
---
# Installing Julia
If your machine does not have the Julia programming language runtime installed, follow the instructions below to install it.
## Preferred: official installer
On macOS or Linux, run the following command:
```sh
$ curl -fsSL https://install.julialang.org | sh -s -- --yes
```
On Windows, run the following command in PowerShell:
```PS
PS> winget install --name Julia --id 9NJNWW8PVKMN -e -s msstore
```
## Fallback: direct tarball install
Use this method when the `curl | sh` installer cannot run — for example, when a
sandbox or permission policy blocks piping a remote script directly into `sh`
(the "Code from External" pattern). This downloads the same official Julia
binary the installer would fetch, but as a plain file you extract locally
— no shell-pipe-to-interpreter.
### Steps (macOS / Linux)
1. Detect platform with `uname -s` (Linux / Darwin) and `uname -m` (x86_64 / aarch64 / arm64).
2. Pick the URL fragment matching your platform:
| OS / Arch | URL path | Tarball suffix |
|------------------------|-----------------|------------------------|
| Linux x86_64 | `linux/x64` | `linux-x86_64.tar.gz` |
| Linux aarch64 | `linux/aarch64` | `linux-aarch64.tar.gz` |
| macOS x86_64 (Intel) | `mac/x64` | `mac-x86_64.tar.gz` |
| macOS aarch64 (Apple) | `mac/aarch64` | `macaarch64.tar.gz` |
3. Resolve the latest stable patch (see [[finding-latest-julia-version]] for
the full set of methods — do not hard-code `VERSION=` from memory), then
download and extract:
```sh
VERSION=$(curl -fsSL https://julialang-s3.julialang.org/bin/versions.json \
| jq -r 'to_entries | map(select(.value.stable)) | map(.key)
| sort_by(split(".") | map(tonumber? // 0)) | last')
MINOR=${VERSION%.*} # → e.g. 1.12
ARCH_PATH=linux/aarch64 # ← from table above
ARCH_SUFFIX=linux-aarch64 # ← from table above
mkdir -p ~/julia-install && cd ~/julia-install
curl -fsSLO "https://julialang-s3.julialang.org/bin/${ARCH_PATH}/${MINOR}/julia-${VERSION}-${ARCH_SUFFIX}.tar.gz"
tar -xzf "julia-${VERSION}-${ARCH_SUFFIX}.tar.gz"
export PATH="$HOME/julia-install/julia-${VERSION}/bin:$PATH"
julia --version
```
4. To persist `PATH` across sessions, append the `export PATH=...` line to
`~/.bashrc`, `~/.zshrc`, or the appropriate shell profile.
### Windows fallback
If `winget` is unavailable, download the `.zip` package from
, extract it, and add the inner `bin\` directory to `PATH`.
### Notes
- The tarball is the same artifact the official installer / `juliaup` would fetch — only the delivery mechanism differs.
- Version switching via `juliaup add ` is NOT available with this method; install another tarball to use a different version.
- In container or CI environments where `PATH` is set per-command, reference `julia` by full path (`$HOME/julia-install/julia-/bin/julia`) instead of relying on shell profile.