2020-09-17

gem installでnokogiriとrmagickが失敗する場合

なぜ失敗するかというと、nokogiriとrmagickはシステムに特定のソフトウェアやライブラリが入っていることに依存しているからだ。依存しているソフトウェアやライブラリをPATHの通った場所に用意してやらなければビルドができない。

nokogiriで問題になるのは主にlibxml2だ。nokogiriは独自のパッチをあてたlibxml2をビルドして使う。libxml2のビルドに必要になるソフトウェアとライブラリがある。

具体的な方法は公式ドキュメントに情報がある。

Installing Nokogiri - Nokogiri

特に入っていない可能性が高いのはzlibとliblzmaだ。Debian系ならば以下のようにパッケージをインストールする必要がある。


apt install build-essential patch ruby-dev zlib1g-dev liblzma-dev

rmagicはImageMagickのRuby bindingだが、システムにImageMagickがインストールされていなければならない。またインスールされているヘッダーファイルやオブジェクトファイルを発見するためにpkg-configも必要だ。

GitHub - rmagick/rmagick: Ruby bindings for ImageMagick

Debian系では以下のように依存パッケージをインストールする


apt install build-essential pkg-config libmagicwand-dev

4 comments:

Anonymous said...

twitterの方で依存地獄とお嘆きのようですが、コンパイルのためにincludeファイルを仕入れる必要があるとか精々その程度で、本物の地獄ではないのかと。Dependency Hell は、ひとつのライブラリのバージョンなどの不整合が依存関係にあるライブラリに次々と波及していくような状態を表した俗語のようです。まあ、これをソースからのビルドで解決しようなどと(お馬鹿なことを)すると configure を通した瞬間「あれがない」とか「これは古い」とか言い出して、それらすべてを修正しなければならなくなります(=Dependency Hellでの Death March)。特に悲惨なのが、これをクロスでやらなければならない場合で、クロス・コンパイルをあまり意識しないで作られた configure も多く(クロスの実行コードをホストでテスト実行しようとしたり、最後の最後でクロスは拒否するとか言って来たりする)、これらの修正から行わないとならない場合もあります(=本当に地獄)。

Công ty CP dịch thuật miền trung - MIDtrans said...

Dịch thuật Việt là chuyên trang về các giải pháp biên dịch (công chứng và chuyên ngành), cung cấp nhân lực phiên dịch dự án ngắn và trung hạn
Ra đời từ 2016, hoạt động trong lĩnh vực dịch thuật và chuyển đổi ngôn ngữ và để đáp ứng nhu cầu tại thị trường Việt Nam cho các tổ chức phi chính phủ, các tập đoàn đa Quốc Gia,và đặc biệt chuyên dịch thuật các dự án hỗ trợ phát triển cho chính phủ Việt Nam Chúng tôi có kinh nghiệm triển khai hỗ trợ dịch thuật phiên dịch các dự án đa ngành như kinh tế, kỹ thuật, tài chính ngân hàng, quản trị kinh doanh…. với trên 50 ngôn ngữ phổ thông khác nhau

Jatin Sethi said...

yespornplease
yespornplease
yespornplease

Robin Adam said...

Very informative blog! Thanks for sharing the software installation about If nokogiri and rmagick fail with gem install.
Custom Vape Cartridge Packaging