# \[ANN\] install-julia-linux

**URL:** <https://discourse.julialang.org/t/ann-install-julia-linux/137585>\
**Category:** Tooling\
**Tags:** announcement\
**Created:** [June 12, 2026, 2:49pm UTC](https://discourse.julialang.org/t/ann-install-julia-linux/137585 "2026-06-12T14:49:25Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![nhz2](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nhz2/32/44428_2.png) [@nhz2](https://discourse.julialang.org/u/nhz2)\
**Post date:** [June 12, 2026, 2:49pm UTC](https://discourse.julialang.org/t/ann-install-julia-linux/137585/1 "2026-06-12T14:49:25Z")

</div>

> **[GitHub - nhz2/install-julia-linux: A script to install the Julia programming language...](https://github.com/nhz2/install-julia-linux)**
>
> A script to install the Julia programming language on Linux

I’ve created a shell script to install and manage Julia versions on Linux.

My goal was to combine my favorite features from the existing [jill.sh](https://github.com/abelsiqueira/jill), [jill.py](https://github.com/johnnychen94/jill.py), and [juliaup](https://github.com/JuliaLang/juliaup).

Features from `jill.py`/`jill.sh`:

1. Creation of convenient symlinks to `julia` executables
2. No auto updates
3. No locks
4. No changes to `.bashrc`

Features from `juliaup`:

1. PR versions
2. Switch between different architectures
3. Switch between patch versions

---

<div class="post-metadata">

**Author:** ![nhz2](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nhz2/32/44428_2.png) [@nhz2](https://discourse.julialang.org/u/nhz2)\
**Post date:** [June 15, 2026, 5:09pm UTC](https://discourse.julialang.org/t/ann-install-julia-linux/137585/3 "2026-06-15T17:09:31Z")

</div>

v0.2.0 adds a `manifest` command

`install-julia.sh manifest <path>`: Install the stable Julia version a project’s `Manifest.toml` was written with, and make it the default (path is a manifest file or a project dir).

---

<div class="post-metadata">

**Author:** ![nhz2](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nhz2/32/44428_2.png) [@nhz2](https://discourse.julialang.org/u/nhz2)\
**Post date:** [June 22, 2026, 10:18pm UTC](https://discourse.julialang.org/t/ann-install-julia-linux/137585/4 "2026-06-22T22:18:11Z")

</div>

v0.3.0 is released and adds support for macOS and FreeBSD.  
There is an `INSTALL_JULIA_TRIPLET` environment variable to override the triplet auto-detection.

---

<div class="post-metadata">

**Author:** ![nhz2](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nhz2/32/44428_2.png) [@nhz2](https://discourse.julialang.org/u/nhz2)\
**Post date:** [July 5, 2026, 1:01am UTC](https://discourse.julialang.org/t/ann-install-julia-linux/137585/5 "2026-07-05T01:01:56Z")

</div>

v0.4.0 is released and can install the new nightly and PR builds again!

### Added

- `install-julia.sh remove pr` deletes every installed PR build.
- `sqv` is supported as a signature verifier.
- The new julia release key is added from [PSA: All CI services temporarily halted - #9 by Keno](https://discourse.julialang.org/t/psa-all-ci-services-temporarily-halted/137559/9)  
The old key is still included but will be removed in a future release.

### Changed

- PR builds now download from Julia’s new ephemeral PR bucket (`https://julialang-ephemeral-pr.s3.amazonaws.com`, overridable with the new `INSTALL_JULIA_PR_URL` environment variable). The version specifier is now the full 40-char commit sha (e.g. `pr4d42a1b8c138fd80ce23624c43185bcf7051c6f2`, installed as `julia-pr4d42a1b8c1`) instead of `pr<number>`, which now fails.

---

<div class="post-metadata">

**Author:** ![jlapeyre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlapeyre/32/4514_2.png) [@jlapeyre](https://discourse.julialang.org/u/jlapeyre)\
**Post date:** [July 30, 2026, 2:36pm UTC](https://discourse.julialang.org/t/ann-install-julia-linux/137585/6 "2026-07-30T14:36:40Z")

</div>

I love this script. Hit the sweet spot for simplicity and features.

---

<div class="post-metadata">

**Author:** ![sinisterMage](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sinistermage/32/222897_2.png) [@sinisterMage](https://discourse.julialang.org/u/sinisterMage)\
**Post date:** [July 30, 2026, 5:40pm UTC](https://discourse.julialang.org/t/ann-install-julia-linux/137585/7 "2026-07-30T17:40:49Z")

</div>

just wondering, i looked at the readme and it says the script is POSIX, would it be possible to make it work on BSD systems as well as Linux?

---

<div class="post-metadata">

**Author:** ![nhz2](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nhz2/32/44428_2.png) [@nhz2](https://discourse.julialang.org/u/nhz2)\
**Post date:** [July 30, 2026, 6:27pm UTC](https://discourse.julialang.org/t/ann-install-julia-linux/137585/8 "2026-07-30T18:27:12Z")

</div>

Yes it works on FreeBSD and macOS if you have the required dependencies. The less common one is `gpgv` from `gnupg`.

---

<div class="post-metadata">

**Author:** ![sinisterMage](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sinistermage/32/222897_2.png) [@sinisterMage](https://discourse.julialang.org/u/sinisterMage)\
**Post date:** [July 30, 2026, 6:50pm UTC](https://discourse.julialang.org/t/ann-install-julia-linux/137585/9 "2026-07-30T18:50:11Z")

</div>

thats very cool!

---

<div class="post-metadata">

**Author:** ![nhz2](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nhz2/32/44428_2.png) [@nhz2](https://discourse.julialang.org/u/nhz2)\
**Post date:** [August 25, 2026, 4:50pm UTC](https://discourse.julialang.org/t/ann-install-julia-linux/137585/10 "2026-08-25T16:50:03Z")

</div>

Thanks to a name suggestion from @jlapeyre the short name for the script is now `jinstall`  
Here are the updated install instructions:

```sh
curl -fsSLO https://github.com/nhz2/install-julia-linux/releases/download/v0.4.0/install-julia.sh
chmod +x install-julia.sh
mv install-julia.sh ~/.local/bin/jinstall

```

This downloads the script (you can also just copy the file), makes it executable, and moves it to `~/.local/bin`. Make sure that directory is on your `PATH`.
