# Install binary package such as OpenBLAS\_jll via very slow internet connection

**URL:** <https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335>\
**Category:** General Usage\
**Created:** [March 22, 2020, 5:54am UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335 "2020-03-22T05:54:06Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![liuyxpp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/liuyxpp/32/9870_2.png) [@liuyxpp](https://discourse.julialang.org/u/liuyxpp)\
**Post date:** [March 22, 2020, 5:54am UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/1 "2020-03-22T05:54:06Z")

</div>

I am frustrated with adding packages which requires downloading large binaries, such as OpenBLAS\_jll. I have a very slow internet connection and the downloading typically takes hours to complete (\>10MB). And the failing probability is quite high due to unstable internet connection. Can I download the binary using some other software which can resume downloading. After that I can move the downloaded binary to some known location and invoke the installation?

---

<div class="post-metadata">

**Author:** ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)\
**Post date:** [March 22, 2020, 10:12am UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/2 "2020-03-22T10:12:09Z")

</div>

Sorry if this is off mark, but bit-torrent is perfect for that.

---

<div class="post-metadata">

**Author:** ![liuyxpp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/liuyxpp/32/9870_2.png) [@liuyxpp](https://discourse.julialang.org/u/liuyxpp)\
**Post date:** [March 22, 2020, 11:07am UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/3 "2020-03-22T11:07:10Z")

</div>

How do I use bit-torrent?

---

<div class="post-metadata">

**Author:** ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)\
**Post date:** [March 22, 2020, 12:02pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/4 "2020-03-22T12:02:58Z")

</div>

Again, this might be totally off-topic, but I mean using a torrenting program (Google “torrent program”) to download _anything_. Those programs usually handle slow connection and interruptions very well. The problem might be to find a torrent file for the content you need (e.g. `OpenBLAS_jll`)…

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [March 22, 2020, 12:11pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/5 "2020-03-22T12:11:06Z")

</div>

