タイトルにlinuxとか書いてますがgentooを前提に書かれています
応用すれば大抵のlinuxでできると思いますけどね
前置き
gentooだと
# emerge -va "app-text/acroread"
でpdfが見れるacroreadを導入できますがfirefoxのpluginとしては入ってくれません
なぜかflashの方の
# emerge -va "www-plugins/adobe-flash"
だと勝手にfirefoxのpluginとして入ってくれます
やり方
前提にacroreadをパッケージ管理で入れといてください
gentooだと
# emerge -va "app-text/acroread"
です
まずはacroreadのインストール先を知る必要があります
別に知らなくてもpathさえ通ってればいいのでとりあえず確認します
% which acroread /opt/bin/acroread
これでacroreadへのPATHが通っていることがわかったので次に
nppdf.soというファイルの場所を知る必要があります
locateが使えるなら
% locate nppdf.so /opt/Adobe/Reader9/Browser/intellinux/nppdf.so
これで一瞬ですがfindなどを使っていては時間がかかりますし
先ほどの/opt/bin/acroreadがシンボリックリンクならその結果を利用してインストール先を探りましょう
% ls -l /opt/bin/acroread lrwxrwxrwx 1 root root 31 Jun 6 00:05 /opt/bin/acroread -> /opt/Adobe/Reader9/bin/acroread
もしここでシンボリックリンクじゃないとわかった場合はfindでnppdf.soを探してください
どうやらインストール先は
/opt/Adobe/Reader9
だったようなのでそこからの相対パスで考えて
% cd /opt/Adobe/Reader9 % cd Browser/intellinux
ここにnppdf.soがあります
そういうわけでntpdf.soへの絶対パス
/opt/Adobe/Reader9/Browser/intellinux/nppdf.so
がわかったので後はfirefoxのpluginsのディレクトリにシンボリックリンクを貼るだけです
大抵はfirefoxの実体がある場所だと思うので
% which firefox /usr/bin/firefox % ls -l /usr/bin/firefox lrwxrwxrwx 1 root root 24 Jul 21 10:15 /usr/bin/firefox -> /usr/lib/firefox/firefox
というわけで
/usr/lib/firefox
がそうみたいなので
% ln -s /opt/Adobe/Reader9/Browser/intellinux/nppdf.so /usr/lib/firefox/plugins
こんな感じに貼ります
試してませんが恐らく
% ln -s /opt/Adobe/Reader9/Browser/intellinux/nppdf.so ~/.mozilla/plugins
このようにユーザーごとのmozillaのディレクトリでもできると思います
プラグインを導入できれば後はfirefoxを再起動させて
アドレスバーに
about:plugins
を打ち込んでAdobe Readerがあることを確認した後
好きなpdfをブラウザで開いて実際にできるか確かめれば終わりです
方法を導いた方法
前置きに書いた違いはわかりませんがとりあえず
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/773pdfinff.html
ここを見るに
# ./install_browser_plugin
というファイルを探して実行すればいいようですが
% locate install_browser_plugin
をしてもファイルが見当たりません*1
どうやら本来はacroreadのインストール先近くにあるように読み取れるので
適当に探してみると
/opt/Adobe/Reader9/Browser
というそれらしきディレクトリが見つかりましたがinstall_browser_pluginは見つかりません
しかしこのディレクトリにHowToという名前のディレクトリがあったので中を開いていくと
/opt/Adobe/Reader9/Browser/HowTo/ENU/Browser_Plugin_HowTo.txt
なんだか説明してくれてそうなテキストファイルが見つかったので中を見てみると
それっぽいのがありました
折角なんで全部訳してここに置きました
https://gist.github.com/3162843
要点だけまとめるとどうやら./install_browser_pluginというスクリプトを使うみたいですがないので
acroreadをいれたebuildを見ることにします
% view /usr/portage/app-text/acroread/acroread-9.5.1.ebuild
すると171行目あたりで
# remove cruft rm "${S}"/Adobe/Reader9/bin/UNINSTALL rm "${S}"/Adobe/Reader9/Browser/install_browser_plugin rm "${S}"/Adobe/Reader9/Resource/Support/vnd.*.desktop
なんだか削除してました
恐らくこれが原因ですね
とにかくacroreadを入れるのに使ったSRC_URIにはこのスクリプトがありそうなので
% cp /usr/portage/distfiles/AdbeRdr9.5.1-1_i486linux_enu.tar.bz2 ~/tmp
こんな感じで好きなディレクトリにコピーしておきます
そして解凍します
% cd ~/tmp % tar xvf AdbeRdr9.5.1-1_i486linux_enu.tar.bz2 AdobeReader/ AdobeReader/COMMON.TAR AdobeReader/ILINXR.TAR AdobeReader/INSTALL AdobeReader/ReadMe.htm
どうやらまた解凍しないといけなさそうです
どっちにあるかわからないのでそれぞれの圧縮ファイルに何が入っているかリストを表示させて
grepで目的のファイルがあるか絞り込みます
% cd ./AdobeReader % tar tvf COMMON.TAR|grep install_browser_plugin % tar tvf ILINXR.TAR|grep install_browser_plugin -rwxr-xr-x root/root 15710 2012-03-28 19:48 Adobe/Reader9/Browser/install_browser_plugin
ILINXR.TARにあるみたいなので解凍します
% tar xvf ILINXR.TAR (出力は省略)
どんな処理をしているのか中身を見ることにしますが
いきなりソースを読むなんていう荒業はしたくないので#がある行をgrepで引きぬいて
コメントだけを読んでいくことにしますが後でソースも見たいので
- nオプションもつけて行番号が表示されるようにしてます
% grep -n "#" Adobe/Reader9/Browser/install_browser_plugin
すると42行目から46行目にそれっぽいことがコメントで書いてありますので必要な箇所だけ翻訳してまとめますと
ブラウザのインストールパス(ユーザーによって指定された)内の 'plugins'フォルダを見つけ出してこの場所にプラグインをコピーする もしプラグインが既に存在していたらユーザーに上書きするかどうか それに応じて続行するかどうかを促します
ようはこの後にプラグインを移動させたり上書きさせたりする処理をしてるみたいなので
% view Adobe/Reader9/Browser/install_browser_plugin
さっそく46行目から下を見ていきます
こんな文章がありました
すると83行目あたりでそれっぽいのがありました
BROWSER_PLUGIN_FILE="${BROWSER_PLUGIN_DIR}/nppdf.so"
このBROWSER_PLUGIN_DIRがどのように定義されているのか知りたいので検索すると
75行目あたりからのソースで
その中の
BROWSER_PLUGIN_DIR="${BROWSER_DIR}/plugins"
これでpluginsの場所を指定しているみたいなのでBROWSER_DIRの変数はどのように定義されているのかソース内を検索すると
54行目あたりで定義されているようです
if [ $# -eq 0 ] (中略) else BROWSER_DIR=$1 fi
このように書いてあるのできっとこの処理が書かれている関数を呼び出している時に
ブラウザのディレクトリが指定されているみたいですね
もし関数を呼び出している時に指定されていなければ手動で指定しなければいけないようです
この処理はInstallBrowserGlobalという関数の中にあるので呼び出しているところを検索して探します
するとAutoInstallSystemPathという関数内で呼び出しているようで
その関数がInstallBrowserGlobalを呼び出す時に指定している引数の変数は
このAutoinstallSystemPathの引数が入っているみたいなので
AutoInstallSystemPathの呼び出し元をまた検索します
するとAutoInstallの関数内で引数に${BROWSER_LIB_DIR}が使われているようです
この変数は実力が足らなくてどのように定義されているかわかりませんが
恐らく私の環境だと/usr/lib/firefoxになっていると思います
仮にそうだとしたら
BROWSER_PLUGIN_DI="/usr/lib/firefox/plugins"
になってそうです
そういう前提で話を進めていくと
247行目辺りからプラグインをコピーしている処理をしているようです
cp "$NPPDF_FILE" "$BROWSER_PLUGIN_FILE"
こうなっているのでNPPDF_FILEの変数を調べていくと
539行目あたりからで定義しているようです
OSはHP-UXではないので
NPPDF_FILE="${ACROREAD_DIR}/Adobe/Reader9/Browser/${CONFIG_FOLDER}/nppdf.so"
になっているみたいです
CONFIG_FOLDERの値はソースで検索すると
520行目あたりでintellinuxが入ってそうです
ここまでわかればもうソースなんて見ないでも問題ないですね
同じようなディレクトリ構造のファイルはacroreadのインストール先にあるので
# cp /opt/Adobe/Reader9/Browser/intellinux/nppdf.so /usr/lib/firefox/plugins/
でいいのですがlsでディレクトリを見てみると
% ls -la /usr/lib/firefox/plugins total 0 lrwxrwxrwx 1 root root 54 Jun 19 00:31 libflashplayer.so -> /opt/Adobe/flash-player/flash-plugin/libflashplayer.so
flashの場合はシンボリックリンクを張っているみたいなので
そうしましょう
なので
% ln -s /opt/Adobe/Reader9/Browser/intellinux/nppdf.so /usr/lib/firefox/plugins
このようになります
そしてブラウザを再起動します
次にきちんとロードができているか確認するためにアドレスバーに
about:plugins
を打って開きます
Adobe Readerの文字があれば恐らくロードができているので後は適当なpdfが開けることを確認すれば終了です
googleで
filetype:pdf
と検索するのが手っ取り早く適当なpdfファイルを用意できます
後書き
正直なところこんなに冗長的な文章を書く必要なかった気がする
実際、書いてる途中でプラグインの実体がどれか薄々気づいていたので
さっさとfirefoxのドキュメントでも読んでいたほうが良かった気がする
*1:locateコマンドはsys-apps/mlocateで入ります