Установка 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 - это новая установка (по состоянию на вчерашний день), если это имеет значение.

Sharp должен включить двоичный файл libvips в Ubuntu 14.04+, см. Sharp.pixelplumbing.com/en/stable/install ... все, что вам нужно, это npm install sharp. Я бы удалил Ubuntu libvips и снова попробовал установить Sharp из npm.

jcupitt 27.10.2018 20:43

Спасибо всем. В конце концов я решил просто обновить свою ОС, которая все исправила. Я не могу проверить, что бы сработало, чтобы исправить это без обновления, но я пришел к выводу, что используются старые библиотеки, которые не поддерживаются.

Rachel 31.10.2018 19:33
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
12
2
7 061
3

Ответы 3

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

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

Привет, я сопровождаю libvips. vips-cpp.pc запрашивает gobject: github.com/jcupitt/libvips/blob/master/vips-cpp.pc.in#L9, поэтому я думаю, что все в порядке.

jcupitt 29.10.2018 08:41

OP работает под управлением старой версии Ubuntu; возможно у него есть версия libvips от до того, как был добавлен gobject-2.0?

nemequ 29.10.2018 15:09

Да, правда, OP не собирался из исходников, они используют дистрибутив libvips. Он будет древним. Я также займусь докером с более новым узлом.

jcupitt 29.10.2018 15:30

У меня была такая же проблема в ubuntu 18.04, node 12.x, но я смог исправить ее, собрав libvips из исходного кода.

Himanshu Chandra 22.05.2021 12:35

У вас есть две проблемы (я думаю): во-первых, 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

У меня была такая же проблема. А для меня я решил, скомпилировав libvips с официального гитхаба. Вот инструкция: https://libvips.github.io/libvips/install.html

 git clone git://github.com/jcupitt/libvips.git
 cd libvips/
 # install dependencies if you have errors during autogen.sh 
 #sudo apt install gtk-doc-tools
 #sudo apt install gobject-introspection
 ./autogen.sh
 make
 sudo make install

После решения проблемы glib-object.h вы можете столкнуться с другой ошибкой: libvips-cpp.so.42: невозможно открыть файл общих объектов: нет такого файла или каталога

Это можно решить, выполнив одну команду:

sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/usrlocal.conf'

Другие вопросы по теме