linux - docker在ubuntu vs linux aarch64上构建

标签 linux docker ubuntu debian arm64

我正在 Linux aarch64 debian 上构建一个 docker 容器。构建失败缺少 python。
但是完全相同的 Dockerfile 在 Ubuntu 最新版本(github 操作)上构建良好。我从主机中遗漏了什么,或者 - 主机如何影响 docker 可以构建的内容?我不明白。它们都是 Linux 机器。

[4/4] Building fresh packages...
warning Error running install script for optional dependency: "/pirkts/node_modules/usb: Command failed.
Exit code: 1
Command: node-gyp-build
Arguments:
Directory: /pirkts/node_modules/usb
Output:
gyp info it worked if it ends with ok
gyp info using node-gyp@7.1.2
gyp info using node@16.14.0 | linux | arm64
gyp ERR! find Python
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if \"python3\" can be used
gyp ERR! find Python - \"python3\" is not in PATH or produced an error
gyp ERR! find Python checking if \"python\" can be used
gyp ERR! find Python - \"python\" is not in PATH or produced an error
gyp ERR! find Python checking if \"python2\" can be used
gyp ERR! find Python - \"python2\" is not in PATH or produced an error
gyp ERR! find Python
gyp ERR! find Python **********************************************************
gyp ERR! find Python You need to install the latest version of Python.
gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
gyp ERR! find Python you can try one of the following options:
gyp ERR! find Python - Use the switch --python=\"/path/to/pythonexecutable\"
gyp ERR! find Python   (accepted by both node-gyp and npm)
gyp ERR! find Python - Set the environment variable PYTHON
gyp ERR! find Python - Set the npm configuration variable python:
gyp ERR! find Python   npm config set python \"/path/to/pythonexecutable\"
gyp ERR! find Python For more information consult the documentation at:
gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
gyp ERR! find Python **********************************************************
gyp ERR! find Python
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Python installation to use
gyp ERR! stack     at PythonFinder.fail (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:302:47)
gyp ERR! stack     at PythonFinder.runChecks (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:136:21)
gyp ERR! stack     at PythonFinder.<anonymous> (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:179:16)
gyp ERR! stack     at PythonFinder.execFileCallback (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:266:16)
gyp ERR! stack     at exithandler (node:child_process:406:5)
gyp ERR! stack     at ChildProcess.errorhandler (node:child_process:418:5)
gyp ERR! stack     at ChildProcess.emit (node:events:520:28)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:289:12)
gyp ERR! stack     at onErrorNT (node:internal/child_process:478:16)
gyp ERR! stack     at processTicksAndRejections (node:internal/process/task_queues:83:21)
gyp ERR! System Linux 5.10.0-11-cloud-arm64
gyp ERR! command \"/usr/local/bin/node\" \"/pirkts/node_modules/.bin/node-gyp\" \"rebuild\"
gyp ERR! cwd /pirkts/node_modules/usb
gyp ERR! node -v v16.14.0
gyp ERR! node-gyp -v v7.1.2
gyp ERR! not ok"
info This module is OPTIONAL, you can safely ignore this error
info This module is OPTIONAL, you can safely ignore this error
warning Error running install script for optional dependency: "/pirkts/node_modules/@ledgerhq/hw-transport-node-hid-noevents/node_modules/node-hid: Command failed.
Exit code: 1
Command: prebuild-install --runtime napi || node-gyp rebuild
Arguments:
Directory: /pirkts/node_modules/@ledgerhq/hw-transport-node-hid-noevents/node_modules/node-hid
Output:
prebuild-install WARN install No prebuilt binaries found (target=3 runtime=napi arch=arm64 libc= platform=linux)
gyp info it worked if it ends with ok
gyp info using node-gyp@7.1.2
gyp info using node@16.14.0 | linux | arm64
gyp ERR! find Python
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if \"python3\" can be used
gyp ERR! find Python - \"python3\" is not in PATH or produced an error
gyp ERR! find Python checking if \"python\" can be used
gyp ERR! find Python - \"python\" is not in PATH or produced an error
gyp ERR! find Python checking if \"python2\" can be used
gyp ERR! find Python - \"python2\" is not in PATH or produced an error
gyp ERR! find Python
gyp ERR! find Python **********************************************************
gyp ERR! find Python You need to install the latest version of Python.
gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
gyp ERR! find Python you can try one of the following options:
gyp ERR! find Python - Use the switch --python=\"/path/to/pythonexecutable\"
gyp ERR! find Python   (accepted by both node-gyp and npm)
gyp ERR! find Python - Set the environment variable PYTHON
gyp ERR! find Python - Set the npm configuration variable python:
gyp ERR! find Python   npm config set python \"/path/to/pythonexecutable\"
gyp ERR! find Python For more information consult the documentation at:
gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
gyp ERR! find Python **********************************************************
gyp ERR! find Python
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Python installation to use
gyp ERR! stack     at PythonFinder.fail (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:302:47)
gyp ERR! stack     at PythonFinder.runChecks (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:136:21)
gyp ERR! stack     at PythonFinder.<anonymous> (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:179:16)
gyp ERR! stack     at PythonFinder.execFileCallback (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:266:16)
gyp ERR! stack     at exithandler (node:child_process:406:5)
gyp ERR! stack     at ChildProcess.errorhandler (node:child_process:418:5)
gyp ERR! stack     at ChildProcess.emit (node:events:520:28)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:289:12)
gyp ERR! stack     at onErrorNT (node:internal/child_process:478:16)
gyp ERR! stack     at processTicksAndRejections (node:internal/process/task_queues:83:21)
gyp ERR! System Linux 5.10.0-11-cloud-arm64
gyp ERR! command \"/usr/local/bin/node\" \"/pirkts/node_modules/.bin/node-gyp\" \"rebuild\"
gyp ERR! cwd /pirkts/node_modules/@ledgerhq/hw-transport-node-hid-noevents/node_modules/node-hid
gyp ERR! node -v v16.14.0
gyp ERR! node-gyp -v v7.1.2
gyp ERR! not ok"
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
error /pirkts/node_modules/utf-8-validate: Command failed.
Exit code: 1
Command: node-gyp-build
Arguments:
Directory: /pirkts/node_modules/utf-8-validate
Output:
gyp info it worked if it ends with ok
gyp info using node-gyp@7.1.2
gyp info using node@16.14.0 | linux | arm64
gyp ERR! find Python
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if "python3" can be used
gyp ERR! find Python - "python3" is not in PATH or produced an error
gyp ERR! find Python checking if "python" can be used
gyp ERR! find Python - "python" is not in PATH or produced an error
gyp ERR! find Python checking if "python2" can be used
gyp ERR! find Python - "python2" is not in PATH or produced an error
gyp ERR! find Python
gyp ERR! find Python **********************************************************
gyp ERR! find Python You need to install the latest version of Python.
gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
gyp ERR! find Python you can try one of the following options:
gyp ERR! find Python - Use the switch --python="/path/to/pythonexecutable"
gyp ERR! find Python   (accepted by both node-gyp and npm)
gyp ERR! find Python - Set the environment variable PYTHON
gyp ERR! find Python - Set the npm configuration variable python:
gyp ERR! find Python   npm config set python "/path/to/pythonexecutable"
gyp ERR! find Python For more information consult the documentation at:
gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
gyp ERR! find Python **********************************************************
gyp ERR! find Python
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Python installation to use
gyp ERR! stack     at PythonFinder.fail (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:302:47)
gyp ERR! stack     at PythonFinder.runChecks (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:136:21)
gyp ERR! stack     at PythonFinder.<anonymous> (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:179:16)
gyp ERR! stack     at PythonFinder.execFileCallback (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:266:16)
gyp ERR! stack     at exithandler (node:child_process:406:5)
gyp ERR! stack     at ChildProcess.errorhandler (node:child_process:418:5)
gyp ERR! stack     at ChildProcess.emit (node:events:520:28)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:289:12)
gyp ERR! stack     at onErrorNT (node:internal/child_process:478:16)
gyp ERR! stack     at processTicksAndRejections (node:internal/process/task_queues:83:21)
gyp ERR! System Linux 5.10.0-11-cloud-arm64
gyp ERR! command "/usr/local/bin/node" "/pirkts/node_modules/.bin/node-gyp" "rebuild"
gyp ERR! cwd /pirkts/node_modules/utf-8-validate
gyp ERR! node -v v16.14.0
gyp ERR! node-gyp -v v7.1.2
gyp ERR! not ok
warning Error running install script for optional dependency: "/pirkts/node_modules/node-hid: Command failed.
Exit code: 1
Command: prebuild-install || node-gyp rebuild
Arguments:
Directory: /pirkts/node_modules/node-hid
Output:
prebuild-install WARN install No prebuilt binaries found (target=16.14.0 runtime=node arch=arm64 libc= platform=linux)
gyp info it worked if it ends with ok
gyp info using node-gyp@7.1.2
gyp info using node@16.14.0 | linux | arm64
gyp ERR! find Python
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if \"python3\" can be used
gyp ERR! find Python - \"python3\" is not in PATH or produced an error
gyp ERR! find Python checking if \"python\" can be used
gyp ERR! find Python - \"python\" is not in PATH or produced an error
gyp ERR! find Python checking if \"python2\" can be used
gyp ERR! find Python - \"python2\" is not in PATH or produced an error
gyp ERR! find Python
gyp ERR! find Python **********************************************************
gyp ERR! find Python You need to install the latest version of Python.
gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
gyp ERR! find Python you can try one of the following options:
gyp ERR! find Python - Use the switch --python=\"/path/to/pythonexecutable\"
gyp ERR! find Python   (accepted by both node-gyp and npm)
gyp ERR! find Python - Set the environment variable PYTHON
gyp ERR! find Python - Set the npm configuration variable python:
gyp ERR! find Python   npm config set python \"/path/to/pythonexecutable\"
gyp ERR! find Python For more information consult the documentation at:
gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
gyp ERR! find Python **********************************************************
gyp ERR! find Python
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Python installation to use
gyp ERR! stack     at PythonFinder.fail (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:302:47)
gyp ERR! stack     at PythonFinder.runChecks (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:136:21)
gyp ERR! stack     at PythonFinder.<anonymous> (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:179:16)
gyp ERR! stack     at PythonFinder.execFileCallback (/pirkts/node_modules/@npmcli/run-script/node_modules/node-gyp/lib/find-python.js:266:16)
gyp ERR! stack     at exithandler (node:child_process:406:5)
gyp ERR! stack     at ChildProcess.errorhandler (node:child_process:418:5)
gyp ERR! stack     at ChildProcess.emit (node:events:520:28)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:289:12)
gyp ERR! stack     at onErrorNT (node:internal/child_process:478:16)
gyp ERR! stack     at processTicksAndRejections (node:internal/process/task_queues:83:21)
gyp ERR! System Linux 5.10.0-11-cloud-arm64
gyp ERR! command \"/usr/local/bin/node\" \"/pirkts/node_modules/.bin/node-gyp\" \"rebuild\"
gyp ERR! cwd /pirkts/node_modules/node-hid
gyp ERR! node -v v16.14.0
gyp ERR! node-gyp -v v7.1.2
gyp ERR! not ok"
干杯
编辑1:
Debian主机:
FROM node:16-buster-slim as node
RUN apt-get update -y && apt-get install -y git python make gcc libudev-dev libusb-1.0-0-dev g++ pkg-config

