Ошибка при установке rmagick в Mac OS X (проблема с MagickCore.pc)

Думал что только один из серваков на CentOS глючит, но после недавних доработок приложения одним из программистов я не смог выполнить привычный bundle в директории с проектом, на что получил ошибку о необходимости ручной установки гема rmagick.

Попытка выполнить gem install rmagick тоже не привела к успеху, ругалось то на одно, то на другое. И тут меня осенило! Может вообще ImageMagick не установлен с нужными библиотеками? Сам я его не ставил это точно, в каких-то смежных проектах не использовался, вероятнее всего не хватает заголовочных файлов.

Первое что делаю, это ставлю сам ImageMagick:

brew install imagemagick --disable-openmp --build-from-source

После успешной компиляции пробуем установить гем:

gem install rmagick

Но не всё так просто, как кажется. Одна ошибка сменяется на другую:

gruz0:rails-otp gruz0$ gem install rmagick -v '2.13.4'
Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
	ERROR: Failed to build gem native extension.

    /Users/gruz0/.rvm/rubies/ruby-2.1.1/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for /usr/bin/clang... yes
checking for Magick-config... yes
checking for ImageMagick version >= 6.4.9... yes
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found

И ещё с пару десятков таких строк, но нас интересует только то, что не может найти файл «MagickCore.pc». Эта проблема довольно часто обсуждается в интернете, поэтому решение найти было не так сложно, как казалось на первый взгляд.

Решение

Нам необходимо найти путь к pkgconfig-директории в только что установленном ImageMagick и, вероятнее всего, он будет таким:

/usr/local/Cellar/imagemagick/ВЕРСИЯ/lib/pkgconfig/

, где вместо «ВЕРСИЯ» будет набор цифр, у каждого свой.

Теперь нам остаётся лишь добавить этот путь до директории к переменной PKG_CONFIG_PATH:

export PKG_CONFIG_PATH="/usr/local/Cellar/imagemagick/ВЕРСИЯ/lib/pkgconfig/:$PKG_CONFIG_PATH"

, не забудьте заменить «ВЕРСИЯ» в этой строке на версию используемой библиотеки ImageMagick, иначе ничего не получится.

После этого устанавливаем гем rmagick и радуемся:

gruz0:rails-otp gruz0$ gem install rmagick
Building native extensions.  This could take a while...
Please report any bugs. See https://github.com/gemhome/rmagick/compare/RMagick_2-13-2...master and https://github.com/rmagick/rmagick/issues/18
Successfully installed rmagick-2.13.4
1 gem installed

Ошибка при установке Nokogiri и libxml2 в Mac OS Yosemite

В общем, котаны, пишу сюда, чтобы потом не забыть… Эта штука стоила мне 2.5 часа времени!

Когда устанавливаем гем Nokogiri на чистую тачку, то с вероятностью 99.9% будет ошибка. Связана она с тем, что бандлер (да и не только он) не может найти заголовочные файлы этой библиотеки.

Ставим по порядку:

  • Последний доступный Xcode
  • xcode-select —install или Xcode -> Open Developer Tools -> More Developer Tools (ставим последний)
  • Обновляем mac ports: sudo port selfupdate
  • Ставим либы: sudo port install libxml2 libxslt
  • Ставим гем:
    gem install nokogiri -- --use-system-libraries

ВСЁ. Будьте счастливы и не болейте.

Особенность использования переменной $DEBUG

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

Суть ошибки заключалась в следующих строках:


Exception `NameError' at /Library/Ruby/Gems/2.0.0/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:518 - uninitialized constant EM_CONNECTION_CLASS
Exception `NameError' at /Library/Ruby/Gems/2.0.0/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:518 - uninitialized constant AuthenticationServer::EM_CONNECTION_CLASS

У меня ничего сложного в коде нет: обычный EventMachine, ROTP и ещё пару необходимых гемов, которые успешно работали около двух недель безо всяких проблем. Но именно сегодня утром всё обвалилось непонятно по какой причине.
Читать далее