Есть ли способ скомпилировать cURL и все deps в определенный каталог? - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь скомпилировать cURL для busybox на нескольких платформах, но мне нужно скопировать его в другой контейнер Docker после его сборки. У меня раньше было это с этим работать:

RUN wget -q https://curl.haxx.se/download/curl-7.63.0.tar.gz && \
    tar xzf curl-7.63.0.tar.gz && \
    cd curl-7.63.0 && \
    LIBS="-ldl" ./configure --disable-shared && \
    make && \
    make install

Однако, по какой-то причине, возможно, я допустил ошибку, он больше не компилируется статически и требует библиотек вроде libcurl, libz и т. Д. Ранее у меня это работало только с libssl / libcrypto и т. Д.

Так что мой вопрос на самом деле, есть ли способ скомпилировать cURL и все его библиотеки deps и общие библиотеки в определенный каталог, чтобы я мог скопировать это вместо попытки создать статически связанный двоичный файл для копирования?

Спасибо

1 Ответ

0 голосов
/ 14 февраля 2019

Для чего бы это ни стоило, это возможно с аргументом --prefix=/build.

Полный Dockerfile для сборки (очень урезанный) cURL:

FROM buildpack-deps:stretch-scm
ARG VERSION=7.63.0

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
      g++ gcc libc6-dev make pkg-config
RUN apt-get install -y libssl-dev

RUN wget -q https://curl.haxx.se/download/curl-${VERSION}.tar.gz && \
    tar xzf curl-${VERSION}.tar.gz

WORKDIR curl-${VERSION}

RUN ./configure --prefix=/build \
      --without-zlib \
      --disable-cookies \
      --disable-verbose \
      --disable-versioned-symbols \
      --disable-shared --enable-static \
      --disable-ftps --disable-gopher \
      --disable-imap --disable-imaps \
      --disable-ldap --disable-ldaps \
      --disable-pop3 --disable-pop3s \
      --disable-rtmp --disable-rtsp \
      --disable-dict --disable-file \
      --disable-ftp --disable-sftp \
      --disable-smb --disable-smbs \
      --disable-smtp --disable-smtps \
      --disable-telnet --disable-tftp && \
    make && \
    make install

Затем вы можете извлечь это так:

ARG CURL_IMAGE

FROM ${CURL_IMAGE} AS base
FROM busybox

ARG LIB_LOCATION

COPY --from=base /build/bin/curl /usr/sbin/curl
COPY --from=base ${LIB_LOCATION}/libssl.so.1.1 ${LIB_LOCATION}/libssl.so.1.1
COPY --from=base ${LIB_LOCATION}/libcrypto.so.1.1 ${LIB_LOCATION}/libcrypto.so.1.1

Скорее всего, в будущем это будет полезно только мне, но вот, пожалуйста.

Редактировать: LIB_LOCATION - одно из следующих значений для amd64, arm64 и arm.

/usr/lib/x86_64-linux-gnu
/usr/lib/arm-linux-gnueabihf
/usr/lib/aarch64-linux-gnu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...