pc now!

進捗だめです><

RedHat系でChromiumとFlashのインストール

Chromium+Flash インストール

研究室Linuxだけどニコニコ動画見れないよ!艦これ遠征出せないよ!
そんな方々もいるのではないでしょうか。
インストールできない…ChromiumFlashが読み込めない…などなど苦戦しました><
RedHat系でChromium BrowserとFlash Playerの動作できたのでまとめてみました。

確認した環境は下記の通り。


使用したパッケージは下記の通り。

Chromium本体のインストール

ソースコードからインストールするとなると数時間要するらしい…
ので、今回はコンパイル済みのrpmパッケージを用います。
ncsu.edu(ノースカロライナ州立大学?)にそれなりに新しいパッケージを発見。
urlはこちら↓
http://install.linux.ncsu.edu/pub/yum/itecs/public/chromium/rhel7/x86_64/
今のところ最新版は下記の様。これをダウンロードします。
端末からならwgetコマンドなどで。

chromium-43.0.2357.81-2.el7.centos.x86_64.rpm 02-Jun-2015 15:16

root権限でダウンロードしたパッケージをインストール。
が、私の環境ではlibXss.so.1ライブラリがないと怒られました。

[user@localhost ~]$ su
[root@localhost user]# rpm -ivh chromium-43.0.2357.81-2.el7.centos.x86_64.rpm
  警告: chromium-39.0.2171.99-1.el7.centos.x86_64.rpm: ヘッダー V4 DSA/SHA1 Signature、鍵 ID ******: NOKEY
  エラー: 依存性の欠如:
  libXss.so.1()(64bit) は chromium-39.0.2171.99-1.el7.centos.x86_64 に必要とされています。

とりあえずyumリポジトリ内で必要なパッケージを検索。運よくありました。
※Fedora22ではパッケージ管理がyumからdnfに変更されましたが、
扱い方は変わっていませんのでyumのところをdnfに置き換えて実行。
(例:dnf provides */libXss.so.1)

[root@localhost user]# yum provides */libXss.so.1
  libXScrnSaver-1.2.2-6.1.el7.i686 : X.Org X11 libXss runtime library
  リポジトリー        : sl
  一致          :
  ファイル名    : /usr/lib/libXss.so.1
  libXScrnSaver-1.2.2-6.1.el7.x86_64 : X.Org X11 libXss runtime library
  リポジトリー        : sl
  一致          :
  ファイル名    : /usr/lib64/libXss.so.1

yumの標準リポジトリ内に必要パッケージが見つかったyum(dnf)でインストール。
※もしリポジトリ内になかった場合、epel等のリポジトリを追加して検索するか、
rpmパッケージを個別に捜してくることになるかも…
再度Chromiumをインストールします。

[root@localhost user]# yum install libXScrnSaver
[root@localhost user]# rpm -ivh chromium-39.0.2171.99-1.el7.centos.x86_64.rpm

ここまででChromiumが起動できます。

Flash Playerのインストール

次に本題。Flashプラグインを導入します。
Chromium系のプラグインにはNPAPIとPPAPIがありますが、
NPAPIがサポートから除外されPPAPIに移行する流れのようです。
2015年9月までNPAPIは無効化されているだけのようで、
chrome://flags/#enable-npapi
にアクセスすることで使えるらしいのですが既に項目が見つかりません…
NPAPIじゃなければいけないわけじゃないので今回はPPAPIを導入したいと思います。
が!
Adobe公式ではPPAPIはLinux以外でしかサポートしていない…
そこでPepper Flashを用います。
おそらくGoogleChrome向けに用意したものと思いますが、
検索してみたがソースファイル等も見つからず詳細不明…
PostInstallerFのFedora向けにPepper Flashがあったため、こちらをダウンロード。
urlはこちら↓
http://sourceforge.net/projects/postinstaller/files/fedora/releases/22/x86_64/chromium-pepper-flash-17.0.0.134-1.fc22.x86_64.rpm/download
最新版は以下の様。Chromium 45もリリースしているし既に更新止ってる気配がっ…(2015/06)

chromium-pepper-flash-17.0.0.134-1.fc22.x86_64.rpm 2015-03-13

Flashrpmパッケージをインストール

[user@localhost ~]$ su
[root@localhost user]# rpm -ivh chromium-pepper-flash-17.0.0.134-1.fc22.x86_64.rpm

恐らくこの状態でChromiumを起動してもFlashを認識できていないと思います。
Flashが読み込めているかのチェックはこちらなどを参考に。
原因はChromiumが起動時に参照するlibpepflashplayer.soのディレクトリが一致していないため!
今回使用したChromiumパッケージのデフォルト配置先をrpm -qsコマンドで確認。

