使用Alphine Linux的Docker Build SofteWare,错误为``安装:无法识别的选项:strip-program = strip''

时间:2018-07-05 06:56:28

标签: docker makefile mosquitto

我正在构建一个蚊子docker映像,当调用make 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 :(得分:1)

问题是您要安装mosquitto版本为/usr/bin/install的tar.gz:版本:BusyBox v1.27.2 ,而蚊子的tar.gz是根据wget的需求下载的例如,/usr/bin/install GNU coreutils 8.25版本,其中包括缺少的选项strip-program

  

因此,解决方案很简单:为高山安装mosquitto版本,而不是为通用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

答案 1 :(得分:0)

除了答案@ mulg0r给了我。我发现还有另一种解决方法。我认为这在有人遇到类似问题时也很有用。来自https://git.alpinelinux.org/cgit/aports/tree/main/mosquitto?h=master的此链接。来自alpine Linux的软件包。单击该页面内的Git repository按钮,该软件包的构建过程说明就在其中。并进行了一些更改以适合高山Linux。

对于此问题,请从https://git.alpinelinux.org/cgit/aports/tree/main/mosquitto?h=master中查找APKBUILD文件。此行也解决了我的问题:

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

上面只是在执行make install时注释掉--strip-program