Установка Sharp /usr/include/vips/vips8:35:25: фатальная ошибка: glib-object.h

Я пытаюсь установить Sharp на Ubuntu 16.04 LTS.

У меня изначально не было вайпа, поэтому я установил

    sudo apt-get install libvips-dev

Это исправило первую ошибку, но теперь я получаю другую ошибку, на которой застрял:

    In file included from ../src/common.cc:25:0: 
    /usr/include/vips/vips8:35:25: fatal error: glib-object.h: No such file or directory
    compilation terminated.
    sharp.target.mk:115: recipe for target 'Release/obj.target/sharp/src/common.o' failed
    make: *** [Release/obj.target/sharp/src/common.o] Error 1
    make: Leaving directory '/home/rachel/node_modules/sharp/build'
    gyp ERR! build error
    gyp ERR! stack Error: `make` failed with exit code: 2
    gyp ERR! stack   at ChildProcess.onExit (/usr/share/node-gyp/lib/build.js:269:23)
    gyp ERR! stack     at emitTwo (events.js:87:13)
    gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
    gyp ERR! System Linux 4.15.0-36-generic
    gyp ERR! command "/usr/bin/nodejs" "/usr/bin/node-gyp" "rebuild"
    gyp ERR! cwd /home/rachel/node_modules/sharp
    gyp ERR! node -v v4.2.6
    gyp ERR! node-gyp -v v3.0.3
    gyp ERR! not ok

Итак, я выяснил, к какому пакету относится glib-object.h, и попытался установить его, но он уже был установлен. На самом деле файл существует.

    /usr/include/glib-2.0/glib-object.h

После долгих просмотров я нашел аналогичный вопрос, где они спрашивали, было ли расположение заголовка в pkg-config --cflags vips-cpp. Для спрашивающего этого не было, и это привело к исправлению, но для меня это так (второй снизу).

    > pkg-config --cflags vips-cpp
    -pthread -fopenmp -DMAGICKCORE_HDRI_ENABLE=0
    -DMAGICKCORE_QUANTUM_DEPTH=16
    -fopenmp -DMAGICKCORE_HDRI_ENABLE=0
    -DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/include/libgsf-1
    -I/usr/include/libxml2
    -I/usr/include/x86_64-linux-gnu//ImageMagick-6
    -I/usr/include/ImageMagick-6
    -I/usr/include/x86_64-linux-gnu//ImageMagick-6
    -I/usr/include/ImageMagick-6
    -I/usr/include/orc-0.4
    -I/usr/include/OpenEXR
    -I/usr/include/openslide
    -I/usr/lib/x86_64-linux-gnu/hdf5/serial/include
    -I/usr/include/pango-1.0
    -I/usr/include/harfbuzz
    -I/usr/include/pango-1.0
    -I/usr/include/freetype2
    -I/usr/include/x86_64-linux-gnu
    -I/usr/include/libpng12
    -I/usr/include/libexif
    -I/usr/include/glib-2.0
    -I/usr/lib/x86_64-linux-gnu/glib-2.0/include

Я не нашел никаких решений после проверки того, что файл существует и его папка включена в приведенный выше вывод. Я совершенно не знаю, что делать дальше, поэтому любой совет будет принят с благодарностью.

npm — это новая установка (со вчерашнего дня), если это имеет значение.


person Rachel    schedule 27.10.2018    source источник
comment
Sharp должна включить бинарный файл libvips в Ubuntu 14.04+, см. sharp.pixelplumbing.com/en/stable /install ... все, что вам нужно, это npm install sharp. Я бы удалил Ubuntu libvips и попытался снова установить Sharp из npm.   -  person jcupitt    schedule 27.10.2018
comment
Спасибо всем. В итоге я решил просто обновить свою ОС, которая все исправила. Я не могу проверить, что сработало бы, чтобы исправить это без обновления, но я пришел к выводу, что он использует старые библиотеки, которые не поддерживаются.   -  person Rachel    schedule 31.10.2018


Ответы (2)


У вас есть две проблемы (я думаю): во-первых, nodejs, который поставляется с Ubuntu 16.04, — это 4.x, и он перестал поддерживаться еще в апреле 2018 года — текущий поддерживаемый nodejs — это 8.x. Во-вторых, libvips, поставляемый с Ubuntu 16.04, также является устаревшим и плохо работает с текущим sharp.

К счастью, исправление простое: с nodejs 6, 8 и 10 sharp автоматически загрузит для вас двоичный файл libvips.

Я использовал это руководство для установки nodejs 8:

https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-16-04#how-to-install-using-a-ppa< /а>

Тогда просто:

npm install sharp

И все работало. Вот как Dockerfile, для справки:

https://github.com/jcupitt/docker-builds/blob/master/sharp-ubuntu16.04/Dockerfile

person jcupitt    schedule 29.10.2018

Похоже, что vips-cpp ищет GObject, а не GLib, но файл pkg-config запрашивает только GLib. GObject основан на GLib, и они тесно связаны, но это не один и тот же проект.

Вы должны каким-то образом добавить gobject-2.0 к зависимостям pkg-config. Вы можете сделать это в системе сборки Sharp (куда бы он ни тянул в пакете vips-cpp, пусть он также зависит от gobject-2.0). Вы также можете исправить файл vips-cpp pkg-config, чтобы добавить gobject-2.0 в качестве зависимости; где находится файл, зависит от вашей архитектуры, но это $LIBDIR/pkg-config/vips-cpp.pc.

person nemequ    schedule 28.10.2018