ユゲタです。
Debianとかけまして、
「戦争の戦地」とときます。
そのココロは・・・
コマンド(commandとcommando)がたたけます。
chromiumはパソコンでもサーバーでも大人気
水分前から、不動のKINGだったIEを抜き去り、ブラウザ界の頂点に君臨している、GoogleChromeブラウザですが、
サーバーにおいても、Chromium(または、chromium-browser)という名前で、簡単にインストールができてしまいます。
GUI系ディストリビューションでも、CUI系でも、どちらでも重宝されるブラウザです。
GUIは、パソコンと同じ機能と使い勝手と、Googleアカウントとの連携で、環境が同期出来るために、もはやいらない説明は不要だと思いますが、
CUIでブラウザって、何に使うの?っていう人、「RPA」ですよ。
自動でサイトをクローリングして、情報をどんどん取得してしまう、プログラミングで、ウェブサーフィンを行う時代なんですよ、今は・・・エンジニア限定ですけど・・・
問題発生!!!
そんな便利なChromiumブラウザですが、nodejsのライブラリである、puppeteerと組み合わせることによって、javascript言語で簡単にスクレイピング作業ができるようになります。
でも、開発環境を手元のノートPCにDockerで作っておいたのに、「本番環境のサーバーにアップすると、何故かchromiumが動かないという事象が発生して、大慌ての巻」です。
そこでは下記のようなエラーメッセージが出ていました。
Error: Failed to launch the browser process!
/usr/lib/chromium/chromium: relocation error: /usr/lib/chromium/chromium: symbol jpeg_skip_scanlines version LIBJPEG_6.2 not defined in file libjpeg.so.62 with link time reference
TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md
at onClose (/var/www/html/getmedicine/node_modules/puppeteer/lib/Launcher.js:750:14)
at Interface.helper.addEventListener (/var/www/html/getmedicine/node_modules/puppeteer/lib/Launcher.js:739:50)
at emitNone (events.js:91:20)
at Interface.emit (events.js:188:7)
at Interface.close (readline.js:328:8)
at Socket.onend (readline.js:109:10)
at emitNone (events.js:91:20)
at Socket.emit (events.js:188:7)
at endReadableNT (_stream_readable.js:975:12)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
自分の作っているプログラムファイル名がどこにも出ていないので、なんとなくシステム環境による問題であることはひと目でわかります。
そして、「LIBJPEG_6.2 not defined」という文字がそもそもの原因であることも理解しました。
直訳すると、「LIBJPEG_6.2は定義されていません」です。
これ調べても、日本語解説が見つからなかったので、多方面でぐぐってみると、どうやら、libjpegというモジュールをインストールすればいいという事がわかりました。
ありがとう!stackoverflow!!!
解決への道
今回の本番サーバーは、Debian8(jessie)だったので、Debianの公式サイトに、このライブラリは置かれていました。
https://packages.debian.org/ja/buster/libjpeg62-turbo
さらに、CPUがatomだったので、「i386」バージョンをダウンロードしてみます。
https://packages.debian.org/ja/buster/i386/libjpeg62-turbo/download
このページのどのリージョンでもいいので、サーバーにダウンロードします。
$ wget http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.2-2+b1_i386.deb
$ dpkg -i libjpeg62-turbo_1.5.2-2+b1_i386.deb
# 注意)管理権限で行ってね。
そして、上記のコマンドでインストール完了です。
無事に、クローリング作業ができるようになりました。
ありがとうGoogle!、ありがとうDebian!
ああ、そうだ、余談ですが、サーバーのcpu情報が不明な時に、下記のコマンドで調べるといいですよ。
# CPU情報の表示
$ cat /proc/cpuinfo
# ビット数の取得
$ getconf LONG_BIT
0 件のコメント:
コメントを投稿