> [@yakir12](#):
>
> Sorry if this is off mark, but bit-torrent is perfect for that.

I am not sure about this — torrent protocols send and receive, and while robust, they may actually require more bandwidth.

About the original question: I am not sure if there is a convenient way to download and provide artifacts manually.

---

<div class="post-metadata">

**Author:** ![liuyxpp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/liuyxpp/32/9870_2.png) [@liuyxpp](https://discourse.julialang.org/u/liuyxpp)\
**Post date:** [March 22, 2020, 12:53pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/6 "2020-03-22T12:53:00Z")

</div>

That’s exactly what I want. Now I have the OpenBLAS.v0.3.7.x86\_64-apple-darwin14-libgfortran5.tar.gz locally. Where can I put it so Pkg can use it instead of downloading it automatically from using its internal downloader (may be via git-repo?)

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [March 22, 2020, 2:34pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/7 "2020-03-22T14:34:31Z")

</div>

I think you can override artifact locations:

[https://julialang.github.io/Pkg.jl/dev/artifacts/#Overriding-artifact-locations-1](https://julialang.github.io/Pkg.jl/dev/artifacts/#Overriding-artifact-locations-1)

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [March 22, 2020, 6:50pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/8 "2020-03-22T18:50:13Z")

</div>

@dilumaluthge called my attention to this on Slack and I just wanted to post here that it would be possible to support resuming interrupted downloads if the partial download is saved somewhere persistent and the client and server side both support HTTP range requests. We don’t currently allow this, but it’s a good idea, so I’ve created an issue to track it: [support resuming downloads · Issue #1731 · JuliaLang/Pkg.jl · GitHub](https://github.com/JuliaLang/Pkg.jl/issues/1731).

---

<div class="post-metadata">

**Author:** ![Yifan\_Liu](https://avatars.discourse-cdn.com/v4/letter/y/4da419/32.png) [@Yifan\_Liu](https://discourse.julialang.org/u/Yifan_Liu)\
**Post date:** [March 22, 2020, 7:18pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/9 "2020-03-22T19:18:14Z")

</div>

The government deliberately constrains the downloading speed of anything from GitHub in China. you may want to try some Chinese mirrors of Julia packages.

---

<div class="post-metadata">

**Author:** ![dilumaluthge](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dilumaluthge/32/29283_2.png) [@dilumaluthge](https://discourse.julialang.org/u/dilumaluthge)\
**Post date:** [March 22, 2020, 7:32pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/10 "2020-03-22T19:32:10Z")

</div>

You can try using the new Pkg server protocol.

Set the environment variable `JULIA_PKG_SERVER` to `pkg.julialang.org`. For example, in Bash:

```bash
export JULIA_PKG_SERVER="pkg.julialang.org"

```

---

<div class="post-metadata">

**Author:** ![liuyxpp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/liuyxpp/32/9870_2.png) [@liuyxpp](https://discourse.julialang.org/u/liuyxpp)\
**Post date:** [March 22, 2020, 11:50pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/11 "2020-03-22T23:50:07Z")

</div>

To be noticed, I have used the USTC mirror for installing packages that don’t depend on pre-compiled binaries. However, the mirror seems lack of support of binaries.

---

<div class="post-metadata">

**Author:** ![liuyxpp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/liuyxpp/32/9870_2.png) [@liuyxpp](https://discourse.julialang.org/u/liuyxpp)\
**Post date:** [March 22, 2020, 11:50pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/12 "2020-03-22T23:50:38Z")

</div>

Thanks. I will give it a try.

---

<div class="post-metadata">

**Author:** ![jaakkor2](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jaakkor2/32/2540_2.png) [@jaakkor2](https://discourse.julialang.org/u/jaakkor2)\
**Post date:** [March 23, 2020, 6:30am UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/13 "2020-03-23T06:30:31Z")

</div>

How about slimming down the artifacts? For example, are static libraries really needed?

Kicking out static libraries and the log file (OpenBLAS.log is 5897 kB !) from OpenBLAS\_jll would reduce the size-on-disk on Windows from 123.7 MB to 33.6 MB. That should translate to faster downloads.

Other examples on my system

- OpenSSL\_jll has 86.8 MB of documentation (!), 8.4 MB static libs
- ImageMagick\_jll has 34.1 MB static libs, 12.9 MB docs

`packages`-directory a lot of potential for size reduction as well.

---

<div class="post-metadata">

**Author:** ![non-Jedi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/non-jedi/32/3645_2.png) [@non-Jedi](https://discourse.julialang.org/u/non-Jedi)\
**Post date:** [March 23, 2020, 12:23pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/14 "2020-03-23T12:23:06Z")

</div>

Along those lines, could somebody explain to me why OpenBLAS\_jll is even necessary to begin with? Julia ships with a perfectly functional libopenblas64\_.so; why do we need an additional package to provide the same library?

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [March 23, 2020, 12:25pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/15 "2020-03-23T12:25:00Z")

</div>

> [@jaakkor2](#):
>
> How about slimming down the artifacts? For example, are static libraries really needed?

Seems like good ideas, perhaps you can open an issue at [GitHub - JuliaPackaging/Yggdrasil: Collection of builder repositories for BinaryBuilder.jl](https://github.com/JuliaPackaging/Yggdrasil) with your suggestions?

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [March 23, 2020, 1:00pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/16 "2020-03-23T13:00:57Z")

</div>

> [@non-Jedi](#):
>
> Julia ships with a perfectly functional libopenblas64\_.so; why do we need an additional package to provide the same library?

May not be the same version.

For most scenarios, the cost of tracking down bugs due to subtle version mismatches, or maintaining software for parallel versions, dominates downloading a few 10MBs of binary blobs.

The solution is to make it easy for the users to provide these manually (in an environment w/o net access), or a more robust downloading protocol.

---

<div class="post-metadata">

**Author:** ![jaakkor2](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jaakkor2/32/2540_2.png) [@jaakkor2](https://discourse.julialang.org/u/jaakkor2)\
**Post date:** [March 23, 2020, 7:43pm UTC](https://discourse.julialang.org/t/install-binary-package-such-as-openblas-jll-via-very-slow-internet-connection/36335/17 "2020-03-23T19:43:52Z")

</div>

I opened an issue [OpenBLAS package slimming · Issue #642 · JuliaPackaging/Yggdrasil · GitHub](https://github.com/JuliaPackaging/Yggdrasil/issues/642) .
