我正在构建一个蚊子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'
答案 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