# Latest Julia binaries: A static URL

**URL:** https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932
**Category:** General Usage
**Tags:** versions
**Created:** [August 6, 2021, 9:07am UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932 "2021-08-06T09:07:31Z")
**Posts on this page:** 16
**Page:** 1

<div class="post-metadata">

### Author: ![fedario](https://avatars.discourse-cdn.com/v4/letter/f/f14d63/32.png) [@fedario](https://discourse.julialang.org/u/fedario)
#### Post date: [August 6, 2021, 9:07am UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/1 "2021-08-06T09:07:32Z")

</div>

Hi all,

I prefer to setup my Linux system as automatically as possible using a setup script.  
Currently, I’m downloading the latest Julia binary manually since with each version the URL changes.  
For example:  
`https://julialang-s3.julialang.org/bin/linux/x64/1.6/julia-1.6.2-linux-x86_64.tar.gz`

Is there a URL that always points to the latest binary of a specific architecture?  
Something like:  
`https://julialang-s3.julialang.org/bin/linux/x64/latest/`

If not, is it planned?  
Does a workaround exist?  
How do you get the latest binary?

---

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [August 6, 2021, 9:25am UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/2 "2021-08-06T09:25:31Z")

</div>

looks like you want to parse this [https://julialang-s3.julialang.org/bin/versions.json](https://julialang-s3.julialang.org/bin/versions.json)

something like this:

```julia
julia> using JSON3

julia> j = JSON3.read(read(download("https://julialang-s3.julialang.org/bin/versions.json"), String));

julia> maximum(VersionNumber.(String.(keys(j))))
v"1.7.0-beta3"

julia> j[Symbol(maxver)][:files]

```

---

<div class="post-metadata">

### Author: ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)
#### Post date: [August 6, 2021, 10:15am UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/3 "2021-08-06T10:15:57Z")

</div>

Minor improvement on @jling suggestion in case you want the latest _stable_ version:

```julia
julia> using JSON3, Downloads

julia> j = JSON3.read(String(take!(Downloads.download("https://julialang-s3.julialang.org/bin/versions.json", IOBuffer()))));

julia> maxver = maximum(v for v in VersionNumber.(String.(keys(j))) if v.prerelease == ())
v"1.6.2"

```

---

<div class="post-metadata">

### Author: ![johnh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/johnh/32/3615_2.png) [@johnh](https://discourse.julialang.org/u/johnh)
#### Post date: [August 6, 2021, 12:32pm UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/4 "2021-08-06T12:32:26Z")

</div>

Hello @fedario Are you using Ansible rules or something similar to set up these systems?  
I would urge everyone to look at HPC package managers:

Easybuild  
[https://docs.easybuild.io/en/latest/version-specific/Supported\_software.html#list-software-letter-j](https://docs.easybuild.io/en/latest/version-specific/Supported_software.html#list-software-letter-j)

And Spack  
[https://spack.readthedocs.io/en/latest/package\_list.html#julia](https://spack.readthedocs.io/en/latest/package_list.html#julia)

---

<div class="post-metadata">

### Author: ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)
#### Post date: [August 6, 2021, 1:23pm UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/5 "2021-08-06T13:23:50Z")

</div>

I think that using Julia to in order to install Julia as part of a setup script is probably disallowed 😉

I’d recommend using `jill install --confirm` from jill.py  
[https://github.com/johnnychen94/jill.py](https://github.com/johnnychen94/jill.py)

---

<div class="post-metadata">

### Author: ![rikh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rikh/32/204104_2.png) [@rikh](https://discourse.julialang.org/u/rikh)
#### Post date: [August 6, 2021, 6:21pm UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/6 "2021-08-06T18:21:57Z")

</div>

Or NixOS.

---

<div class="post-metadata">

### Author: ![fedario](https://avatars.discourse-cdn.com/v4/letter/f/f14d63/32.png) [@fedario](https://discourse.julialang.org/u/fedario)
#### Post date: [August 7, 2021, 10:20am UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/7 "2021-08-07T10:20:23Z")

</div>

Thank you all for your great ideas!  
I really wish there was a URL that points to the latest version, provided by the core team. Or maybe even something like [rustup](https://rustup.rs/), but that is probably to much work in the current stage.  
Is something like that feasible? @StefanKarpinski

> [@tbeason](#):
>
> I think that using Julia to in order to install Julia as part of a setup script is probably disallowed

That is true. 😄

> [@johnh](#):
>
> Hello @fedario Are you using Ansible rules or something similar to set up these systems?

No, it is a simple bash script to setup my personal desktop environment.

---

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [August 7, 2021, 11:16am UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/8 "2021-08-07T11:16:06Z")

</div>

> [@fedario](#):
>
> I really wish there was a URL that points to the latest version, provided by the core team.

it’s useless without the architecture etc. parts, so you ends up parsing anyway, so what’s the point if the parsing is 3 lines or 5 lines

---

<div class="post-metadata">

### Author: ![fedario](https://avatars.discourse-cdn.com/v4/letter/f/f14d63/32.png) [@fedario](https://discourse.julialang.org/u/fedario)
#### Post date: [August 7, 2021, 12:17pm UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/9 "2021-08-07T12:17:34Z")

</div>

I don’t understand your point.  
If I download the latest julia version from a generic url, extract it and set it up to be in my PATH, why do I need to parse anything?

---

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [August 7, 2021, 12:25pm UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/10 "2021-08-07T12:25:23Z")

</div>

![image](https://global.discourse-cdn.com/julialang/original/3X/a/2/a2af9dfdfc31fa01e4b017f3eb86b3b16f65660c.jpeg)

which one do you expect the link to point to?

---

<div class="post-metadata">

### Author: ![fedario](https://avatars.discourse-cdn.com/v4/letter/f/f14d63/32.png) [@fedario](https://discourse.julialang.org/u/fedario)
#### Post date: [August 7, 2021, 3:55pm UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/11 "2021-08-07T15:55:08Z")

</div>

> [@jling](#):
>
> which one do you expect the link to point to?

In the OP I described a possible way to specify that:  
`https://julialang-s3.julialang.org/bin/linux/x64/latest/`

---

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [August 7, 2021, 4:31pm UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/12 "2021-08-07T16:31:03Z")

</div>

it’s at least `x86_64` because ARM64 and PowerPC64, and then you have musl or gcc.

My point is it’s not gonna be portable if you hard-code architecture and operation system. Based on this, if you need to “handle” it somehow, it’s basically not much more or less complex than what we have now – a simple JSON that has everything

---

<div class="post-metadata">

### Author: ![fedario](https://avatars.discourse-cdn.com/v4/letter/f/f14d63/32.png) [@fedario](https://discourse.julialang.org/u/fedario)
#### Post date: [August 7, 2021, 4:43pm UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/13 "2021-08-07T16:43:17Z")

</div>

> [@jling](#):
>
> My point is it’s not gonna be portable if you hard-code architecture and operation system.

That is true.  
However, my intention is much simpler: Have a simple setup script that installs and configures all I need when installing a fresh Linux on my desktop system.

That being said, I definitely agree that a portable and easy solution would be even better.  
Rust does this very well, just run:  
`curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`  
([Getting started - Rust Programming Language](https://www.rust-lang.org/learn/get-started))

---

<div class="post-metadata">

### Author: ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)
#### Post date: [August 7, 2021, 4:44pm UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/14 "2021-08-07T16:44:34Z")

</div>

ok, so the true request is someone should write a `sh` script for Julia, and I’m all for it although I use package manager if I’m already on Linux, in my case:

```julia
paru julia-bin

```

---

<div class="post-metadata">

### Author: ![fedario](https://avatars.discourse-cdn.com/v4/letter/f/f14d63/32.png) [@fedario](https://discourse.julialang.org/u/fedario)
#### Post date: [August 7, 2021, 4:52pm UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/15 "2021-08-07T16:52:07Z")

</div>

> [@jling](#):
>
> ok, so the true request is someone should write a `sh` script for Julia

No, I do not request anything like that, but it would be great if it did exist. A “latest” link would be the second best but much simpler solution which is why my original question focused on that.

> [@jling](#):
>
> `paru julia-bin`

That is definitely a way to do it. I don’t use Arch, however.

---

<div class="post-metadata">

### Author: ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)
#### Post date: [August 7, 2021, 6:26pm UTC](https://discourse.julialang.org/t/latest-julia-binaries-a-static-url/65932/16 "2021-08-07T18:26:21Z")

</div>

@johnh @rikh I’ve had good experiences with the [Nix package manager](https://nixos.org/learn.html) (even without full NixOS) on CentOS-based HPC cluster machines, even without root by using PRoot and even on NFS by following the [NFS instructions](https://nixos.wiki/wiki/NFS) and ` use-sqlite-wal = false`.
