# Unable to automatically install 'Zstd'

**URL:** <https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964>\
**Category:** New to Julia\
**Created:** [January 3, 2022, 2:31pm UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964 "2022-01-03T14:31:51Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![MahdiP](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mahdip/32/32710_2.png) [@MahdiP](https://discourse.julialang.org/u/MahdiP)\
**Post date:** [January 3, 2022, 2:31pm UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/1 "2022-01-03T14:31:51Z")

</div>

I am trying to install “Parquet” package in Julia 1.7 on company PC. It is behind Proxy. I have added the following environment variables in the startup script

```julia
ENV["HTTP_PROXY"] = "http://xxxx:xxxxx"
ENV["HTTPS_PROXY"] = "http://xxxx:xxxxx"
ENV["JULIA_PKG_SERVER"]= "https://us-west.pkg.julialang.org"
ENV["BINARYPROVIDER_DOWNLOAD_ENGINE"] = "curl"

```

But I get an error with `Zstd`. The error reads:

Installed Zstd\_jll â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ v1.5.0+0  
Downloaded artifact: Zstd  
Downloaded artifact: Zstd  
ERROR: Unable to automatically install ‘Zstd’ from ‘/home/xxxxxx/.julia/packages/Zstd\_jll/UffgW/Artifacts.toml’  
Stacktrace:  
…  
…

I tried many online suggestions, but could not get around this. Any idea? If it is github and proxy relevant, why it does not occur with many other installations?

Thanks in advance

---

<div class="post-metadata">

**Author:** ![lawless-m](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lawless-m/32/30869_2.png) [@lawless-m](https://discourse.julialang.org/u/lawless-m)\
**Post date:** [January 4, 2022, 1:44pm UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/2 "2022-01-04T13:44:59Z")

</div>

You removed what might be the most useful part of the Stacktrace - the part which says what the actual error was.

---

<div class="post-metadata">

**Author:** ![MahdiP](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mahdip/32/32710_2.png) [@MahdiP](https://discourse.julialang.org/u/MahdiP)\
**Post date:** [January 4, 2022, 4:47pm UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/3 "2022-01-04T16:47:29Z")

</div>

It is the error:

[1] error(s::String)  
@ Base ./error.jl:33  
[2] ensure\_artifact\_installed(name::String, meta::Dict{String, Any}, artifacts\_toml::String; platform::Base.BinaryPlatforms.Platform, verbose::Bool, quiet\_download::Bool, io::Base.TTY)  
@ Pkg.Artifacts ~/Julia/julia-1.7.1/share/julia/stdlib/v1.7/Pkg/src/Artifacts.jl:441  
[3] download\_artifacts(env::Pkg.Types.EnvCache; platform::Base.BinaryPlatforms.Platform, julia\_version::VersionNumber, verbose::Bool, io::Base.TTY)  
@ Pkg.Operations ~/Julia/julia-1.7.1/share/julia/stdlib/v1.7/Pkg/src/Operations.jl:617  
[4] add(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}, new\_git::Set{Base.UUID}; preserve::Pkg.Types.PreserveLevel, platform::Base.BinaryPlatforms.Platform)  
@ Pkg.Operations ~/Julia/julia-1.7.1/share/julia/stdlib/v1.7/Pkg/src/Operations.jl:1182  
[5] add(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; preserve::Pkg.Types.PreserveLevel, platform::Base.BinaryPlatforms.Platform, kwargs::Base.Pairs{Symbol, Base.TTY, Tuple{Symbol}, NamedTuple{(:io,), Tuple{Base.TTY}}})  
@ Pkg.API ~/Julia/julia-1.7.1/share/julia/stdlib/v1.7/Pkg/src/API.jl:268  
[6] add(pkgs::Vector{Pkg.Types.PackageSpec}; io::Base.TTY, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})  
@ Pkg.API ~/Julia/julia-1.7.1/share/julia/stdlib/v1.7/Pkg/src/API.jl:149  
[7] add(pkgs::Vector{Pkg.Types.PackageSpec})  
@ Pkg.API ~/Julia/julia-1.7.1/share/julia/stdlib/v1.7/Pkg/src/API.jl:144  
[8] do\_cmd!(command::Pkg.REPLMode.Command, repl::REPL.LineEditREPL)  
@ Pkg.REPLMode ~/Julia/julia-1.7.1/share/julia/stdlib/v1.7/Pkg/src/REPLMode/REPLMode.jl:407  
[9] do\_cmd(repl::REPL.LineEditREPL, input::String; do\_rethrow::Bool)  
@ Pkg.REPLMode ~/Julia/julia-1.7.1/share/julia/stdlib/v1.7/Pkg/src/REPLMode/REPLMode.jl:385  
[10] do\_cmd  
@ ~/Julia/julia-1.7.1/share/julia/stdlib/v1.7/Pkg/src/REPLMode/REPLMode.jl:376 [inlined]  
[11] (::Pkg.REPLMode.var"#24#27"{REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::IOBuffer, ok::Bool)  
@ Pkg.REPLMode ~/Julia/julia-1.7.1/share/julia/stdlib/v1.7/Pkg/src/REPLMode/REPLMode.jl:549  
[12] #invokelatest#2  
@ ./essentials.jl:716 [inlined]  
[13] invokelatest  
@ ./essentials.jl:714 [inlined]  
[14] run\_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)  
@ REPL.LineEdit ~/Julia/julia-1.7.1/share/julia/stdlib/v1.7/REPL/src/LineEdit.jl:2493  
[15] run\_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)  
@ REPL ~/Julia/julia-1.7.1/share/julia/stdlib/v1.7/REPL/src/REPL.jl:1230  
[16] (::REPL.var"#49#54"{REPL.LineEditREPL, REPL.REPLBackendRef})()  
@ REPL ./task.jl:423

