Rust, yerel kurulumdan sonra bile openssl-sys v0.9.60 için komut oluşturmada neden başarısız oluyor?
failed to run custom build command for openssl-sys v0.9.60
Pas programımı oluşturmaya çalışırken hatayla karşılaşıyorum . İşte main.rs
ve Cargo.toml
dosyalar.
main.rs
extern crate reqwest;
fn main() {
let mut resp = reqwest::get("http://www.governo.mg.gov.br/Institucional/Equipe").unwrap();
assert!(resp.status().is_success());
}
Cargo.toml
[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"
Openssl'yi yerel olarak kurdum (bu soruda önerildiği gibi ), şunu kullanarak:
git clone git://git.openssl.org/openssl.git
cd openssl
./config --openssldir=/usr/local/ssl
make
make test
sudo make install
Sonunda koştum export OPENSSL_DIR="/usr/local/ssl"
Varsayılan yolumda olan bir anaconda openssl kurulumuna sahip olduğumu not ettim . Openssl'nin varsayılan yolunu github kurulumuna değiştirmek için çalıştırdım chmod -x MYPATH/anaconda3/bin/openssl
ve şimdi which openssl
geri dönüyor /usr/local/bin/openssl
.
Ayrıca pkg-config'i de yükledim (bu soruda önerildiği gibi ). Çalışan which pkg-config
iadeler/usr/bin/pkg-config
Ancak, cargo run
tekrar çalıştırdığımda program aynı hata mesajını yazdırıyor. İşte tüm hata mesajı:
> 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
Görünüşe göre pas, ssl'yi arıyor /usr/local/ssl/lib
. Aslında /usr/local/ssl
bilgisayarımda bir klasör var ama yok lib
.
Burada neyi yanlış yapıyorum? Yerel openssl kurulumumu pasla doğru şekilde nasıl çalıştırabilirim?
Yanıtlar
Bunu kendim yüklemekle ilgili deneyimim yok, ancak bazı ipuçları verebilirim.
Öncelikle OpenSSL'yi kurma çabanızla ilgili. Depoyu klonladıktan sonra, yapılandırmadan ve yapmadan önce herhangi bir şube seçmezsiniz. Bu master
, OpenSSL 3.0.0'ın gelişen bir sürümü olan dalı oluşturduğunuz anlamına gelir . Bu, sandığın belgelerine göre desteklenen bir sürüm değildir . OpenSSL'nin desteklenen bir sürümünü oluşturmak için, bazı 1.1.1 dalına veya etiketine geçmeniz gerekecektir. Alternatif olarak, 1.1.1 sürümünü OpenSSL'nin indirme sayfasından indirebilirsiniz .
Bununla birlikte, OpenSSL'yi kaynaktan yüklemek gerekli görünmüyor. Otomatik bölümü altında, belgeler, kasanın her tür tipik OpenSSL kurulumuyla başa çıkabileceğini açıklar. Sizin durumunuzda mümkünse, bunu takip etmeniz sizin için daha kolay olabilir. Öyleyse, OPENSSL_DIR
ortam değişkeninin ayarını kaldırmalısınız, aksi takdirde bu, OpenSSL kurulumunu bulmak için sandığın otomatik mekanizmalarını geçersiz kılar (devam eder).
Hala Manuel konfigürasyona bağlı kalmak istiyorsanız, o zaman gerçekten de ortam değişkenlerini kullanmalısınız ve OPENSSL_DIR
uygun bir tane gibi görünüyor. Ancak, openssldir
configure komutunuzda kullandığınız parametre ile aynı anlama gelmez ./config --openssldir=/usr/local/ssl
. Ayrıntıları almak için , o yapılandırma parametresinin anlamını kontrol edin . Aslında, bir sandık en anlamı OPENSSL_DIR
için karşılık gelir ayarında (Yapılandırmak vermedi).--prefix
Şu anda karşılaştığınız sorun, OPENSSL_DIR
değişkeninizin OpenSSL yapılandırma dosyaları için dizini göstermesidir, oysa sandık, bunun gerçek OpenSSL kurulum dizini ağacının (sizin durumunuzda burada bulunuyor gibi görünmesini bekler /usr/local
).