【问题标题】:Unable to run node-gdal on Alpine Linux: "__printf_chk: symbol not found"无法在 Alpine Linux 上运行 node-gdal:“__printf_chk:找不到符号”
【发布时间】:2019-02-25 21:48:41
【问题描述】:

我正在尝试使用node-gdalGDAL 的 Node.js 绑定)为我的项目添加 Gitlab CI。由于性能原因,CI 配置基于 Alpine Linux docker 映像,但我无法使其正常工作。 Gitlab CI 作业在运行需要 node-gdal 的 Node.js 脚本时失败,并出现以下错误:

internal/modules/cjs/loader.js:718
  return process.dlopen(module, path.toNamespacedPath(filename));
                 ^

Error: Error relocating /builds/project-0/node_modules/gdal/lib/binding/node-v64-linux-x64/gdal.node: __printf_chk: symbol not found
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:718:18)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (/builds/project-0/node_modules/gdal/lib/gdal.js:12:29)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)

尝试安装glibc for Alpine,但仍然没有成功。

.gitlab-ci.yml

image: node:lts-alpine

stages:
  - test

test:
  stage: test
  before_script:
    - apk add --no-cache bash ca-certificates wget
    - wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
    - wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.29-r0/glibc-2.29-r0.apk
    - apk add glibc-2.29-r0.apk
  script:
    - yarn
    - node index.js

这是repo 重现问题,这是link to failed job

有没有办法在 Alpine 上使用这个库?

【问题讨论】:

标签: node.js gitlab-ci gdal alpine


【解决方案1】:

感谢thisthis 相关问题和解答,我能够使用以下CI 配置(link to passed job) 在Alpine 上构建node-gdal 链接到共享GDAL 库:

.gitlab-ci.yml

image: node:lts-alpine

stages:
  - test

test:
  stage: test
  before_script:
    - apk add --no-cache bash make gcc g++ python linux-headers udev --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing --repository http://dl-cdn.alpinelinux.org/alpine/edge/main gdal gdal-dev
  script:
    - npm install gdal --build-from-source --shared_gdal
    - node index.js

【讨论】:

    猜你喜欢
    • 2020-02-12
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2018-04-30
    相关资源
    最近更新 更多