FROM alpine as downloader
ARG SOLC_PREFIX=https://github.com/ethereum/solc-bin/raw/gh-pages/linux-amd64/solc-linux-amd64

ADD ${SOLC_PREFIX}-v0.4.11+commit.68ef5810 ./solc-v0.4.11+commit.68ef5810

FROM node as builder

WORKDIR /pirkts
COPY *.json yarn.lock ./
COPY packages/utils/package.json ./packages/utils/package.json
RUN yarn install --frozen-lockfile
FROM node

WORKDIR /pirkts

COPY --from=builder /pirkts/node_modules ./node_modules
COPY *.json yarn.lock ./
RUN yarn build

CMD ["true"]
ubuntu 最新主机:
FROM node:16-buster-slim as node
RUN apt-get update -y && apt-get install -y git

FROM alpine as downloader
ARG SOLC_PREFIX=https://github.com/ethereum/solc-bin/raw/gh-pages/linux-amd64/solc-linux-amd64

ADD ${SOLC_PREFIX}-v0.4.11+commit.68ef5810 ./solc-v0.4.11+commit.68ef5810

FROM node as builder

WORKDIR /pirkts
COPY *.json yarn.lock ./
COPY packages/utils/package.json ./packages/utils/package.json
RUN yarn install --frozen-lockfile
FROM node

