Skip to content

rustup install behind a corporate proxy fails with TLS handshake eof #4305

Closed

Description

@muja

Verification

Problem

When running rustup behind a corporate proxy (without RUSTUP_USE_CURL=1) this error is produced:

❯ https_proxy=http://our.corporate.proxy:8080 rustup -v install beta     
debug: read metadata version: '12'
debug: installing toolchain 'beta-x86_64-unknown-linux-gnu'
debug: toolchain directory: '/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu'
info: syncing channel updates for 'beta-x86_64-unknown-linux-gnu'
debug: creating temp file: /home/user/.rustup/tmp/fr9g80t5bbku20gz_file
debug: downloading file from: 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256'
debug: downloading with reqwest
debug: removing toolchain directory: '/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu'
error: could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/fr9g80t5bbku20gz_file'

Caused by:
    0: failed to make network request
    1: error sending request for url (https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256)
    2: client error (Connect)
    3: tls handshake eof

Dropping the protocol from the environment variable makes no difference. Adding RUSTUP_USE_CURL=1 fixes it, but apparently that's deprecated.

One thing that may be relevant is that the corporate proxy is some kind of Fortinet Proxy and does not support the zstd encoding, although it doesn't seem that the site tries to send it, even if advertised in Accept-Encoding header:

❯ https_proxy=http://our.corporate.proxy:8080 curl -H'Accept-Encoding: gzip, deflate, br, zstd' https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256 -i  
HTTP/1.1 200 Connection established
Proxy-Agent: Fortinet-Proxy/1.0

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 89
x-amz-id-2: mXql6d23ngh+97LxTHAn6Xi9gwAKFzEF+Nav+Dt2XiM5MqhadLZhXUFx03fDBML0wVNr/ViEskSezEkcmUE25w==
x-amz-request-id: BTXNY0ZSHN2XNP9X
x-amz-storage-class: INTELLIGENT_TIERING
x-amz-server-side-encryption: AES256
x-amz-version-id: GU3vQbCUgbROXsRF6.3A_9u1QAIw8NjY
X-Served-By: cache-mxp6978-MXP
X-Cache: HIT
X-Cache-Hits: 1
X-Timer: S1745567961.974974,VS0,VE1
Last-Modified: Sun, 20 Apr 2025 02:19:51 GMT
ETag: "d3aaf2159800ee081e95612b2de0f7c3"
Content-Type: binary/octet-stream
Server: AmazonS3
Accept-Ranges: bytes
Date: Fri, 25 Apr 2025 07:59:20 GMT
Via: 1.1 varnish
Age: 5

dcf745f4f5daf2f9f5285edc4d2eb37f0a62297933c20c1727e15fa6edf5baa0  channel-rust-beta.toml

Steps

Output with RUSTUP_LOG=TRACE:

❯ RUSTUP_LOG=trace https_proxy=http://our.corporate.proxy:8080 rustup -v install beta
2025-04-25T08:04:14.263604Z DEBUG run_rustup:run_rustup_inner:main:set_globals: rustup::cli::common: read metadata version: '12' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]" current_dir="/projects" quiet=false process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true })
2025-04-25T08:04:14.264681Z DEBUG run_rustup:run_rustup_inner:main:install:install: rustup::cli::common: installing toolchain 'beta-x86_64-unknown-linux-gnu' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]"
2025-04-25T08:04:14.264696Z DEBUG run_rustup:run_rustup_inner:main:install:install: rustup::cli::common: toolchain directory: '/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]"
2025-04-25T08:04:14.264747Z  INFO run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: syncing channel updates for 'beta-x86_64-unknown-linux-gnu' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
2025-04-25T08:04:14.264819Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: creating temp file: /home/user/.rustup/tmp/yabreatzi_qioeza_file process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
2025-04-25T08:04:14.264883Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: downloading file from: 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
2025-04-25T08:04:14.264894Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: downloading with reqwest process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
2025-04-25T08:04:14.265034Z TRACE run_rustup:run_rustup_inner:main:install:install:update_from_dist: hyper_util::client::legacy::connect::http: Http::connect; scheme=Some("http"), host=Some("our.corporate.proxy"), port=Some(Port(8080)) process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
2025-04-25T08:04:14.287246Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: hyper_util::client::legacy::connect::http: connecting to 10.176.85.66:8080 process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
2025-04-25T08:04:14.292956Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: hyper_util::client::legacy::connect::http: connected to 10.176.85.66:8080 process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
2025-04-25T08:04:14.321579Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: removing toolchain directory: '/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
2025-04-25T08:04:14.321640Z TRACE run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::dist: error=could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/yabreatzi_qioeza_file' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
2025-04-25T08:04:14.321680Z TRACE run_rustup:run_rustup_inner:main:install:install: rustup::install: error=could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/yabreatzi_qioeza_file' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]"
2025-04-25T08:04:14.321712Z TRACE run_rustup:run_rustup_inner:main:install: rustup::toolchain::distributable: error=could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/yabreatzi_qioeza_file' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/projects" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"rustup\", \"-v\", \"install\", \"beta\"]"
2025-04-25T08:04:14.321751Z TRACE run_rustup:run_rustup_inner: rustup_init: error=could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/yabreatzi_qioeza_file' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> }
2025-04-25T08:04:14.321788Z ERROR rustup::cli::common: could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/yabreatzi_qioeza_file'

