無法使用 `cargo build`,因為下載相依元件時出現了 cipher, curl 59 相關的錯誤

症狀

無法使用 cargo build,因為可以在錯誤訊息中看到類似這樣的訊息

1
Couldn't use specified SSL cipher (failed setting cipher list: DEFAULT_SUSE)

該訊息應會包括 curl 錯誤代碼 59 。

診斷以及修復

試著用 curlwget 模擬下載的過程,但是不會出現這樣的錯誤。(特別注意使用 curl 的時候可以觀察到重新導向到 Amazon AWS ,真正相依包裹存放處的請求)

Google 的話勉強可以找到「試著用 strace 觀察看看」的建議,然而似乎無法觀察到很有建設性的東西。

不過值得注意的一點是,如果很多人都出現了類似的問題,那為什麼完全沒有看到完全一致的錯誤訊息呢?為什麼沒有人回報呢?如果這樣思考的話,只能假設是自己的作業系統這裡出了問題吧。

不過,為啥 curl 沒問題,然後 cargo 有問題呢?

總之百思不得其解。

不過在 YaSTSoftware Management 模組中,赫然發現自己有 libopenssl 卻沒有 libopenssl-devel 而是 libressl-devel 時有點驚嚇。

因為猜測這個事實可能是造成 cargo 無法運作的原因,因此把 libressl-devel 置換成 libopenssl-devel ,接著想要重新編譯 cargo … 等等 cargo 卡住了不是嗎 Orz

好在,在 rustup 的資料夾中(~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/)還有備用的 cargo 可以用,因此把該 cargo 覆蓋到 ~/.cargo/bin 之下的 cargo,接著 cargo install cargo --force 就得到可以使用的 cargo 了。

(千秋的機器裡面 PATH 環境變數有包括 ~/.cargo/bin

修復方式大綱

因為問題出在 openssl header 畢竟和 ressl 的 header 有差異,因此要替換成 openssl 的才行。

  • 使用 libopenssl-devel 而非 libressl-devel

  • rustup 的資料夾 ~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/ 中調出備用的 cargo

  • cargo install cargo --force (當然,若滿足於備用 cargo 的話也可以不做這步 XD)

文章目錄
  1. 1. 症狀
  2. 2. 診斷以及修復
  3. 3. 修復方式大綱