WORKDIR /pirkts

COPY --from=builder /pirkts/node_modules ./node_modules
COPY *.json yarn.lock ./
RUN yarn build

CMD ["true"]
如您所见,apt-get install在 debian 主机上的列表需要比在 ubuntu 主机上大很多。我试图理解为什么...
如果我不提供 python make gcc libudev-dev libusb-1.0-0-dev g++ pkg-config 在 debian 主机上docker-compose 构建失败。

最佳答案

我认为主机 CPU 类型会影响 docker guest 容器可用的预构建。因为 ARM 预构建不存在,所以它尝试构建它们并使用 python(在上面的 Dockerfile 示例中不存在 - 因此它失败了)。

关于linux - docker在ubuntu vs linux aarch64上构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71398312/

相关文章:

linux - 更改 Apache2 服务器目录

linux - Cygwin - 设置 $PATH

c - Linux文件锁定

linux - "Memory is below 1MB, or missing a M/G at the end of the memory specification?"是什么原因

ubuntu - CMake FIND_LIBRARY : link to specified library error

ubuntu - 如何在 Ubuntu 上覆盖文件? mv -f/--force 不起作用

docker - 如何将 dos2unix 添加到基于 Alpine 的 docker 容器中?

Docker远程错误: tls: handshake failure

docker - 无法从 Windows 主机访问 linux 容器内的 Angular Web 服务器

java - 从 Java 调用 Haskell,中间使用 C