Caused by:
    0: failed to make network request
    1: error sending request for url (https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256)
    2: client error (Connect)
    3: tls handshake eof

Possible Solution(s)

No response

Notes

No response

Rustup version

❯ rustup --version
rustup 1.28.1 (f9edccde0 2025-03-05)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.88.0-nightly (a15cce269 2025-04-17)`

Installed toolchains

❯ rustup show
Default host: x86_64-unknown-linux-gnu
rustup home:  /home/user/.rustup

installed toolchains
--------------------
stable-x86_64-unknown-linux-gnu
nightly-x86_64-unknown-linux-gnu (active, default)

active toolchain
----------------
name: nightly-x86_64-unknown-linux-gnu
active because: it's the default toolchain
installed targets:
  x86_64-unknown-linux-gnu

OS version

❯ cat /etc/*release
NAME="Red Hat Enterprise Linux"
VERSION="9.5 (Plow)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="9.5"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Red Hat Enterprise Linux 9.5 (Plow)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:9::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9"
BUG_REPORT_URL="https://issues.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_BUGZILLA_PRODUCT_VERSION=9.5
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.5"
Red Hat Enterprise Linux release 9.5 (Plow)
Red Hat Enterprise Linux release 9.5 (Plow)

Activity

  1. rami3l commented on Apr 25, 2025

    @rami3l
    Member

    cc @djc since the above log looks related to the download/TLS backend.

  2. djc commented on Apr 25, 2025

    @djc
    Contributor

    @muja thanks for the detailed report. Could you try this with a build from #4307?

  3. muja commented on Apr 25, 2025

    @muja
    Author

    Sure, some instructions would be appreciated, a cargo build didn't produce a binary:

    rustup on  download-errors is 📦 v1.28.2 via 🦀 v1.88.0-nightly 
    ❯ ls target/debug/
    build  deps  examples  incremental
    
  4. rami3l commented on Apr 25, 2025

    @rami3l
    Member

    Sure, some instructions would be appreciated

    @muja Can you see the download links in https://github.com/rust-lang/rustup/actions/runs/14660975811?pr=4307?

  5. djc commented on Apr 25, 2025

    @djc
    Contributor

    Works for me:

    djc-2021 download-errors rustup $ cargo clean && cargo build
         Removed 7820 files, 1.6GiB total
       Compiling proc-macro2 v1.0.95
       .
       .
       .
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 27.61s
    djc-2021 download-errors rustup $ ls -l target/debug 
    drwxr-xr-x    - djc 25 Apr 11:18 build
    drwxr-xr-x    - djc 25 Apr 11:19 deps
    drwxr-xr-x    - djc 25 Apr 11:18 examples
    drwxr-xr-x    - djc 25 Apr 11:19 incremental
    .rw-r--r-- 2.5k djc 25 Apr 11:19 librustup.d
    .rw-r--r--  39M djc 25 Apr 11:19 librustup.rlib
    .rwxr-xr-x  40M djc 25 Apr 11:19 rustup-init
    .rw-r--r-- 2.6k djc 25 Apr 11:19 rustup-init.d
    

    You'll want to use ln -s target/debug/rustup-init target/debug/rustup and then invoke ./target/debug/rustup directly instead of using cargo run, though.

  6. ctz commented on Apr 25, 2025

    @ctz
    Contributor

    tls handshake eof originates from tokio-rustls, and signifies the connection was closed at the TCP level unexpectedly during the TLS handshake. Unfortunately I think that means there are no avenues for further debugging at the client end.

  7. muja commented on Apr 25, 2025

    @muja
    Author

    Sure, some instructions would be appreciated

    @muja Can you see the download links in https://github.com/rust-lang/rustup/actions/runs/14660975811?pr=4307?

    Yeah that works. The logs with the new build:

    ❯ RUSTUP_LOG=trace ./rustup install beta
    2025-04-25T09:27:35.802458Z DEBUG run_rustup:run_rustup_inner:main:set_globals: rustup::cli::common: read metadata version: '12' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" current_dir="/tmp/tmp.GMa5EgKV42/rustup" quiet=false process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true })
    2025-04-25T09:27:35.803662Z DEBUG run_rustup:run_rustup_inner:main:install:install: rustup::cli::common: installing toolchain 'beta-x86_64-unknown-linux-gnu' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]"
    2025-04-25T09:27:35.803677Z DEBUG run_rustup:run_rustup_inner:main:install:install: rustup::cli::common: toolchain directory: '/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]"
    2025-04-25T09:27:35.803753Z  INFO run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: syncing channel updates for 'beta-x86_64-unknown-linux-gnu' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T09:27:35.803821Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: creating temp file: /home/user/.rustup/tmp/z57wgwaqjemppfbu_file process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T09:27:35.803886Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: downloading file from: 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T09:27:35.803897Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: downloading with reqwest process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T09:27:35.804052Z TRACE run_rustup:run_rustup_inner:main:install:install:update_from_dist: hyper_util::client::legacy::connect::http: Http::connect; scheme=Some("http"), host=Some("our.corpoate.proxy"), port=Some(Port(8080)) process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T09:27:35.808679Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: hyper_util::client::legacy::connect::http: connecting to 10.176.85.20:8080 process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T09:27:35.810588Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: hyper_util::client::legacy::connect::http: connected to 10.176.85.20:8080 process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T09:27:36.003257Z ERROR run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::download::reqwest_be: failed to download file error=error sending request for url (https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256) process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T09:27:36.003349Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: removing toolchain directory: '/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T09:27:36.003371Z TRACE run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::dist: error=could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/z57wgwaqjemppfbu_file' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T09:27:36.003385Z TRACE run_rustup:run_rustup_inner:main:install:install: rustup::install: error=could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/z57wgwaqjemppfbu_file' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]"
    2025-04-25T09:27:36.003395Z TRACE run_rustup:run_rustup_inner:main:install: rustup::toolchain::distributable: error=could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/z57wgwaqjemppfbu_file' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]"
    2025-04-25T09:27:36.003411Z TRACE run_rustup:run_rustup_inner: rustup_init: error=could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/z57wgwaqjemppfbu_file' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> }
    2025-04-25T09:27:36.003425Z ERROR rustup::cli::common: could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/z57wgwaqjemppfbu_file': failed to make network request: error sending request for url (https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256): client error (Connect): tls handshake eof
    

    FWIW the reason cargo build didn't produce any binaries is because it couldn't find an OPENSSL directory, I completely missed that. No idea if that is related or belongs here, but here is the output:

    warning: openssl-sys@0.9.107: Could not find directory of OpenSSL installation, and this `-sys` crate cannot proceed without this knowledge. If OpenSSL is installed and this crate had trouble finding it,  you can set the `OPENSSL_DIR` environment variable for the compilation process. See stderr section below for further information.
    error: failed to run custom build command for `openssl-sys v0.9.107`
    
    Caused by:
      process didn't exit successfully: `/tmp/tmp.GMa5EgKV42/rustup/target/debug/build/openssl-sys-d6ce3b6d82c3b015/build-script-main` (exit status: 101)
      --- stdout
      cargo:rustc-check-cfg=cfg(osslconf, values("OPENSSL_NO_OCB", "OPENSSL_NO_SM4", "OPENSSL_NO_SEED", "OPENSSL_NO_CHACHA", "OPENSSL_NO_CAST", "OPENSSL_NO_IDEA", "OPENSSL_NO_CAMELLIA", "OPENSSL_NO_RC4", "OPENSSL_NO_BF", "OPENSSL_NO_PSK", "OPENSSL_NO_DEPRECATED_3_0", "OPENSSL_NO_SCRYPT", "OPENSSL_NO_SM3", "OPENSSL_NO_RMD160", "OPENSSL_NO_EC2M", "OPENSSL_NO_OCSP", "OPENSSL_NO_CMS", "OPENSSL_NO_COMP", "OPENSSL_NO_SOCK", "OPENSSL_NO_STDIO", "OPENSSL_NO_EC", "OPENSSL_NO_SSL3_METHOD", "OPENSSL_NO_KRB5", "OPENSSL_NO_TLSEXT", "OPENSSL_NO_SRP", "OPENSSL_NO_RFC3779", "OPENSSL_NO_SHA", "OPENSSL_NO_NEXTPROTONEG", "OPENSSL_NO_ENGINE", "OPENSSL_NO_BUF_FREELISTS", "OPENSSL_NO_RC2"))
      cargo:rustc-check-cfg=cfg(openssl)
      cargo:rustc-check-cfg=cfg(libressl)
      cargo:rustc-check-cfg=cfg(boringssl)
      cargo:rustc-check-cfg=cfg(awslc)
      cargo:rustc-check-cfg=cfg(libressl250)
      cargo:rustc-check-cfg=cfg(libressl251)
      cargo:rustc-check-cfg=cfg(libressl252)
      cargo:rustc-check-cfg=cfg(libressl261)
      cargo:rustc-check-cfg=cfg(libressl270)
      cargo:rustc-check-cfg=cfg(libressl271)
      cargo:rustc-check-cfg=cfg(libressl273)
      cargo:rustc-check-cfg=cfg(libressl280)
      cargo:rustc-check-cfg=cfg(libressl281)
      cargo:rustc-check-cfg=cfg(libressl291)
      cargo:rustc-check-cfg=cfg(libressl310)
      cargo:rustc-check-cfg=cfg(libressl321)
      cargo:rustc-check-cfg=cfg(libressl332)
      cargo:rustc-check-cfg=cfg(libressl340)
      cargo:rustc-check-cfg=cfg(libressl350)
      cargo:rustc-check-cfg=cfg(libressl360)
      cargo:rustc-check-cfg=cfg(libressl361)
      cargo:rustc-check-cfg=cfg(libressl370)
      cargo:rustc-check-cfg=cfg(libressl380)
      cargo:rustc-check-cfg=cfg(libressl381)
      cargo:rustc-check-cfg=cfg(libressl382)
      cargo:rustc-check-cfg=cfg(libressl390)
      cargo:rustc-check-cfg=cfg(libressl400)
      cargo:rustc-check-cfg=cfg(libressl410)
      cargo:rustc-check-cfg=cfg(ossl101)
      cargo:rustc-check-cfg=cfg(ossl102)
      cargo:rustc-check-cfg=cfg(ossl102f)
      cargo:rustc-check-cfg=cfg(ossl102h)
      cargo:rustc-check-cfg=cfg(ossl110)
      cargo:rustc-check-cfg=cfg(ossl110f)
      cargo:rustc-check-cfg=cfg(ossl110g)
      cargo:rustc-check-cfg=cfg(ossl110h)
      cargo:rustc-check-cfg=cfg(ossl111)
      cargo:rustc-check-cfg=cfg(ossl111b)
      cargo:rustc-check-cfg=cfg(ossl111c)
      cargo:rustc-check-cfg=cfg(ossl111d)
      cargo:rustc-check-cfg=cfg(ossl300)
      cargo:rustc-check-cfg=cfg(ossl310)
      cargo:rustc-check-cfg=cfg(ossl320)
      cargo:rustc-check-cfg=cfg(ossl330)
      cargo:rustc-check-cfg=cfg(ossl340)
      cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR
      X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset
      cargo:rerun-if-env-changed=OPENSSL_LIB_DIR
      OPENSSL_LIB_DIR unset
      cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR
      X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset
      cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR
      OPENSSL_INCLUDE_DIR unset
      cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR
      X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset
      cargo:rerun-if-env-changed=OPENSSL_DIR
      OPENSSL_DIR unset
      cargo:rerun-if-env-changed=OPENSSL_NO_PKG_CONFIG
      cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG
      cargo:rerun-if-env-changed=PKG_CONFIG
      cargo:rerun-if-env-changed=OPENSSL_STATIC
      cargo:rerun-if-env-changed=OPENSSL_DYNAMIC
      cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
      cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
    
    
      Could not find openssl via pkg-config:
    
      pkg-config exited with status code 1
      > PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 pkg-config --libs --cflags openssl
    
      The system library `openssl` required by crate `openssl-sys` was not found.
      The file `openssl.pc` needs to be installed and the PKG_CONFIG_PATH environment variable must contain its parent directory.
      The PKG_CONFIG_PATH environment variable is not set.
    
      HINT: if you have installed the library, try setting PKG_CONFIG_PATH to the directory containing `openssl.pc`.
    
    
      cargo:warning=Could not find directory of OpenSSL installation, and this `-sys` crate cannot proceed without this knowledge. If OpenSSL is installed and this crate had trouble finding it,  you can set the `OPENSSL_DIR` environment variable for the compilation process. See stderr section below for further information.
    
      --- stderr
    
    
      Could not find directory of OpenSSL installation, and this `-sys` crate cannot
      proceed without this knowledge. If OpenSSL is installed and this crate had
      trouble finding it,  you can set the `OPENSSL_DIR` environment variable for the
      compilation process.
    
      Make sure you also have the development packages of openssl installed.
      For example, `libssl-dev` on Ubuntu or `openssl-devel` on Fedora.
    
      If you're in a situation where you think the directory *should* be found
      automatically, please open a bug at https://github.com/sfackler/rust-openssl
      and include information about your system as well as this message.
    
      $HOST = x86_64-unknown-linux-gnu
      $TARGET = x86_64-unknown-linux-gnu
      openssl-sys = 0.9.107
    
    
    warning: build failed, waiting for other jobs to finish...
    
  8. djc commented on Apr 25, 2025

    @djc
    Contributor

    FWIW the reason cargo build didn't produce any binaries is because it couldn't find an OPENSSL directory, I completely missed that. No idea if that is related or belongs here, but here is the output:

    For now you'll need to build OpenSSL to build rustup in the default configuration... that's the thing we're trying to fix here.

  9. muja commented on Apr 25, 2025

    @muja
    Author

    Okay, and how do I do that? I couldn't find a openssl.pc on the machine, and I cannot install any packages due to missing privileges.

  10. djc commented on Apr 25, 2025

    @djc
    Contributor

    It might be easier to drop that stuff for now, try cargo build --no-default-features --features reqwest-rustls-tls?

  11. muja commented on Apr 25, 2025

    @muja
    Author

    That works, the output (if at all different from my previous comment):

    ❯ RUSTUP_LOG=trace ./rustup install beta
    2025-04-25T10:07:31.974791Z DEBUG run_rustup:run_rustup_inner:main:set_globals: rustup::cli::common: read metadata version: '12' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" current_dir="/tmp/tmp.GMa5EgKV42/rustup" quiet=false process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true })
    2025-04-25T10:07:31.980799Z DEBUG run_rustup:run_rustup_inner:main:install:install: rustup::cli::common: installing toolchain 'beta-x86_64-unknown-linux-gnu' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]"
    2025-04-25T10:07:31.980838Z DEBUG run_rustup:run_rustup_inner:main:install:install: rustup::cli::common: toolchain directory: '/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]"
    2025-04-25T10:07:31.981002Z  INFO run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: syncing channel updates for 'beta-x86_64-unknown-linux-gnu' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T10:07:31.981199Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: creating temp file: /home/user/.rustup/tmp/te9mzdmyqkmi7shc_file process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T10:07:31.981300Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: downloading file from: 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T10:07:31.981333Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: downloading with reqwest process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T10:07:31.981775Z TRACE run_rustup:run_rustup_inner:main:install:install:update_from_dist: hyper_util::client::legacy::connect::http: Http::connect; scheme=Some("http"), host=Some("our.corporate.proxy"), port=Some(Port(8080)) process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T10:07:31.989542Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: hyper_util::client::legacy::connect::http: connecting to 10.176.85.20:8080 process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T10:07:31.992136Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: hyper_util::client::legacy::connect::http: connected to 10.176.85.20:8080 process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T10:07:32.068371Z ERROR run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::download::reqwest_be: failed to download file error=error sending request for url (https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256) process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T10:07:32.068490Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::cli::common: removing toolchain directory: '/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T10:07:32.068543Z TRACE run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustup::dist: error=could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/te9mzdmyqkmi7shc_file' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    2025-04-25T10:07:32.068594Z TRACE run_rustup:run_rustup_inner:main:install:install: rustup::install: error=could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/te9mzdmyqkmi7shc_file' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]"
    2025-04-25T10:07:32.068633Z TRACE run_rustup:run_rustup_inner:main:install: rustup::toolchain::distributable: error=could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/te9mzdmyqkmi7shc_file' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } current_dir="/tmp/tmp.GMa5EgKV42/rustup" process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } args="[\"./rustup\", \"install\", \"beta\"]"
    2025-04-25T10:07:32.068687Z TRACE run_rustup:run_rustup_inner: rustup_init: error=could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/te9mzdmyqkmi7shc_file' process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> } process=OsProcess(OsProcess { stderr_is_a_tty: true, stdout_is_a_tty: true }) console_filter=Handle { inner: (Weak), _s: PhantomData<fn(tracing_subscriber::registry::sharded::Registry)> }
    2025-04-25T10:07:32.068730Z ERROR rustup::cli::common: could not download file from 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256' to '/home/user/.rustup/tmp/te9mzdmyqkmi7shc_file': failed to make network request: error sending request for url (https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256): client error (Connect): tls handshake eof
    
  12. 37 remaining items

  13. muja commented on Apr 25, 2025

    @muja
    Author

    No difference:

     ❯ cargo run
        Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.12s
         Running `target/debug/foo`
    [src/main.rs:10:5] probe.cert_file = Some(
        "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem",
    )
    [src/main.rs:11:5] probe.cert_dir = Some(
        "/var/run/secrets/kubernetes.io/serviceaccount",
    )
    
    ❯ ./target/debug/foo 
    [src/main.rs:10:5] probe.cert_file = Some(
        "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem",
    )
    [src/main.rs:11:5] probe.cert_dir = Some(
        "/var/run/secrets/kubernetes.io/serviceaccount",
    )
    
  14. modified the milestones: 1.28.2, 1.28.3 on Apr 26, 2025
  15. rami3l commented on Apr 28, 2025

    @rami3l
    Member

    @djc I think this should not be a blocker of the upcoming v1.28.2 release (at least the old backends are still usable), so I'm pushing this back to v1.28.3 (or whatever comes next). Is that okay?

  16. djc commented on Apr 28, 2025

    @djc
    Contributor

    Seems fair. It looks like this is a pretty rare platform-specific issue anyway, and we have some mitigations/improvements already in place.

  17. muja commented on Apr 28, 2025

    @muja
    Author

    Really greatest and warmest thanks to you all for getting so thoroughly involved. Was some crazy investigating but now that we've gotten to the bottom of this issue, it's easy to fix on my side so the issue can be addressed later, whatever the fix may be. Diagnostics were already but could definitely be further improved in the long-term, but that is indeed a never ending battle.

    Thanks!

  18. added
    dependenciesThe issue is caused by rustup's dependencies.
    on Sep 22, 2025
  19. muja commented on Nov 4, 2025

    @muja
    Author

    Just as a follow-up so I understand correctly -- I believe I need to leave the SSL_CERT_FILE environment variable in? If I remove it, will it still produce an error?

  20. djc commented on Nov 4, 2025

    @djc
    Contributor

    I suggest you try it?

  21. muja commented on Nov 25, 2025

    @muja
    Author

    I suggest you try it?

    That's not really the point. After looking at the activity, AFAIU nothing has been done to the TLS certs lookup behavior? And I'm not sure I understand what the ultimate resolution was. Better documentation? Maybe I've missed something.

    Sure I could try it but maybe I "somehow get lucky" or run into another bug which cancels out this one? I'd rather ask here: what's the expected outcome of whatever changes have been made?

  22. djc commented on Nov 26, 2025

    @djc
    Contributor

    I'm still planning to implement one more thing to help this kind of situation. However, I don't really have time/motivation to go through this issue and cobble together enough context to understand again where your problem comes from. If you're able to summarize your understanding of why you need the SSL_CERT_FILE workaround, I might be able to say more.

  23. muja commented on Nov 26, 2025

    @muja
    Author

    The issue was that SSL_CERT_DIR environment variable was set (to a directory which didn't contain the proxy certificate) which led to rustup / rustls not considering the system certs / system lookup paths:

    2025-04-25T14:45:49.330584Z DEBUG run_rustup:run_rustup_inner:main:install:install:update_from_dist: rustls::webpki::anchors: add_parsable_certificates processed 0 valid and 0 invalid certs     current_dir="/tmp/tmp.pG4aiqSug8/rustup" args="[\"./rustup\", \"install\", \"beta\"]" profile="Default" prefix="/home/user/.rustup/toolchains/beta-x86_64-unknown-linux-gnu"
    

    Someone wrote that since that env is set it will disable looking for certs in other places, so the workaround was setting SSL_CERT_FILE

  24. djc commented on Nov 27, 2025

    @djc
    Contributor

    We're reworking openssl-probe:

    I think that might help with this issue, too. Will ping when that change lands in rustup.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugdependenciesThe issue is caused by rustup's dependencies.

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions