# How to update Julia?

**URL:** <https://discourse.julialang.org/t/how-to-update-julia/82058>\
**Category:** New to Julia\
**Tags:** question, versions\
**Created:** [June 1, 2022, 6:30am UTC](https://discourse.julialang.org/t/how-to-update-julia/82058 "2022-06-01T06:30:22Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![raman\_kumar](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raman_kumar/32/26782_2.png) [@raman\_kumar](https://discourse.julialang.org/u/raman_kumar)\
**Post date:** [June 1, 2022, 6:30am UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/1 "2022-06-01T06:30:22Z")

</div>

How to update Julia?? 🤯

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [June 1, 2022, 6:33am UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/2 "2022-06-01T06:33:22Z")

</div>

You can use [juliaup](https://github.com/JuliaLang/juliaup).  
The manual way is to download the new version from the website and update your PATH / symlink, but it’s more cumbersome

---

<div class="post-metadata">

**Author:** ![tsela](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tsela/32/52174_2.png) [@tsela](https://discourse.julialang.org/u/tsela)\
**Post date:** [June 1, 2022, 8:58am UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/3 "2022-06-01T08:58:04Z")

</div>

There’s also [asdf](https://asdf-vm.com), my personal favourite, if only because it can handle much more than just Julia (it’s better than pyenv for updating python for instance).

---

<div class="post-metadata">

**Author:** ![bernhard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bernhard/32/2619_2.png) [@bernhard](https://discourse.julialang.org/u/bernhard)\
**Post date:** [June 1, 2022, 1:56pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/4 "2022-06-01T13:56:54Z")

</div>

Or you simply install julia in the same location as the previous version. This is simple and requires noch changes to path settings.  
At least when you are going from 1.6.5 to 1.6.6 this seems to be a reasonable approach to me.

---

<div class="post-metadata">

**Author:** ![tsela](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tsela/32/52174_2.png) [@tsela](https://discourse.julialang.org/u/tsela)\
**Post date:** [June 1, 2022, 2:35pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/5 "2022-06-01T14:35:28Z")

</div>

For me, the main advantage of using `asdf` instead of going the manual way is how easy it is to manage multiple versions of Julia. No need to handle paths by hand, a simple command pins the version of Julia I want for a certain folder and its subfolders.

---

<div class="post-metadata">

**Author:** ![davide](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davide/32/52136_2.png) [@davide](https://discourse.julialang.org/u/davide)\
**Post date:** [June 1, 2022, 2:36pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/6 "2022-06-01T14:36:56Z")

</div>

This can be done also when updating from, say, 1.7.x to 1.8.x.  
Not to manually reinstall all the packages, , after installing, just create the `v1.8` folder in the folder `.julia/environments/` and copy the `Project.toml` file from the `v1.7` to the `v1.8` folder.  
Then in a session of the new julia version run:

> ] instantiate

See [FAQ](https://docs.julialang.org/en/v1/manual/faq/#How-can-I-transfer-the-list-of-installed-packages-after-updating-my-version-of-Julia?).

---

<div class="post-metadata">

**Author:** ![bernhard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bernhard/32/2619_2.png) [@bernhard](https://discourse.julialang.org/u/bernhard)\
**Post date:** [June 1, 2022, 2:43pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/7 "2022-06-01T14:43:48Z")

</div>

> [@tsela](#):
>
> using `asdf` instead of going the manual way is how easy it is to manage multiple versions of Julia. No need to handle paths by hand, a simple command pins the

I am aware. One reason not to do so is the fact that you may want to retain multiple minor versions (not sure if minor is the right term for the X in for 1.X.1)

---

<div class="post-metadata">

**Author:** ![mbaz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbaz/32/17295_2.png) [@mbaz](https://discourse.julialang.org/u/mbaz)\
**Post date:** [June 1, 2022, 2:55pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/8 "2022-06-01T14:55:36Z")

</div>

I use Linux. When I want to install a (new) version of Julia, I download the tarball from the official website and untar it in `~/bin`. This creates a directory such as `julia-1.7.2`.

Then, I link to the julia executable: `cd ~/bin && ln -s julia-1.7.2/bin/julia`. Since `~/bin` is my `$PATH`, I can run julia just by typing `julia` in any shell. VS Code etc will also find it.

If I want to run a different version of julia, I just update the link or create a new one, for example with `ln -s julia164 julia-1.6.4/bin/julia`.

---

<div class="post-metadata">

**Author:** ![affans](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/affans/32/11911_2.png) [@affans](https://discourse.julialang.org/u/affans)\
**Post date:** [June 1, 2022, 2:59pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/9 "2022-06-01T14:59:24Z")

</div>

That’s exactly what I do… with an additional step of renaming previous julia versions. So now I have symlinks `julia12`, `julia13`, `julia14` all pointing to different versions. Sometimes its useful to run some code on an older versino of Julia.

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [June 1, 2022, 3:30pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/10 "2022-06-01T15:30:21Z")

</div>

Why not using jill.py? Much easier. And it uses the nearest download mirror.

```julia
jill install 1.8 --unstable # install the latest beta or rc version
jill switch 1.7 # make 1.7 the active version
jill switch 1.8 # make 1.8 the active version

```

You can also switch between different minor versions if you have them installed.

---

<div class="post-metadata">

**Author:** ![rashid](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rashid/32/9398_2.png) [@rashid](https://discourse.julialang.org/u/rashid)\
**Post date:** [June 1, 2022, 4:59pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/11 "2022-06-01T16:59:31Z")

</div>

This is exactly what jill.py does with many options to configure these paths.

---

<div class="post-metadata">

**Author:** ![Henrique\_Becker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/henrique_becker/32/15443_2.png) [@Henrique\_Becker](https://discourse.julialang.org/u/Henrique_Becker)\
**Post date:** [June 1, 2022, 5:25pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/12 "2022-06-01T17:25:28Z")

</div>

Why I would bother with a Python package for something that takes less than a minute done by hand in Bash?

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [June 1, 2022, 5:27pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/13 "2022-06-01T17:27:59Z")

</div>

One reason I use jill is that I have a start script for Julia that might load a system image, but with jill I can also let it use different julia versions per project… Sometimes very useful.

---

<div class="post-metadata">

**Author:** ![Henrique\_Becker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/henrique_becker/32/15443_2.png) [@Henrique\_Becker](https://discourse.julialang.org/u/Henrique_Becker)\
**Post date:** [June 1, 2022, 5:29pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/14 "2022-06-01T17:29:08Z")

</div>

Seems an interesting use case, and maybe make the package worth, in my case I do think the basic manual installation is enough.

---

<div class="post-metadata">

**Author:** ![rashid](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rashid/32/9398_2.png) [@rashid](https://discourse.julialang.org/u/rashid)\
**Post date:** [June 1, 2022, 7:16pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/15 "2022-06-01T19:16:53Z")

</div>

Possibly because a minute is too long compared to writing `jill install 1.8.0-rc1` 🙂

---

<div class="post-metadata">

**Author:** ![Jordan\_Cluts](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jordan_cluts/32/13753_2.png) [@Jordan\_Cluts](https://discourse.julialang.org/u/Jordan_Cluts)\
**Post date:** [June 1, 2022, 7:22pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/16 "2022-06-01T19:22:07Z")

</div>

> [@ufechner7](#):
>
> Why not using jill.py?

I would have to figure out how to successfully install and configure Python, a task I have never accomplished. (Admittedly I have not tried very hard).

FWIW I have enjoyed using Scoop on Windows to install Julia. A simple `scoop update Julia` gets me the latest version. (But doesn’t handle multiple versions well so if that is needed this solution is suboptimal and I would recommend other techniques).

---

<div class="post-metadata">

**Author:** ![tsela](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tsela/32/52174_2.png) [@tsela](https://discourse.julialang.org/u/tsela)\
**Post date:** [June 1, 2022, 10:30pm UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/17 "2022-06-01T22:30:24Z")

</div>

> [@bernhard](#):
>
> I am aware. One reason not to do so is the fact that you may want to retain multiple minor versions (not sure if minor is the right term for the X in for 1.X.1)

I… don’t understand the objection. With `asdf` you can install as many versions of Julia as you want, with different patch, minor or even major version numbers (as well as betas and release candidates. You can even manage the nightly with it!), and you can make your projects use any of your installed versions. So having a project run on 1.5.2, another on 1.6.5 and another on 1.8.0-rc1 is perfectly feasible and will work perfectly fine, and you don’t need to create softlinks by hand or to write a batch file for that.

And the best part is that `asdf` will work with other languages than Julia, so if you work with multiple languages you can all manage them with a single tool.

---

<div class="post-metadata">

**Author:** ![bernhard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bernhard/32/2619_2.png) [@bernhard](https://discourse.julialang.org/u/bernhard)\
**Post date:** [June 2, 2022, 6:57am UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/18 "2022-06-02T06:57:54Z")

</div>

I have no objection at all.  
I don’t know asdf, but I am sure it works great.  
gdalle, mentioned some great alternatives above too.  
My approach simply worked long before these existed and it is sufficient for me.

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [June 2, 2022, 7:20am UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/19 "2022-06-02T07:20:15Z")

</div>

On Windows I would not use jill.py because Python is not pre-installed, there are other options for Windows. On Linux normally Python is pre-installed and automatically updated anyways.

---

<div class="post-metadata">

**Author:** ![Piotr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/piotr/32/24541_2.png) [@Piotr](https://discourse.julialang.org/u/Piotr)\
**Post date:** [August 29, 2024, 9:40am UTC](https://discourse.julialang.org/t/how-to-update-julia/82058/20 "2024-08-29T09:40:53Z")

</div>

For Linux Ubuntu feel free to share this tutorial:

[![](https://global.discourse-cdn.com/julialang/original/3X/1/b/1b6fcdb68d5d79d4f2597a969081754584968d78.jpeg "How to quickly update Julia on Ubuntu Linux like a pro? Just watch! [TUTORIAL]") ](https://www.youtube.com/watch?v=T9FlZfMPGcE)

[Next page](https://discourse.julialang.org/t/how-to-update-julia/82058.md?page=2)
