जंग स्थानीय स्थापना के बाद भी Opensl-sys v0.9.60 के लिए कमांड बनाने में विफल क्यों है?
मुझे failed to run custom build command for openssl-sys v0.9.60
अपना जंग कार्यक्रम बनाने की कोशिश करते समय त्रुटि का सामना करना पड़ रहा है । यहाँ main.rs
और Cargo.toml
फाइलें हैं।
मुख्य
extern crate reqwest;
fn main() {
let mut resp = reqwest::get("http://www.governo.mg.gov.br/Institucional/Equipe").unwrap();
assert!(resp.status().is_success());
}
कार्गो
[package]
name = "get_sct"
version = "0.1.0"
authors = ["myname <myemail>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
reqwest = "0.10.10"
मैंने स्थानीय रूप से ओपनस्एल स्थापित किया (जैसा कि इस प्रश्न में सुझाव दिया गया है ), का उपयोग करते हुए:
git clone git://git.openssl.org/openssl.git
cd openssl
./config --openssldir=/usr/local/ssl
make
make test
sudo make install
अंत में, मैं भागा export OPENSSL_DIR="/usr/local/ssl"
मैं ध्यान दिया मैं पहले से ही की एक एनाकोंडा instalation था openssl जो मेरे डिफ़ॉल्ट पथ में था। खुलने के डिफ़ॉल्ट पथ को बदलने के लिए मैं चला गया github instalation chmod -x MYPATH/anaconda3/bin/openssl
और अब which openssl
वापस आता है /usr/local/bin/openssl
।
मेरे पास pkg-config भी स्थापित है (जैसा कि इस प्रश्न में सुझाव दिया गया है )। रनिंग which pkg-config
रिटर्न/usr/bin/pkg-config
हालाँकि, जब मैं cargo run
फिर से चलता हूँ तो प्रोग्राम उसी त्रुटि संदेश को प्रिंट करता है। यहाँ संपूर्ण त्रुटि संदेश है:
> cargo run
Compiling openssl-sys v0.9.60
Compiling tokio v0.2.24
Compiling pin-project-internal v0.4.27
Compiling pin-project-internal v1.0.2
Compiling mime_guess v2.0.3
Compiling url v2.2.0
error: failed to run custom build command for `openssl-sys v0.9.60`
Caused by:
process didn't exit successfully: `/PACKAGEPATH/target/debug/build/openssl-sys-db18d493257de4f7/build-script-main` (exit code: 101)
--- stdout
cargo:rustc-cfg=const_fn
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 = /usr/local/ssl
--- stderr
thread 'main' panicked at 'OpenSSL library directory does not exist: /usr/local/ssl/lib', /home/lucas/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.60/build/main.rs:66:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: build faile
ऐसा लगता है कि जंग ssl में खोज रहा है /usr/local/ssl/lib
। वास्तव में, /usr/local/ssl
मेरे पीसी में एक फ़ोल्डर है, लेकिन वहां कोई नहीं lib
है।
मुझसे यहां क्या गलत हो रहा है? जंग के साथ खुलने के कार्य की मेरी स्थानीय स्थापना कैसे सही ढंग से हो सकती है?
जवाब
मुझे स्वयं इसे स्थापित करने का कोई अनुभव नहीं है लेकिन कुछ संकेत देने में सक्षम हो सकता है।
सबसे पहले OpenSSL को स्थापित करने के आपके प्रयास के बारे में। रिपॉजिटरी को क्लोन करने के बाद, आप कॉन्फ़िगर करने और बनाने से पहले किसी विशेष शाखा का चयन नहीं करते हैं। इसका मतलब है कि आप master
शाखा का निर्माण कर रहे हैं , जो ओपनएसएसएल 3.0.0 का एक विकसित संस्करण है। यह टोकरा के प्रलेखन के अनुसार समर्थित संस्करण नहीं है । ओपनएसएसएल के एक समर्थित संस्करण का निर्माण करने के लिए, आपको कुछ 1.1.1 शाखा या टैग पर स्विच करना होगा। वैकल्पिक रूप से, आप ओपनएसएसएल के डाउनलोड पेज से 1.1.1 संस्करण डाउनलोड कर सकते हैं ।
उस ने कहा, स्रोत से ओपनएसएसएल को स्थापित करना आवश्यक नहीं लगता है। सेक्शन ऑटोमैटिक के तहत , डॉक्यूमेंटेशन बताता है कि टोकरा सभी प्रकार के विशिष्ट ओपनएसएसएल इंस्टॉलेशन से निपट सकता है। यदि आपके मामले में संभव हो, तो इसका अनुसरण करना आपके लिए आसान हो सकता है। यदि ऐसा है, तो आपको OPENSSL_DIR
पर्यावरण चर को परेशान करना चाहिए अन्यथा ओपनएसएसटी स्थापना को खोजने के लिए टोकरा के स्वचालित तंत्र को ओवरराइड करना (जारी रखना) होगा।
यदि आप अभी भी मैनुअल कॉन्फ़िगरेशन के साथ रहना चाहते हैं , तो वास्तव में आपको पर्यावरण चर का उपयोग करना चाहिए, और OPENSSL_DIR
एक सुविधाजनक लगता है। हालांकि, इसका मतलब यह नहीं है openssldir
कि आपके कॉन्फ़िगर कमांड में जिस पैरामीटर का उपयोग किया गया है ./config --openssldir=/usr/local/ssl
। विवरण प्राप्त करने के लिए, उस कॉन्फ़िगरेशन पैरामीटर का अर्थ देखें । वास्तव में, के टोकरे के अर्थ OPENSSL_DIR
से मेल खाती है सेटिंग (जो आप कॉन्फ़िगर नहीं किया)।--prefix
आपके द्वारा अभी चल रही समस्या यह है कि आपका OPENSSL_DIR
वैरिएबल ओपनएसएसएल कॉन्फ़िगरेशन फ़ाइलों के लिए आपकी निर्देशिका को इंगित करता है, जबकि टोकरा यह अपेक्षा करता है कि वास्तविक ओपनएसएसएल इंस्टॉलेशन डायरेक्टरी ट्री के शीर्ष पर इंगित करें (जो आपके मामले में रहता है /usr/local
)।