#rust #openssl
Вопрос:
Я создаю свой файл грузового докера. Раньше это работало, а теперь нет.
Я получаю эту ошибку: error: failed to run custom build command for `openssl-sys v0.9.67
Я сделал несколько вещей, основанных на моем многократном копании:
brew install openssl
brew install pkg-config
brew install perl
Я также добавил следующее в свои зависимости в cargo.toml
openssl-sys = "0.9"
openssl = { version = "0.10.33", features = ["vendored"] }
Я даже добавил это ниже в свой профиль .
export PKG_CONFIG_PATH="/usr/local/opt/openssl@3/lib/pkgconfig"
Все еще не работает.
Ошибка отображается только во время выполнения сборки docker.
—вот в чем ошибка—
#7 133.6 error: failed to run custom build command for `openssl-sys v0.9.67`
#7 133.6
#7 133.6 Caused by:
#7 133.6 process didn't exit successfully: `/build-xxx/target/release/build/openssl-sys-bb0d0329fb009fff/build-script-main` (exit status: 101)
#7 133.6 --- stdout
#7 133.6 cargo:rustc-cfg=const_fn
#7 133.6 cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_NO_VENDOR
#7 133.6 X86_64_UNKNOWN_LINUX_GNU_OPENSSL_NO_VENDOR unset
#7 133.6 cargo:rerun-if-env-changed=OPENSSL_NO_VENDOR
#7 133.6 OPENSSL_NO_VENDOR unset
#7 133.6 CC_x86_64-unknown-linux-gnu = None
#7 133.6 CC_x86_64_unknown_linux_gnu = None
#7 133.6 HOST_CC = None
#7 133.6 CC = None
#7 133.6 CFLAGS_x86_64-unknown-linux-gnu = None
#7 133.6 CFLAGS_x86_64_unknown_linux_gnu = None
#7 133.6 HOST_CFLAGS = None
#7 133.6 CFLAGS = None
#7 133.6 CRATE_CC_NO_DEFAULTS = None
#7 133.6 DEBUG = Some("false")
#7 133.6 CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
#7 133.6 running "perl" "./Configure" "--prefix=/build-xxx/target/release/build/openssl-sys-c2883a05afa95d60/out/openssl-build/install" "no-dso" "no-shared" "no-ssl3" "no-unit-test" "no-comp" "no-zlib" "no-zlib-dynamic" "no-md2" "no-rc5" "no-weak-ssl-ciphers" "no-camellia" "no-idea" "no-seed" "linux-x86_64" "-O2" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64"
#7 133.6
#7 133.6 --- stderr
#7 133.6 Can't locate FindBin.pm in @INC (you may need to install the FindBin module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.32.1 /usr/local/share/perl/5.32.1 /usr/lib/x86_64-linux-gnu/perl5/5.32 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.32 /usr/share/perl/5.32 /usr/local/lib/site_perl) at ./Configure line 15.
#7 133.6 BEGIN failed--compilation aborted at ./Configure line 15.
#7 133.6 thread 'main' panicked at '
#7 133.6
#7 133.6
#7 133.6 Error configuring OpenSSL build:
#7 133.6 Command: "perl" "./Configure" "--prefix=/build-xxx/target/release/build/openssl-sys-c2883a05afa95d60/out/openssl-build/install" "no-dso" "no-shared" "no-ssl3" "no-unit-test" "no-comp" "no-zlib" "no-zlib-dynamic" "no-md2" "no-rc5" "no-weak-ssl-ciphers" "no-camellia" "no-idea" "no-seed" "linux-x86_64" "-O2" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64"
#7 133.6 Exit status: exit status: 2
#7 133.6
#7 133.6
#7 133.6 ', /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/openssl-src-111.16.0 1.1.1l/src/lib.rs:479:13
#7 133.6 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
#7 133.6 warning: build failed, waiting for other jobs to finish...
#7 133.7 error: build failed
#7 ERROR: executor failed running [/bin/sh -c cd /build-xxx/ amp;amp; rustup default nightly amp;amp; rustup update amp;amp; cargo build --release]: exit code: 101
—ниже приведен файл my docker—
FROM rust:slim
COPY . /build-xxx/
RUN cd /build-xxx/ amp;amp; rustup default nightly amp;amp; rustup update amp;amp; cargo build --release
LABEL Name=XXX Version=0.0.1
EXPOSE 8000
ENV ROCKET_ENV=stage
CMD [«/сборка-xxx/цель/выпуск/xxx»]
Комментарии:
1. Над строкой «не удалось выполнить команду пользовательской сборки» должны быть ошибки. Кто они такие?
2. Вызвано: #7 121.4 процесс не завершился успешно:
/build-xxx/target/release/build/openssl-sys-bb0d0329fb009fff/build-script-main
(статус завершения: 101)3. Я не уверен, что это имеет значение, но это работает над
cargo run
проблемой, которая появляется только во времяdocker build
4. Затем вы можете отредактировать свой вопрос, чтобы включить конфигурацию докера и полный текст сообщения об ошибке?
5. @jmb — я обновил вопрос. Спасибо.
Ответ №1:
Поскольку моя ошибка возникает только в сборке docker, я обновил файл dockerfile и добавил зависимости (сборка-необходимая проверка установки zlib1g-dev), необходимые для OpenSSL.
Я изменил свой файл docker на приведенный ниже, и он работает!
FROM rust:slim
RUN apt-get update amp;amp; apt-get install -y
build-essential checkinstall zlib1g-dev -y
COPY . /build-xxx/
RUN cd /build-xxx/ amp;amp; rustup default nightly amp;amp; rustup update amp;amp; cargo build --release
LABEL Name=XXX Version=0.0.1
EXPOSE 8000
ENV ROCKET_ENV=stage
CMD ["/build-xxx/target/release/xxx"]