我正在编写一个从源代码安装Qt的dockerfile:
FROM ubuntu:bionic
ARG QT_FILE_LINK=http://download.qt.io/official_releases/qt/5.11/5.11.3/single/qt-everywhere-src-5.11.3.zip
RUN apt-get update \
&& apt-get install -y --no-install-recommends build-essential
RUN wget --progress=bar:force -O qt.zip $QT_FILE_LINK
RUN echo "Unzipping..." && unzip -q qt.zip
RUN rm qt.zip && cd qt-everywhere-src-* && ls && ./configure \
-confirm-license -opensource \
-nomake examples -nomake tests -no-compile-examples \
-no-xcb \
-prefix "/usr/local/Qt"
ENTRYPOINT "/bin/bash"
问题在于,即使您看到前一个命令./configure
显示确实存在ls
文件,也无法在configure
上执行该操作。
它说
/bin/sh: 1: ./configure: not found
答案 0 :(得分:1)
该问题是因为您使用的是Zip版本,它具有Windows的行尾样式,不适用于Linux。
为了验证您是否可以在执行./configure
之前将其添加到Dockerfile中,它将其转换为Linux行尾样式。
注意:解压缩qt.zip时使用
unzip -a
无效,因为我已经对其进行了测试
sed -i 's/\r//g' ./configure && ./configure
它可以工作,但由于与下面所示相同的原因,它也将开始引发其他错误:
+ cd qtbase
+ /qt-everywhere-src-5.11.3/qtbase/configure -top-level -confirm-license -opensource -nomake examples -nomake tests -no-compile-examples -no-xcb -prefix /usr/local/Qt
./configure: 49: exec: /qt-everywhere-src-5.11.3/qtbase/configure: not found
因此,要解决整个问题,您需要下载适用于Linux环境的tar.gz
版本