Docker Сборка SofteWare с использованием Alphine Linux с ошибкой 'установка: нераспознанная опция: strip-program = strip' - PullRequest
0 голосов
/ 05 июля 2018

Я создаю образ установщика комаров, при вызове make install отвечаю на эти сообщения об ошибках 'install: нераспознанный параметр: strip-program = strip', пожалуйста, помогите, спасибо.

install -d /usr/local/lib/
install -s --strip-program=strip libmosquitto.so.1 
/usr/local/lib/libmosquitto.so.1
install: unrecognized option: strip-program=strip
BusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.

Usage: install [-cdDsp] [-o USER] [-g GRP] [-m MODE] [-t DIR] [SOURCE]... DEST

Copy files and set attributes

    -c  Just copy (default)
    -d  Create directories
    -D  Create leading target directories
    -s  Strip symbol table
    -p  Preserve date
    -o USER Set ownership
    -g GRP  Set group ownership
    -m MODE Set permissions
    -t DIR  Install to DIR
make[1]: *** [Makefile:28: install] Error 1
make[1]: Leaving directory '/usr/local/src/mosquitto-1.4.15/lib'
make: *** [Makefile:38: install] Error 2

Часть моего Dockfile:

FROM alpine:3.7
RUN apk add --update --no-cache build-base openssl openssl-dev c-ares-dev util-linux-dev libwebsockets-dev libxslt && \
    cd /usr/local && \
    mkdir src && \
    cd src && \
    wget https://mosquitto.org/files/source/mosquitto-1.4.15.tar.gz && \
    tar -zxvf mosquitto-1.4.15.tar.gz && \
    cd mosquitto-1.4.15 && \
    make && make install

Вызовите make последние несколько строк результата:

cc -Wall -ggdb -O2  -c mosquitto_passwd.c -o mosquitto_passwd.o
cc mosquitto_passwd.o -o mosquitto_passwd  -lcrypto
make[1]: Leaving directory '/usr/local/src/mosquitto-1.4.15/src'
set -e; for d in man; do make -C ${d}; done
make[1]: Entering directory '/usr/local/src/mosquitto-1.4.15/man'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/usr/local/src/mosquitto-1.4.15/man'

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

За исключением ответа @ mulg0r дал мне. Я обнаружил, что есть другой способ решить эту проблему. Я думаю, что это также полезно, когда кто-то сталкивается с подобной проблемой. С https://git.alpinelinux.org/cgit/aports/tree/main/mosquitto?h=master эта ссылка. пакет от альпийского линукса. Нажмите кнопку Git repository, внутри этой страницы инструкции по сборке этого пакета. И некоторые изменения кода, чтобы соответствовать Alpine Linux.

Для этого вопроса найдите файл APKBUILD из https://git.alpinelinux.org/cgit/aports/tree/main/mosquitto?h=master., эта строка также решила мой вопрос:

sed -i -e "s|(INSTALL) -s|(INSTALL)|g" \
    -e 's|--strip-program=${CROSS_COMPILE}${STRIP}||' \
    */Makefile */*/Makefile

Выше просто закомментируйте --strip-программа, когда извините make install

0 голосов
/ 05 июля 2018

Проблема в том, что вы устанавливаете mosquitto tar.gz с /usr/bin/install версией: BusyBox v1.27.2 , и tar.gz вашего комара, загруженный с помощью wget, нуждается /usr/bin/install версия из GNU coreutils, например, 8.25 , которая включает в себя ваш отсутствующий параметр strip-program.

Итак, решение простое: установить версию для комаров для alpine , а не для универсального Linux:

FROM alpine:3.7
RUN apk add --update --no-cache build-base openssl openssl-dev c-ares-dev util-linux-dev libwebsockets-dev libxslt && \
    apk add mosquitto

Будет установлена ​​версия 1.4.15.

РЕДАКТИРОВАТЬ: Если вам нужно установить плагин и скомпилировать универсальный linux tar.gz, вам нужно установить apk add coreutils

...