Thanks for support.

---

<div class="post-metadata">

**Author:** ![lawless-m](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lawless-m/32/30869_2.png) [@lawless-m](https://discourse.julialang.org/u/lawless-m)\
**Post date:** [January 5, 2022, 7:26am UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/4 "2022-01-05T07:26:56Z")

</div>

Oh dear, that is quite useless isn’t it? I see why you didn’t post it before!

---

<div class="post-metadata">

**Author:** ![MahdiP](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mahdip/32/32710_2.png) [@MahdiP](https://discourse.julialang.org/u/MahdiP)\
**Post date:** [January 5, 2022, 10:04am UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/5 "2022-01-05T10:04:37Z")

</div>

Indeed it is useless. It gives no insight. I am new to packaging and how it works in Julia. I assume Julia does pull the packages from Git and even though I have added the Proxys to the ENV, but it is lost somewhere when inner packages are pulled. But in soma packages like DataTables where multiple other packages are also installed, there was no problem.

Could the problem be with Registries? What I did now was as following. I dropped ~/.julia folder and tried to update the registry and the following was the outcome:

shell\> mv .julia/ \_julia

(@v1.6) pkg\> up  
Installing known registries into `~/.julia`  
┌ Warning: could not download [https://pkg.julialang.org/registries](https://pkg.julialang.org/registries)  
└ @ Pkg.Types /buildworker/worker/package\_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/Types.jl:997  
┌ Warning: could not download [https://pkg.julialang.org/registries](https://pkg.julialang.org/registries)  
└ @ Pkg.Types /buildworker/worker/package\_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/Types.jl:997  
Cloning registry from “[GitHub - JuliaRegistries/General: The official registry of general Julia packages](https://github.com/JuliaRegistries/General.git)”  
Fetching: [========================================\>] 100.0 %  
Added registry `General` to `~/.julia/registries/General`  
Updating registry at `~/.julia/registries/General`  
Updating git-repo `https://github.com/JuliaRegistries/General.git`  
No Changes to `~/.julia/environments/v1.6/Project.toml`  
No Changes to `~/.julia/environments/v1.6/Manifest.toml`

(@v1.6) pkg\>

Could the problem be explained by these warnings?

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [January 5, 2022, 12:27pm UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/6 "2022-01-05T12:27:05Z")

</div>

> [@MahdiP](#):
>
> shell\> mv .julia/ \_julia

If you had your proxy settings in `.julia/config/startup.jl`, those were lost when you tried this experiment, and it just showed what happens when you use Julia without proxy.

Somewhat oversimplified there are three components to package installation:

- Registries (by default only the General registry)
- Packages
- Artifacts (in most cases binary dependencies). Some packages require artifacts, some don’t.

By default all of these are downloaded with `https` from a package server. If a download fails for some reason, the package manager falls back to

- getting the General registry with `git` from github,
- getting packages with `git`, in most cases from github,
- getting artifacts from their original download addresses, frequently but not always with `https` from github.

This is usually very robust but if you are behind a proxy and some fallback strategy is blocked, you are more vulnerable to package server outage. Potentially you can get inconsistent results for different packages if a) the package server is temporarily down and/or b) the fallbacks are effective for only some packages or artifacts.

To check whether your package server is operational I believe the following should be sufficient:

```julia
using Pkg: pkg_server
using Downloads: download
download(pkg_server() * "/registries")

```

---

<div class="post-metadata">

**Author:** ![MahdiP](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mahdip/32/32710_2.png) [@MahdiP](https://discourse.julialang.org/u/MahdiP)\
**Post date:** [January 6, 2022, 6:32am UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/7 "2022-01-06T06:32:32Z")

</div>

My statup file is located under installation directory and not `.julia/config/startup.jl,` Indeed I do not have similar path. I tried your instructions and got the following error:

```julia
julia> using Pkg: pkg_server
julia> using Downloads: download
julia> download(pkg_server() * "/registries")
ERROR: HTTP/1.1 407 Proxy Authentication Required (Received HTTP code 407 from proxy after CONNECT) while requesting https://pkg.julialang.org/registries
Stacktrace:
  [1] (::Downloads.var"#9#18"{IOStream, Base.DevNull, Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Bool, String, Int64, Bool, Bool})(easy::Downloads.Curl.Easy)
    @ Downloads /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:369
  [2] with_handle(f::Downloads.var"#9#18"{IOStream, Base.DevNull, Nothing, Vector{Pair{String, String}},Float64, Nothing, Bool, Bool, String, Int64, Bool, Bool}, handle::Downloads.Curl.Easy)
    @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/Curl.jl:64
  [3] #8
    @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:311 [inlined]
  [4] arg_write(f::Downloads.var"#8#17"{Base.DevNull, Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Bool, String, Int64, Bool, Bool}, arg::IOStream)
    @ ArgTools /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/ArgTools/src/ArgTools.jl:112
  [5] #7
    @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:310 [inlined]
  [6] arg_read
    @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/ArgTools/src/ArgTools.jl:61 [inlined]
  [7] request(url::String; input::Nothing, output::IOStream, method::Nothing, headers::Vector{Pair{String, String}}, timeout::Float64, progress::Nothing, verbose::Bool, throw::Bool, downloader::Nothing)
    @ Downloads /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:309
  [8] (::Downloads.var"#3#4"{Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Nothing, String})(output::IOStream)
    @ Downloads /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:222
  [9] arg_write(f::Downloads.var"#3#4"{Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Nothing, String}, arg::Nothing)
    @ ArgTools /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/ArgTools/src/ArgTools.jl:101
 [10] #download#2
    @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:221 [inlined]
 [11] download (repeats 2 times)
    @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:221 [inlined]
 [12] top-level scope
    @ REPL[3]:1

```

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [January 6, 2022, 9:15am UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/8 "2022-01-06T09:15:41Z")

</div>

> [@MahdiP](#):
>
> `ERROR: HTTP/1.1 407 Proxy Authentication Required (Received HTTP code 407 from proxy after CONNECT) while requesting https://pkg.julialang.org/registries`

This error message clearly says that your proxy authentication is not working and considering that it requests from `pkg.julialang.org` (the default) rather than from `us-west.pkg.julialang.org` that you were setting in your startup, I strongly suspect that your startup file isn’t read at all. My recommendation is to double-check that you have it in a valid location and after starting Julia, that the `ENV` global variable contains the expected fields.

---

<div class="post-metadata">

**Author:** ![MahdiP](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mahdip/32/32710_2.png) [@MahdiP](https://discourse.julialang.org/u/MahdiP)\
**Post date:** [January 6, 2022, 11:47am UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/9 "2022-01-06T11:47:57Z")

</div>

> [@GunnarFarneback](#):
>
> [pkg.julialang.org](http://pkg.julialang.org)

Thanks for reply. I double checked everything and I am not still able to get around this.

```julia
julia --banner=no
This is read from Startup file.
Startup under .julia/config/ loaded.
julia> println(ENV["HTTP_PROXY"], " ", ENV["JULIA_PKG_SERVER"])
http://proxy1:8080 pkg.julialang.org

julia> using Pkg: pkg_server

julia> using Downloads: download

julia> download(pkg_server() * "/registries")
ERROR: HTTP/1.1 407 Proxy Authentication Required (Received HTTP code 407 from proxy after CONNECT) while requesting https://pkg.julialang.org/registries
Stacktrace:
  [1] (::Downloads.var"#9#18"{IOStream, Base.DevNull, Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Bool, String, Int64, Bool, Bool})(easy::Downloads.Curl.Easy)
    @ Downloads /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:369
  [2] with_handle(f::Downloads.var"#9#18"{IOStream, Base.DevNull, Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Bool, String, Int64, Bool, Bool}, handle::Downloads.Curl.Easy)
    @ Downloads.Curl /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/Curl.jl:64
  [3] #8
    @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:311 [inlined]
  [4] arg_write(f::Downloads.var"#8#17"{Base.DevNull, Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Bool, String, Int64, Bool, Bool}, arg::IOStream)
    @ ArgTools /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/ArgTools/src/ArgTools.jl:112
  [5] #7
    @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:310 [inlined]
  [6] arg_read
    @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/ArgTools/src/ArgTools.jl:61 [inlined]
  [7] request(url::String; input::Nothing, output::IOStream, method::Nothing, headers::Vector{Pair{String, String}}, timeout::Float64, progress::Nothing, verbose::Bool, throw::Bool, downloader::Nothing)
    @ Downloads /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:309
  [8] (::Downloads.var"#3#4"{Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Nothing, String})(output::IOStream)
    @ Downloads /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:222
  [9] arg_write(f::Downloads.var"#3#4"{Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Nothing, String}, arg::Nothing)
    @ ArgTools /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/ArgTools/src/ArgTools.jl:101
 [10] #download#2
    @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:221 [inlined]
 [11] download (repeats 2 times)
    @ /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Downloads.jl:221 [inlined]
 [12] top-level scope
    @ REPL[4]:1

```

It seems that I am not still there to work with Julia. If it was Python or R in a worse scenario I would have installed from source or downloaded the package and built on my own machine. I am lacking enough knowledge on Julia and how packaging is working.

---

<div class="post-metadata">

**Author:** ![lawless-m](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lawless-m/32/30869_2.png) [@lawless-m](https://discourse.julialang.org/u/lawless-m)\
**Post date:** [January 6, 2022, 12:27pm UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/10 "2022-01-06T12:27:26Z")

</div>

If you telnet into the proxy and execute this HTTP request, you will probably get the same 407 error

which is effectively what Julia is doing

```julia
$ telnet proxy1 8080
GET http://cnn.com/ HTTP/1.0

```

this might help

[https://github.com/JuliaLang/julia/issues/20948#issuecomment-287305414](https://github.com/JuliaLang/julia/issues/20948#issuecomment-287305414)

---

<div class="post-metadata">

**Author:** ![MahdiP](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mahdip/32/32710_2.png) [@MahdiP](https://discourse.julialang.org/u/MahdiP)\
**Post date:** [January 6, 2022, 5:01pm UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/11 "2022-01-06T17:01:07Z")

</div>

The solutions mentioned in the link did not resolve the problem. I removed and added the registery and it seeems it can not manage to download the package part.

```julia

julia> Pkg.Registry.add("General")
┌ Warning: could not download https://pkg.julialang.org/registries
└ @ Pkg.Types /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Pkg/src/Types.jl:997
     Cloning registry from "https://github.com/JuliaRegistries/General.git"
       Added registry `General` to `~/.julia/registries/General`

```

The following also did not work:

```julia
$ telnet proxy1 8080
Connected to proxy1.
Escape character is '^]'.
GET http://cnn.com/ HTTP/1.0
Connection closed by foreign host.

```

---

<div class="post-metadata">

**Author:** ![lawless-m](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lawless-m/32/30869_2.png) [@lawless-m](https://discourse.julialang.org/u/lawless-m)\
**Post date:** [January 7, 2022, 8:14am UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/12 "2022-01-07T08:14:17Z")

</div>

For a regular HTTP proxy, this is what you should get

$ telnet localhost 8118  
Connected to localhost.  
Escape character is ‘^]’.  
GET [http://cnn.com](http://cnn.com) HTTP/1.0

HTTP/1.1 301 Moved Permanently  
Connection: close  
Content-Length: 0  
Server: Varnish  
Retry-After: 0  
Cache-Control: public, max-age=600  
Location: [http://www.cnn.com/](http://www.cnn.com/)  
Accept-Ranges: bytes  
Date: Fri, 07 Jan 2022 08:12:28 GMT  
Via: 1.1 varnish  
Set-Cookie: countryCode=GB; [Domain=.cnn.com](http://Domain=.cnn.com); Path=/; SameSite=Lax  
Set-Cookie: stateCode=KEC; [Domain=.cnn.com](http://Domain=.cnn.com); Path=/; SameSite=Lax  
Set-Cookie: geoData=kensington and chelsea|KEC|sw3 1aa|GB|EU|0|broadband|51.500|-0.160; [Domain=.cnn.com](http://Domain=.cnn.com); Path=/; SameSite=Lax  
X-Served-By: cache-lon4277-LON  
X-Cache: HIT  
X-Cache-Hits: 0

---

<div class="post-metadata">

**Author:** ![MahdiP](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mahdip/32/32710_2.png) [@MahdiP](https://discourse.julialang.org/u/MahdiP)\
**Post date:** [January 9, 2022, 2:10pm UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/13 "2022-01-09T14:10:53Z")

</div>

I have done a bit investigations and found out that I can clone the package under `~/.julia/registries` and then Pkg first will look into this location to install the packages ([https://github.com/JuliaLang/Pkg.jl/issues/1119](https://github.com/JuliaLang/Pkg.jl/issues/1119)). At leat it worked on my private machine with no firewall issues. But the same procedure does not work for Artifacts and Zstd.  
My goal is to install Parquet package that has dependencies on Zstd and tries to get it, but fails.

---

<div class="post-metadata">

**Author:** ![MahdiP](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mahdip/32/32710_2.png) [@MahdiP](https://discourse.julialang.org/u/MahdiP)\
**Post date:** [January 10, 2022, 5:34pm UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/14 "2022-01-10T17:34:05Z")

</div>

I can install many package such as CSV and DataFrames, … . But when I install Arrow or Parquet, the Artifact (Zstd) fails to load. looking at `https://github.com/JuliaBinaryWrappers/Zstd_jll.jl` I see that my machine is supported. Could be something with Hash key in Artifacts.toml file that reads:

```julia
[[Zstd]]
arch = "x86_64"
git-tree-sha1 = "e6ce8cd51fdf23fc9c9e8abde61b8a05d2502ac9"
libc = "glibc"
os = "linux"

    [[Zstd.download]]
    sha256 = "f81d29d10ca06a7b37494a7bad4d3395f5491aecdf3c483f08b868642b7fdf73"
    url = "https://github.com/JuliaBinaryWrappers/Zstd_jll.jl/releases/download/Zstd-v1.5.0+0/Zstd.v1.5.0.x86_64-linux-gnu.tar.gz"

```

---

<div class="post-metadata">

**Author:** ![MahdiP](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mahdip/32/32710_2.png) [@MahdiP](https://discourse.julialang.org/u/MahdiP)\
**Post date:** [January 12, 2022, 12:20pm UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/15 "2022-01-12T12:20:00Z")

</div>

I finally managed to resolve this issue after a week of trying to learn how package installation in Julia works. It seems that due to Proxy issue I did not manage to properly download the library. What I did was indeed very trivial.  
I opened `.julia/packages/Zstd_jll/UffgW/Artifacts.toml` and there looked for the artifact link that matches architecture of my machine. I downloaded it on my machine (manually and not with Pkg) and since the Artifacts are immutable, I could safely put the downloaded file under ` .julia/artifacts/`.

Then I needed to tell to my machine where to look for the file! I had to update relevant part of `.julia/packages/Zstd_jll/UffgW/Artifacts.toml` as follwing:

```julia
[[Zstd]]
arch = "x86_64"
git-tree-sha1 = "e6ce8cd51fdf23fc9c9e8abde61b8a05d2502ac9"
libc = "glibc"
os = "linux"

    [[Zstd.download]]
    sha256 = "f81d29d10ca06a7b37494a7bad4d3395f5491aecdf3c483f08b868642b7fdf73"
    url = "file:/home/myUserName/.julia/artifacts/Zstd.v1.5.0.x86_64-linux-gnu.tar.gz"

```

Now back to Julia REPEl, I could install my main library like `Pkg.add("XXX")` where it will requires Zstd to be already installed.

It may not be in agreement with philosophy of Julia, but due to my limitations, I had to go this way and indeed it resolved my problem. Happy that I did not give up.

---

<div class="post-metadata">

**Author:** ![lawless-m](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lawless-m/32/30869_2.png) [@lawless-m](https://discourse.julialang.org/u/lawless-m)\
**Post date:** [January 12, 2022, 12:41pm UTC](https://discourse.julialang.org/t/unable-to-automatically-install-zstd/73964/16 "2022-01-12T12:41:43Z")

</div>

Well done 🤩
