Невозможно запустить node-gdal в Alpine Linux: "__printf_chk: символ не найден"
Я пытаюсь добавить Gitlab CI для моего проекта, используя node-gdal (привязки Node.js для GDAL). Конфигурация CI основана на образе докера Alpine Linux из-за соображений производительности, но я не могу заставить его работать. Сбой задания Gitlab CI при запуске сценария Node.js, который требует node-gdal
со следующей ошибкой:
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 для 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
Это репозиторий, воспроизводящий проблему, и это ссылка на неудачную работу.
Есть ли решение использовать библиотеку на Alpine?
1 ответ
Благодаря этим и этим связанным вопросам и ответам, я смог построить node-gdal
связывание с общей библиотекой GDAL на Alpine со следующей конфигурацией CI ( ссылка на пройденное задание):
.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