[root@localhost user]# rpm -qs chromium-39.0.2171.99-1.el7.centos
通常  /opt/chromium
通常  /opt/chromium/chrome
通常  /opt/chromium/chrome-sandbox
通常  /opt/chromium/chrome-wrapper
...

この/opt/chromium/chrome-wrapperFlashの参照先が書かれている。
chrome-wrapperのほぼ最終行付近の記述を見てみる。

[root@localhost user]# cat /opt/chromium/chrome-wrapper
...
if [ -f /opt/chromium/PepperFlash/libpepflashplayer.so ]; then
exec $CMD_PREFIX "$HERE/chrome" --ppapi-flash-path=/opt/chromium/PepperFlash/libpepflashplayer.so "$@"
else
exec $CMD_PREFIX "$HERE/chrome" "$@"
fi

ここで参照先が/opt/chromium/PepperFlash/libpepflashplayer.soとなっている。
次にPepper Flashの配置先を見てみる。

[root@localhost user]# rpm -qs chromium-pepper-flash-17.0.0.134-1.fc22
通常  /usr/lib64/chromium
通常  /usr/lib64/chromium/PepperFlash
通常  /usr/lib64/chromium/PepperFlash/libpepperflashplayer.so
通常  /usr/lib64/chromium/PepperFlash/manifest.json
通常  /usr/share/lisenses/chromium-pepper-flash/eula_text.html

Flash/usr/lib64/chromium/PepperFlash/libpepperflashplayer.so
に配置されているので参照先が異なり、認識できてないですね。
FlashChromiumに認識させるために起動オプションを変更します。
テキストエディタ/opt/chromium/chrome-wrapperを開き、最終行を表示します。
デフォルトで
/opt/chromium/PepperFlash/libpepflashplayer.so
となっている部分を
/usr/lib64/chromium/PepperFlash/libpepflashplayer.so
に置き換えます。
if文の条件式中とppapi-flash-pathの2箇所があります。

…
if [ -f /opt/chromium/PepperFlash/libpepflashplayer.so ]; then
exec $CMD_PREFIX "$HERE/chrome" --ppapi-flash-path=/opt/chromium/PepperFlash/libpepflashplayer.so "$@"
else
exec $CMD_PREFIX "$HERE/chrome" "$@"
fi

…
if [ -f /usr/lib64/chromium/PepperFlash/libpepflashplayer.so ]; then
exec $CMD_PREFIX "$HERE/chrome" --ppapi-flash-path=/usr/lib64/chromium/PepperFlash/libpepflashplayer.so "$@"
else
exec $CMD_PREFIX "$HERE/chrome" "$@"
fi

これでFlash Playerも動作すると思われます。
先ほども掲載しましたが、動作確認はこちら↓
https://helpx.adobe.com/jp/flash-player/kb/235703.html
インストールしなくてもYouTubeが見れるぞ!という話も聞きますが、
これはYoutubeではHTML5に対応していて、Flash Playerを使わずとも再生出来るためです。
YouTubeのデフォルト設定はこちらから↓
https://www.youtube.com/html5

余談ですが、ChromiumFlashのディレクトリが/opt/usr/lib64に分かれて気持ち悪い…
rpmコマンドでインストールする際、--prefixオプションで変更しようとしたが、
再配置不可パッケージの様…

[root@localhost user]# rpm -ivh --prefix=/usr/lib64 chromium-39.0.2171.99-1.el7.centos.x86_64.rpm
エラー: パッケージchromiumは再配置できません。

--relocate--badrelocを用いて強制的に再配置することでうまく行った。

[root@localhost user]# rpm -ivh --relocate /opt=/usr/lib64 --badloc chromium-39.0.2171.99-1.el7.centos.x86_64.rpm

しかし、この場合でも配置されるchrome-wrapperファイルには、
上記と同じlibpepflashplayer.soの参照先が記述されていますので書き換えの必要があります。

参考:再配置不可rpmパッケージのインストール先の変更
RPMパッケージ管理 - ソフトウェアエンジニアリング - Torutk

rootアカウントでの起動対応

おまけですが、rootアカウントで起動できない場合の対処法です。
上記同様、テキストエディタ/opt/chromium/chrome-wrapperを開き、最終行を表示します。

exec $CMD_PREFIX "$HERE/chrome" "$@"

--user-data-dirを付加して

exec $CMD_PREFIX "$HERE/chrome" "$@" --user-data-dir

とします。

これにてroot権限でもChromiumを使えるのではないでしょうか。
充実したLinux Lifeを!

初めての投稿ですので誤字・誤情報・新情報などありましたら叱咤激励していただけると嬉しいです。