2018年1月20日土曜日

華麗なるLinuxの世界17 〜罰金バッキンガムよ!〜

華麗なるLinuxの世界17 〜罰金バッキンガムよ!〜

謎のサブタイトルの由来はアニメ「ゆるゆり」
生徒会長の名台詞、「罰金バッキンガムよ!」に由来する
なぜいきなりこんなアニメが?というと
今回取り扱うソフトがchinachuだからだ。
このソフトの名前の由来がアニメ「ゆるゆり」の吉川ちなつ。
だから「ゆるゆり」の名台詞を冠する。 
(私はchinachuの研究の一環でわざわざ「ゆるゆり」を
1期2期通して見たw)

前回記事でおパンツは鑑賞も録画もできるようになったのに 
今更なぜchinachu?というとひとつは番組表だ。
いちいち番組表をどこぞのHPで確認して
録画開始時刻までの残り時間を秒or分で計算するのは面倒だ。
おパンツの開始時刻と終了時刻から録画時間を秒or分で
計算するのも面倒だ。
chinachuなら番組表が見られる事に加えて
右クリックで特定のおパンツを録画指定ができる
放送時間の変更にも対応している。
毎日or毎週同じおパンツを継続録画もできる。

確かに番組表のプログラムは過去にも複数存在した。
しかしそれらの中には既に開発終了したものもあり
古くなったせいで脆弱性を抱えるという説もある。

参考リンク
epgrecは日経Linux2009年8月号掲載用に作られたが
2011年時点で開発が停止していて現在は脆弱性あり云々

参考リンク
「またepgrecを狙った攻撃がありました」
というタイトルのブログ記事
日本のおパンツサーバーが狙われる理由のひとつは
日本のアニメその他を見たいという需要があるかららしい。

参考リンク
勿論これはWOWWOWのタダ見的な需要でもある。
(そもそも無料のテレビを"タダ見"とは矛盾だが
海外の人間目線で考えるなら日本のおパンツは放送されない、
イコール見たければDVD買え、イコール有料という事になる)
またepegrec自体にもアクセス権的に甘い面がある云々。

参考リンク
ここではepegrecのどこが脆弱性なのか
具体的にプログラミング的に多少解説している。 

参考リンク
ここではパソコンを乗っ取られる的な被害の内容について
多少書いてある。

一方chinachuは現在進行形で開発中。
そういう諸々の理由でchinachuを入れる。

さて、公式のインストール方法はこのへん(リンク
まずはmirakurunのインストールから行う事になる。
動作環境はこのへん(リンク
一応centosも動作環境に入ってはいる。
しかしこのchinachu 実は推奨のOSがdebianである。
たとえばここ(リンク)ではdebianだけ太字にされている。
centosで設定していくと中途半端にひっかかる箇所もある。
とりあえずはNode.jsが必要。ここのページでは
Node.js ^6.5.x || ~8

という微妙な書き方をしている。
一瞬何の事かわからないがこれはNode.jsの文法に基づく表記。
参考リンク1 参考リンク2
ここのHPでは多少マシな書き方をしている。
Node.js >=6.5.0 <7.0.0 or >=8.0.0 <9.0.0 needed.
つまりNode.jsが必要だがバージョンに条件がある。
具体的には「6.5.0以上7.0.0未満」または
「8.0.0以上9.0.0未満」

しかし厳密には、この2つのバージョンの記載方法は
中身が矛盾している。
最初の^6.5.x || ~8 これは6の左にキャレット(^)が付いている。
これは「最新版」を意味するので
単に「6.5.0以上」としか書いていない2つめの条件とは食い違う。
またバージョン8は不安定だと主張するHPもある(リンク
しかし本連載では基本的に最新版のソフトを入れてきた。
だから今回も受けに回ってはダメだ。徹底的に攻めで行く。
ばっちこーいw
そこでNode.jsは8系を入れてみる。node.js本家参照。
$ curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
//これは本家の記載
# curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -

// そこで私はこう(↑)してみた
# yum install nodejs
# node -v

v8.9.4


# npm install pm2 -g
# npm install mirakurun -g --unsafe --production

// この辺から赤字でerrorが出たりして不穏な空気になるw
// おい、8系入れようとか言った奴誰だ! ^o^ わたしです
# pm2 status 

// mirakurun-serverがonlineなら成功
# EDITOR=nano mirakurun config server
// 設定に入るが、ここは何も設定しなくてもよい
// せいぜい最後のポート番号変えるぐらい
# EDITOR=nano mirakurun config tuners

// 設定に入る。初期状態では全チューナーisDisabled:trueで
// 無効化されているからそれを解除する
// 使うチューナー全てに関してtrueをfalseに直す
# EDITOR=nano mirakurun config channels
// ここではチャンネル名とチャンネル番号修正必須
# mirakurun restart

// mirakurun再起動
# npm install rivarun -g

// rivarunインストール recpt1みたいなもの
# npm install arib-b25-stream-test -g --unsafe

// 復号処理に必要なもの
$ rivarun --list | sed 's/},/},\n/g' 
// 動作確認1
$ rivarun --list | sed 's/},/},\n/g' | grep -v serviceId

// 動作確認2
$ rivarun --b25 --ch GR/666 777 destfile.ts
// 動作確認3

よしよし動いてる動いてるいいなあーワクワクするなー
と真希波マリばりに喜んでいたのも束の間
PCを再起動後はmirakurunが起動しない事案発生(爆w
自動で起動しないのなら手動で起動させればいいのに
(某マリー=アントワネット)
# mirakurun restart
// これで手動で正常動作確認
// この時mirakurun-serverがonlineになる
// しかしPCを再起動するとやはり動かない。
// だからと言って毎回毎回手作業をするのは面倒
# pm2 start mirakurun
// 再起動後にこれを打ってみるとmirakurun-serverではなく
// mirakurunがonlineになる そしておパンツ鑑賞不可
# mirakurun restart
// 続けてこれ(↑)を打つと mirakurunはerrorになる

// しかし mirakurun-serverはonlineになる そして動作おk
# pm2 start mirakurun-server
// 再起動後にこれを打つと
// [PM2][ERROR] script not found と出た。
// もちろんおパンツ鑑賞不可

一体悪いのはどこだろうか?
そもそも"mirakurun"と"mirakurun-server"の
2つが存在するのは正しい状態なのか?
ここ等を見るとそもそもmirakurun-serverしか無いのが
正解のような気がする。

もしもmirakurunが壊れていたら
# mirakurun restartを打った程度で正常動作はしないはず。
よってmirakurunそのものは生きている可能性が高い。
問題があるとしたら起動方法?OS側の設定?
もしくはdebian推奨のソフトをcentos7で動かしているから?
(これは作者が動作環境にcentos7を入れているのが
ウソでしたという可能性すら込みでの話になる)

PC起動後に# mirakurun restartで動くのだから
まずはこの作業さえ自動化されればいいのでは?と考えた。
mirakurunは起動にはsystemdを使っている。
そこでsystemdについて調べた。その結果、ここ発見。
記載内容に基づき /etc/systemd/system/ を見てみた。
その結果、pm2-asahinamikuru.service発見
名前から推測してこれが設定ファイルに違いない。
開くと
ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect
と書いてあった。

要はこの1行がPC起動時に実行されればいいはず。
一旦PCを再起動して、手動でpm2 resurrectを打つと
正常に動作する。
手作業でできる事がなぜ自動処理できない?
もう一度PC再起動して
# systemctl start pm2-asahinamikuru.service

こう打ってみた所、以下のエラーが発生
Job for pm2-asahinamikuru.service failed because the control process exited with error code. See "systemctl status pm2-asahinamikuru.service" and "journalctl -xe" for details. 

# systemctl status pm2-asahinamikuru.service
# journalctl -xe
をそれぞれ実行すると、どちらの場合も赤字で
Failed to start PM2 process manager.
と出てきた。
 
このメッセージでぐぐるとこれ発見
Startup for systemd fails if user is not root
...管理者権限の問題なのだろうか?

根拠1 ここ(リンク)でもやたらとsudoが出てくる
根拠2 ここ(リンク)で 
>mirakurunの非rootユーザでの実行を許可してほしい。
という一文あり。
作者はその提案にかなり否定的な態度で返答をしている。
つまり、やはりroot権限を使っている。
根拠3 ここ(リンク
>なにかMirakurunが仕事しない時(中略)
>recpt1がsudoで使えない(rootでパスが通ってない)

>状態でした。通常ユーザーだと使えるので気づきにくい。
つまり通常ユーザーでやれば済む事すら
root権限を取得してから作業している。

そこでpm2-asahinamikuru.serviceを編集してみた
User=asahinamikuru
これ(↑)を、こう(↓)書き換えた。
User=root

この結果、正常動作確認 PC再起動してもおk (゚д゚)ウマー

ちなみに最初からsudoが使える設定でOSを入れなおしてみたが
mirakurunはやはり# mirakurun restartが必要だったので
sudoの多用が原因ではないらしい。

だとしたらchinachuはrootで動きたがる行儀の悪いソフトだ
という事になる。
作者自身は利便性と安全性のバランスを考慮したらこうなる
と謎の主張をしている。(リンク
特権が必要な作業とは今後実装される予定の
「負荷状況に応じたプロセス制御や自動アップデータ対応」
を想定しての話だという主張だ。
(つまり、現状は必要も無いのにroot権限を要求していると
認めた事になる?)
挙句の果てには
「現実的なセキュリティ対策を講じる事が本質であって
rootかどうかは主題ではない」と謎の主張で案件終了w

...?? 何が言いたいんだかよく分からない。
rootであれば他の一般ユーザーにかけられた制限を取っ払う事ができる。
それは見られないものも見られるようになる、
消せないものも消せるようになる、
書けないものも書けるようになる、
実行できないものも実行できるようになる、という事に他ならず
まさにセキュリティの話題だと思うのだが違ったのか?

負荷状況に応じたプロセス制御」とは何だろう?
日本のおパンツ放送はBCASだの何だの
ゴミみたいなシステムのせいで暗号化、復号化の
二度手間な無駄が多い。
そういう無駄を飛ばして本来の生データそのものを
記録するのなら、tsファイルの録画など
atomでも十分間に合うレベルの低負荷でしかない。
元から低いのに今更負荷状況もヘッタクレも無いと思うのだが

仮に高負荷があるとしたらエンコードかリアルタイム視聴か。
「プロセス制御」の具体的内容が不明だが
仮にCPUの処理が追いつかない場合に優先順位を
上げるor下げるとかそういう話だと仮定をするなら
リアルタイム視聴は優先順位を下げられては困る。
音や映像が切れ切れになる可能性があるからだ。
逆に上げるのも無理。CPU使用率100%であっぷあっぷの
ゴミCPUのケツを叩いた所で
オーバークロックできる訳ではなかろう。
CPUの処理能力が追いつかないのならもっといいHW買えとか
そういう話になる。管理云々の話ではない。
一方、エンコードなら優先順位を下げられるのかもしれない。
しかし現状ではchinachuはffmpegはインストールしているのに
別途グローバルでもインストールしろとか謎の主張をしている。
・・・また出た。謎の二度手間だ。
ffmpeg使う気なんか本当にあるのか胡散臭い状態だ。
  ...。一体何をどう管理したいんだろう?
この作者が一体どういうつもりかわからないので
githubを見ていると、ここの左の方にここへのリンクがある。
開くと、「れいさ」なる人物(?)のリンクがある
worksにchinachuやmirakurunが並んでいるので
ここが作者のHPで間違いないようだ
れいさ / re1s ( 菅祐貴 / Yuki KAN)
...誰? これが本名?

Microsoft MVP for Microsoft Azureだそうなので
リンク先を見ると顔写真が出ている(本人?)

同じページにはLanguage Japanese, English, Korean
とも書いてある。なぜKorean?
名前が菅なのはもしかして在日だったのか?
私はkanreisaと名乗って作者がいろいろ書いているのは
管理者=kanrishaをネットスラング的に文字っているのかと
今まで考えてきた。まさかカン=レイサが本名?韓国人?
(今更在日ごときでビビる私ではないが)

同じプロフページからリンクを辿ると
ここにはCEOで菅祐貴と出ている。やはりこれが本名?

べつに本名だろうが偽名だろうがどうでもいい話ではある。

この作者の考えが私の考えとはだいぶ違うというそういう話だ。
自動アップデータなんか究極これはネットワーク経由の
リモート操作すら許しかねない話題だと思うのだが
(あくまでも"究極")

究極なんて言うのなら私自身が番組表データの取得や表示を
プログラミングすればいいという話にもなる。
それはchinachuを捨てる事にもつながる。
いや、何なら今すぐにでもchinachuを捨てられなくはない。
番組表ぐらい、どこぞのHPを見てしまえばいい。
コマンドラインでパチパチと手打ちでrecpt1使ってもいいし
現在時刻から録画開始時刻までの秒数を計算して
自動的に待機時間を考慮したコマンドに変換する...
その程度のプログラムなら今すぐにだって書ける。

とりあえずはmirakurun, rivarunと入ったので
chinachu gammaインストール開始 

ここには書いていないが、ここには
以下のソフトをインストールしろと書いてある
# yum install wget curl yasm
多分バージョンが上がる過程で必要が無くなったのだろうか?
ちなみにyasmはepelに存在する。 
何も知らずにコピペだけで設定しようとすると躓く所だ。
相変わらずcentosに冷たい作者であったw
これに限らず、この公式HPは記載が不十分な内容がある。
私が過去に試した時は以下のソフトも入れる必要があった。
これはffmpegを入れる時の依存関係と酷似している。
しかしベータ時代とガンマ時代で違いが出てきているので
これはあくまでも参考

# yum install cmake freetype-devel gcc-c++ libtool mercurial nasm zlib-devel gcc make automake autoconf git pkgconfig


ではいよいよchinachuインストール開始
$ git clone git://github.com/kanreisa/Chinachu.git \
~/chinachu
$ cd ~/chinachu/
$./chinachu installer

// ここはAutoを選択する。ベータ時代に試してみた所、

// 2のfastはchinachuの便利機能が何ひとつ入らないので
// 番組表閲覧すら不可 無い無いづくしで使い物にならない
// 6のepgdumpを入れれば番組表閲覧・予約録画までは可能。
// しかしリアルタイム視聴が不可
// 適当にコーデックを入れたりffmpegをコメントアウトしたら
// インストール終了はするがリアルタイム視聴不可になる
// (画面は黒いままでログにはエラーも無い)
// 面倒臭いから結局フルで入れるのが速い
$ cp config.sample.json config.json
// 設定開始
$ nano config.json

// 以下公式HPより設定の説明
"uid" には通常1000または"実行ユーザー名"を指定

"vaapiEnabled"をtrueにするとストリーミング再生時に
HW支援を使用します。
別途ffmpegをビルドしてグローバルに

インストールする必要があります。
Chinachuが内部ビルドしたffmpegは削除してください!
(./usr/bin/ffmpeg) (以下略w

なるほど。いまだにffmpegを「内部ビルド」している訳だ。
なぜ「内部ビルド」なんてしておきながら
別途グローバルにインストールしろと言い出すんだろう?
「内部ビルドは削除してください!」なら
初めからそんなものインストールしなければいいのでは?
相変わらずよく分からない人だ。

この辺を疑問に思ったので、私はffmpegをインストールせずに
先にchinachuを入れてみた。
その結果、vaapiEnabledがfalseであるにもかかわらず
リアルタイム視聴時に画面にエラーが出た。
コンテナ形式やコーデックを変えてみてもエラーが変わるだけで
音も映像も出なかった。
それがffmpegインストール後は解決した。
やっぱりよく分からない人だ...。 とりあえず設定の続き。

$ echo [] > rules.json
// 空のルール設定ファイルを作成
$ ./chinachu service wui execute
// 問題なく起動できたらCtrl+\で終了
$ ./chinachu update
//EPG取得テスト

この後ベータ時代とガンマ時代で
設定方法が違ってきている

【ガンマの場合】
sudo pm2 start processes.json
sudo pm2 save
再起動して正常に起動できるか確認する


...問題なのは再起動しようが正常に起動なんかしない件だ。

相変わらずよくわからない人だ...。
作者に質問でもしてやろうか?とは思った。
しかしここではmirakurunの問題を質問してきた人に
英語で質問を書きなおせと答えている。しかも最後の最後は
「PM2の事は俺に聞くな。PM2の作者に聞け」で終了w
まあ、私なら最初から英語で質問してもいいけど。
debianを推奨している人だから
あまり相手にしてくれない可能性もある。
一人で試行錯誤していると、ガンマの設定の後に、更に続けて
ベータ時代の設定の後半を行うとchinachuが動くと気づいた。
【ベータ時代の設定の後半とは下記】
./chinachu service operator initscript > /tmp/chinachu-operator
./chinachu service wui initscript > /tmp/chinachu-wui
sudo chown root:root /tmp/chinachu-operator /tmp/chinachu-wui
sudo chmod +x /tmp/chinachu-operator /tmp/chinachu-wui
sudo mv /tmp/chinachu-operator /tmp/chinachu-wui /etc/init.d/
sudo insserv chinachu-operator
sudo insserv chinachu-wui
sudo service chinachu-operator start
sudo service chinachu-wui start
 
...しかもこれは完全にdebian系の書き方である。
centosではこの設定は不可能である。
単にsudoがどうとかそういう話ではない。
sudoぐらいcentosでも使おうと思えば使える。


まず、このベータ時代の設定で問題になるのは
insservはdebian系のコマンドであってredhat系には存在しない
という点だ。redhat系はchkconfigを使う。
しかし今回はcentos7だ。
centos7ではchkconfigがsystemctlに変わった
ではsystemctl enable ...と思ったらそう単純ではない。
これはエラーが出る。native serviceではない云々。
で、結局insservの2行の所は...
# chkconfig chinachu-operator on
# chkconfig chinachu-wui on
...こう書くのが正解 
あとはベータ時代の設定方法そのままで動く。
ただ、動くのはいいがWUIにアクセスの時に
127.0.0.1が使えないのはなぜなんだろうか?
ローカルIPを使う必要がある。
例えばhttp://192.168.1.2:20772
相変わらずよくわからない人だ...


しかも未だにOS再起動後は
$ sudo mirakurun restart
これが必要なんだが。この問題はまた検証予定。

最後はお約束のひと言をオナシャス
「黒幕はキリスト教徒!」

華麗なるLinuxの世界16 〜夏だ!海だ!おパンツ鑑賞会だ!〜

華麗なるLinuxの世界16 〜夏だ!海だ!おパンツ鑑賞会だ!〜

季節感の無いタイトルはさて置きw 

日本のおパンツは2003年12月よりデジタル放送が始まった。
(2011年7月にはアナログ放送が終了)
デジタル放送は最初は暗号化もコピー制御もしていなかった。
しかし2004年4月からコピーワンスを導入。
後出しジャンケンで「著作権ガー」とか取ってつけたような
屁理屈をこねられてもアホくさいだけ。
デジタルだとアナログよりも不正コピーが横行しやすいから?
そんなの2003年12月以前から分かってましたよね? 
なぜ最初から暗号化しない?
というかそもそも暗号化する事の正当性は?
世界中でデジタル放送を暗号化してるバカは日本ぐらいだ。

著作権、著作権と言うのならなぜワンセグを暗号化しない?
無料のおパンツを暗号化するとはこいつらバカじゃないのか?
見てほしいのか?見てほしくないのか?
お前ら「見てください」とお願いする立場だったんじゃないのか?
要はJASRACと同じ。天下りビジネス。ピンはねビジネス。
実に意地汚い。 
チンピラの分際で屁の役にも立たない能書きだけ一人前。
こいつら反旗を翻す。それがガンダムマイスターだ。
そう。俺が、俺たちが、ガンダムだ!
よってここに美人OLのおパンツの設定方法を記録しておく。
目指すはcentos7で作るおパンツ丸見えぱそ
まあ、奥さん、丸見えですって。いやらしいわねえ

# yum install gcc pcsc-lite-ccid pcsc-lite \
pcsc-lite-devel pcsc-lite-libs perl-ExtUtils-MakeMaker
// まずは開発環境やらカードリーダー関係から入れる


# yum install wget bzip2 gcc unzip 
kernel-devel-`uname -r` git autoconf automake \
pcsc-lite pcsc-lite-ccid pcsc-lite-devel pcsc-lite-libs \
perl-ExtUtils-MakeMaker
// ちなみにこれ(↑)はcentos 7.4 minimum installの時に
// yumで必要なものの一覧
// これだけyumで入れたらソース等yumに無いものは別として
// recpt1が動く所までは行ける
// 勿論、minimalだからおパンツ鑑賞環境は別途必須(笑
// `uname -r`とはカーネルのバージョン
// たとえば3.10.0-693.11.6.el7.x86_64
// 多分
`uname -r`を付けなくても普通に動く
 
# wget http://ludovic.rousseau.free.fr/softwares/\

pcsc-tools/pcsc-tools-1.5.2.tar.bz2 -P /usr/local\
/bin/pcsc/pcsc-tools
// カードリーダー関係のダウンロードから開始
// フリーソフトである関係上不定期に
// バージョンアップされるからバージョン番号等要注意
// wgetコマンドの -Pオプションは保存先を指定している
# tar jxvf /usr/local/bin/pcsc/pcsc-tools/pcsc-tools-\

1.5.2.tar.bz2 -C /usr/local/bin/pcsc/pcsc-tools/
// 解凍

# cd /usr/local/bin/pcsc/pcsc-tools/pcsc-tools-1.5.2
# ./configure

// 数年前の古い記載のHPだとこの"./configure"を飛ばしている
// しかし、この"./configure"は必須
// バージョンアップで設定方法が変わってるのかも
# make
# make install

# wget http://ludovic.rousseau.free.fr/softwares/\
pcsc-perl/pcsc-perl-1.4.14.tar.bz2 -P /usr/local\
/bin/pcsc/pcsc-perl
// これもまだカードリーダーに必要なものの続き

# tar jxf /usr/local/bin/pcsc/pcsc-perl/pcsc-\
perl-1.4.14.tar.bz2 -C /usr/local/bin/pcsc/pcsc-perl
# cd /usr/local/bin/pcsc/pcsc-perl/pcsc-perl-1.4.14/
# perl ./Makefile.PL

// 意味は"make && make install"と同じ
// ここでカード接続して次へ進む。
// (べつに最初っからつなぎっぱなしでも可)
# systemctl start pcscd
# pcsc_scan

// 動作確認 ctrl + z で止める
# systemctl enable pcscd 


# yum install git kernel-devel-`uname -r`
// 多分ここまで当ブログの通りに進んできてるなら

// "already installed and latest version Nothing to do"
# wget https://github.com/m-tsudo/pt3/archive\

/master.zip -P /usr/local/bin/pt3
// ここからおパンツドライバーを拾う作業
# unzip /usr/local/bin/pt3/master.zip -d /usr/local\

/bin/pt3
// 解凍
# cd /usr/local/bin/pt3/pt3-master
# make
# make install
# shutdown -r now
# ls /dev/pt3*

/dev/pt3video0  /dev/pt3video1  /dev/pt3video2  /dev/pt3video3
↑このように表示が出れば成功


# wget http://hg.honeyplanet.jp/pt1/archive\
/c44e16dbb0e2.zip -P /usr/local/bin/arib25
// ここからarib25インストール 復号化を行う
// 復号化とは暗号化の反対
# unzip /usr/local/bin/arib25/c44e16dbb0e2.zip -d \

/usr/local/bin/arib25
# cd /usr/local/bin/arib25/pt1-c44e16dbb0e2/arib25
# make
# make install 


# yum install autoconf automake
// これも"already installed and latest version"のはず
# git clone https://github.com/stz2012/recpt1.git \

/usr/local/bin/recpt1_stz
// recpt1-stz版導入
# cd /usr/local/bin/recpt1_stz/recpt1/
# nano ./pt1_dev.h

// 5行目〜32行目あたり "dev/pt1..." 全16個を "/dev/pt3..." に変更...するのだが実は...

# sed -i 's/pt1video/pt3video/g' pt1_dev.h
// これで一気に書き換え可能

// sedはこれだけで本が一冊書けるレベルの奥の深いコマンド
# ./autogen.sh
# ./configure --enable-b25
# make
# make install
# echo "/usr/local/lib" > /etc/ld.so.conf.d/recpt1.conf
// パスを通す
# ldconfig

// 共有ライブラリの依存関係更新
# exit
$ recpt1 --b25 --strip チャンネル番号 録画秒数 test.ts
// これは動作確認
// チャンネル番号は整数値を入力するが
// 具体的な値は各地域によって違うのでここ等参照。
// 録画秒数は何秒録画したいのか整数で指定
// mをつけると分の意味になる 例えば1時間録画したいなら
// "3600"と"60m"の2つの書き方がある

$ sleep 3600; recpt1 --b25 --strip 666 666 test.ts
// これは3600秒何もせずに待機した後録画開始の意味。
// つまり放送開始時刻まで画面の前で待機してから
// enterを押すというアホみたいな使い方をしなくてよくなる。
// セミコロンは2つのコマンドの間に挟んで使う。
//(今回はsleepとrecpt1)意味は下記参照
com1 && com2
// com1が成功した場合のみcom2実行
com1 || com2
// com1が失敗した場合のみcom2実行
com1 ; com2
// com1が終了したらcom2実行 成功か失敗かは関係ない
com1 & com2

// com1の終了を待たずに即com2開始

という事は、こういうおパンツの使い方がすぐわかる
$ recpt1 --b25 --strip 666 666 test1.ts & recpt1 --b25 --strip 777 777 test2.ts
// 2番組同時録画 

さて、ここまででおパンツまる見えになったはずだ。
この先はこのおパンツの実践的な使い方や注意点等を書く。

【録画延長】
$ recpt1ctl --pid (実行中のプロセスID) --extend (秒数)
// 録画開始した後で設定間違いに気付いた時等に使う


【デバイスの指定】
$ recpt1 --b25 --strip 666 777 testtest.ts --device /dev/pt3video2

本来自動で使い分けができる。
しかし何かしらの事情で手動で指定する場合にはこうする
尚、地上波は /dev/pt3video2 と /dev/pt3video3
BS/CS 用は /dev/pt3video0 と /dev/pt3video1


【カーネルアップデート】
おパンツのドライバはカーネルモジュールである。

そのためカーネルのupdateをした後は
ドライバの再イントールが必要
# cd /usr/local/bin/pt3/pt3-master
# make clean
# make
# make install
# shutdown -r now


【逆にカーネルはアップデートしないという選択】
# nano /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
(中略)
distroverpkg=centos-release
exclude=kernel* // この行を追記する。


# yum update --exclude=kernel*
// 設定ファイルはいじらないで、毎回除外指定というやり方


【リアルタイムおパンツ鑑賞】
録画するだけがrecpt1ではない。
リアルタイムにおパンツを愛でる。実にいいではないか。
ここで紹介されていた方法。

$ recpt1 --udp --strip --b25 --http 8080
// こう打つと以下のように出る
// 画面上特にめずらしいものは何も出ないが構わず続行
enable UDP broadcasting
enable B25 strip
using B25...
creating a http daemon
run as a daemon..
pid = 3617
listening at port 8080


VLCを起動してmedia >> open network streamを開く。
入力欄にはこう(↓)入力
http://localhost:8080/チャンネル番号
これでplayを押すとなんと隣のJKのおパンツが見られる。
ありがたや、ありがたや なんまんだぶ、なんまんだぶ

最後はお約束のひと言をオナシャス
「黒幕はキリスト教徒」

2018年1月19日金曜日

華麗なるLinuxの世界15 〜ソフトウェアインスコ祭り3〜

華麗なるLinuxの世界15 〜ソフトウェアインスコ祭り3〜

まだまだいっくよ〜w
今回はdbp, chrome, ffmpeg, mcomix, python3.x, JDK

まずdbp
dbpとはdavid's batch processor
gimpの拡張機能である。
gimpは無料版フォトショと言われる事がある。
そしてgimpがフォトショに負けている点が「バッチ処理」
バッチ処理とはバッチバチーと複数のファイルを
一気にまとめて処理する事(半分ウソで半分正解w)
ちなみにパッチ(patch)とバッチ(batch)は違う。
大阪名物パチパチパンチはもっと違う。
パッチとは不具合等の修正プログラム
パッチワークのパッチだ。
バッチとは複数の処理をまとめて行う事。
dbpはgimpの弱点であるバッチ処理機能を追加するもの。
fedoraの場合は簡単でリポジトリから拾ってこれる。
centosの場合は今の所どこのリポジトリにも無い。
(マイナーなリポジトリにあったり
別の名前で登録されてたりという可能性はある)
今回はdbp本家からソースを拾ってきてビルドする。
ここ(リンク)が本家 ソースが拾える
# yum install gimp-devel // 依存関係で必要
// g++も必要だが私の場合はインストール済みだった
$ tar -xzvf dbpSrc-1-1-9.tgz
// コマンドラインで解凍している
$ cd dbp-1.1.9
// 解凍の結果dbp-1.1.9というフォルダに展開されるので
// その中に入る
$ make install
// dbpのソースを展開し、展開先のフォルダで
// この1行だけで実行すればインストール完了
// gimpを起動するとfiltersの最下段にbatch process...が
// 追加されている

次。chrome
chromiumというchromeソックリのソフトもある。
これはchromeの拡張機能もそのまま使える。
だからchromeはいらないとも言える。
firefoxはあるし、adobe flashも入れられるので
今更chromeの必要性は薄い。
しかしchromeは今や世界で一番使われているブラウザだと
一部の統計では言われている。だから需要はあるだろう。
参考:これは2017年12月時点でのブラウザのシェア 
ソースはここ
ちなみに日本のシェアはこれ(ソースは同じ)
相変わらずグズでマヌケの日本人どもであった。
こういう批判をされるとすぐに
「特定のホームページが見たい訳であって
道具が何であろうがそれは個人の自由だ」云々と
「手段ガー、目的ガー」と謎の言い訳を始めるバカがいる。

・・・。ほう、そうかそうか。
特定のホムペが見られたらそれで満足か。
では、linuxを使う事に何の問題も無かろう?
何しろ、特定どころか、どこのホムペでも見られる。
flashだろうがHTML5だろうがとっくの昔に対応済み。
いや、むしろIEなんかより先に対応済みなんだが?
...というと謎のダンマリ発動の模様w
せいぜい出てくる反応は「もし何かあったら困る」程度の事。
尚、IEでは毎日毎日、その「もし」が起きているが
これは「仕方がない」らしい。もはやカルト信者脳丸出し。
尚、2017年12月のOSのシェアではwin10が30%超(ソース
ちなみにサクッとwindows vistaが無かった事にされているが
そこは黒歴史だw そっとしておいてあげてほしい(爆w
ちなみに私はvistaは発売日当日から
「これはあかんやつや。買う奴はバカ」と叩いてましたけどw 
そしてwindows10でのデフォルトのブラウザはedge。
だが、そのedgeのシェアは30%どころか3%すら危うい件。
OSのシェアが30%ならブラウザのシェアも30%ではないのか?
「ブラウザにこだわりなんか持つのはオタクだけ」と
さも、innocentなパンピーを気取った発言が多い。
もしもそれが正当なものであるのなら、
OSのシェアとブラウザのシェアは連動しないとおかしいだろう。
この矛盾を何とも思わないのか。実に頭が悪い。老害以下。
あくまでも自分はスタンダードでノーマル。
自分の知らない事・分からない事はオタク知識。
そんなものにこだわるのは病的なマニアだけ。
都合の悪い事は見なかった事、聞かなかった事にすれば万事解決。
自分がしてる事は常に常識的で模範的でマトモで正道。

まるで「自分は普通の日本人」と必死に「普通アピール」をする
ネトウヨどもと同じではないか。
そんなに「普通」は価値のある事か?
仕事だろうが勉強だろうが偉いのは勝者であり
イチバンではないのか?
それがオンリーワンだかナンバーワンだか
そんなクズな屁理屈はどうだっていい。
スタンピードに弱い、足の引っ張り合いしかできない
村人根性、田舎っぺ根性丸出しのバカが多すぎて話にならない。
そういう自分本位の塊みたいなバカと私は何度も口論してきた。
「IE以外使うのはキモヲタ」と勝手に決め付ける連中が
キチガイみたいに朝から晩まで触ってるのが
あいほんなのは、なぜか?あいほんにIE入っていたのか?
こういうジョークにしても五流以下の茶番が日本のリテラシーだ。

頭の悪いバカどもは放っておこう。
簡単にchromeインストール方法のみ紹介。
(chromiumにも手間さえかければflashは入る。
私は過去にadobe flashではなく
Pepper Flashを入れていた時期もある。)

google本家リンクでchromeはflashとセットで配布中。
rpm=fedora/centos/opensuse版と
deb=debian/ubuntu版がある。
ダウンロードしたrpmをインストールすれば終了
# rpm -ivh google-chrome-stable_current_x86_64.rpm

次。mcomix 1.01
スキャナで本を自炊した場合等コミックビューワーが
ほしくなる。mcomixは名作コミックビューワー。
圧縮ファイルでまとめられた画像ファイル(=自炊本)を
いちいち解凍せずに閲覧可能。
unrarやp7zipがインストール済みなら.rarや.7zipにも対応。 
画像のコントラストや明るさ等調整もできるし
最後に開いたページを記憶しておく等、便利機能満載だ。
fedoraならリポジトリから簡単に入れられるが
centosの場合はmcomix本家(リンク)からソースを拾う。
まずはver 1.01から入れる。(1.2系は後述)

mcomixのwiki(リンク)とソースの中のreadmeでは
微妙に動作環境が違う。 
またソースもバージョンによって動作環境が違う。
とりあえずmcomixが動くsystem requirementsは以下。

Python 2.5
Setuptools 0.6, PyGTK 2.12
PIL (Python Imaging Library) 1.1.5 or newer, 

or Pillow (an up-to-date fork) as drop-in replacement for PIL.

まずpythonのバージョン確認
$ python --version
2.7.5 // あっさりクリア
// 注意すべきなのは2系だという点
// pythonの勉強をした事がある人なら常識だが
// pythonはver2からver3に変わる時、大改革があった。
// python2時代のソフトの全滅もやむ無し、ぐらいの改革。
// そして2系列は2020年でサポート終了内定済み
// centos7はyumがpython2系で書いてあるので
// 今すぐ2系を切り捨てはしないはずだ。
// しかしfedoraはとっくにyumを捨ててdnfに移行済み
// dnfの大きな特徴の1つがpython3系列で書き直したという事
// つまり、少なくともyumは将来捨てられる予定。

Setuptools 0.6, PyGTK 2.12
これが色々謎。HPの動作環境は下記
GTK+ and PyGTK 2.14 or newer. 
...ソースに書いてある内容となぜ違う???
私はfedora使いでもあるが、
fedoraは特にGTK+入れなくてもmcomixは動く。
ソースにも出てこないぐらいだからgtk+必須ではないと解釈。
一方、pygtkについては、ここによると
PyGTK is included in most Linux distributions
(including Debian, Fedora, Ubuntu, Opensuse, Gentoo, Mandrake, Redhat, SUSE...)

との事。
これはfedoraでmcomix入れる時にdependenciesで出てくる。
pygtk2 2.24.0-18.fc27が該当すると思われる。
centos7においては
# yum install pygtk2 // インストール済み

次。PILとは何だろう?と調べているとこのHP(リンク)発見。
>Fedora 19 is going to stop shipping python-imaging (PIL)
>and start shipping python-pillow instead. 云々
つまりPILとはpython-imagingであるがそれはもう古い。
現在ではpython-pillowが必要と解釈できる。
(注:元々fedoraが最先端の機能を実験的に装備し
その結果に基づいてRHELやcentosが作られる。
そしてcentos7はfedora19あたりを元にしている。
例えばibus-mozcもfedora19用のソースをいじった事も
この関連である。よって、fedora19時代のPILの記載は
centos7にも当て嵌まる可能性は高い)
# yum install python-pillow

// python-pillow 2.0.0-19.gitd1c6db8.el7(base) 

最後にさっき飛ばしたsetuputilsだ。HP上の
4. Setuputils. In particular, this includes the pkg-resources subsystem of Setuputils which is required for mcomix to run.
ふーむ。同HPではここへリンクが貼ってある。
つまりsetuputilsとはpython-setuptoolsだと思われる。
# yum install python-setuptools
Package python-setuptools-0.9.8-7.el7.noarch already installed and latest version
Nothing to do


では、実際のインストール作業へ。
# python setup.py install

// ソースの解凍先に入ってコレだけでインストール終了
$ mcomix

// 起動確認

毎回毎回ターミナルひらいてmcomix + enter打つのも面倒
左上のapplicationや右クリックのコンテキストメニューから
起動できるようにする。
これはfirefox quantum入れた時の作業の応用でできる。
# nano mcomix.desktop
// 以下の内容で作成してctrl + o >> enter >> ctrl + x
// 勿論Icon=の行とか各自で調整する
[Desktop Entry]
Name=mcomix
Exec=/usr/bin/mcomix %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/home/asahinamikuru/Downloads/mcomix.png
StartupWMClass=mcomix
StartupNotify=true
MimeType=image/bmp;image/gif;
Categories=Graphics;

# cp ./mcomix.desktop /usr/share/applications/

次。mcomix 1.2.1
mcomix1.0.1のインストールができたので
最新バージョン(1.2.1)も動くのかと試してみた。
実はこれはインストールはできるが起動しない。
ターミナル上では
"ImportError: cannot import name _getexif"
というエラーが出る。
これを検索してもズバリ同じエラーが見つかりはしない。
まして対策はもっと見つからない。

古い版と新版で何が違うんだろう?と調べてみた。
ChangeLogによると(リンク

MComix 1.01
... I have neither the time, nor the incentive or motivation
to continue working on MComix

(it does what I need it to do, put simply).
Thus, I'm retiring from my current position today. 

引退宣言らしき一文がある。
そして1.1を飛ばして1.2が発表されている。
dependenciesを見ても、どうも1.0系と1.2系は
ちょっと断絶がある模様。

ところでfedora27はリポジトリを追加しなくても
mcomix 1.2.1が入る。
その時のdependenciesを見れば何を用意すればいいのかの
ヒントになるはずだ。
fedora27におけるdependenciesは以下の7つ。

pygobject2 2.28.6-19.fc27
pygtk2 2.24.0-18.fc27
python-subprocess32 3.2.6-8.fc27
python-xpyb 1.3.1-9.fc27
python2-cairo 1.15.3-1.fc27
python2-olefile 0.44-3.fc27
python2-pillow 4.3.0-1.fc27

この中でcentos7でも単純に入れられるのは
python2-olefile 0.44-4.el7(epel)
pygtk2-2.24.0-9.el7.x86_64(already installed)

以上2つのみ。

python2-pillowとは
centos7においてはpython-pillowだと思われる。
しかしコレを入れただけではまだエラーが消えない
Pillowを入れる、それも最新版を入れる事が必要。
それは後述。

まずは必要なものを集めるにしても
リポジトリでヒットしないという問題の対応からだ。
fedoraでdnf info xxxと打つと各パッケージの詳細が出る。
centos7におけるyum info xxxと同じだ。
この詳細の中にURLが含まれるので
それをブラウザで開けば1つ1つ拾い集める事ができる。
拾ったとしてもrpmファイルとは限らないのに
どうやってインストールする?というのは
READMEなり何なり開けば書いてある。
基本的には、setup.pyがあれば
# python setup.py install
Makefileがあれば
# ./configure
# make
# make install
大体このどちらかでおk。

# yum install --enablerepo=epel xcb-proto \
python-devel cairo cairo-gobject-devel python-pip
// これは後で「xxxがありません」のエラーで止まるのが
// 邪魔臭いから先に必要なものをインストールしている

ここでsubprocess32-3.2.7.zipを拾って解凍。
# python setup.py install // 解凍先でコレ実行

ここでxpyb-1.3.1.tar.bz2を拾う
# ./configure // 解凍先で以下3行実行
# make
# make install


ここでpycairo-1.15.4.tar.gz拾う
# python setup.py install // 解凍先でコレ実行


ここでpygobject-2.90.1.tar.bz2拾う
# ./configure
// 解凍先で以下3行実行
# make
# make install
 


# pip install --upgrade pip
// Successfully installed pip-9.0.1
# sudo pip install -U Pillow // Pillowのアップグレード

mcomix1.2.1のソースを解凍 解凍先で以下実行
# python setup.py install

# exit
$ mcomix // 起動確認

次。python3.x
centos7は初期状態ではpythonは2系列しか入っていない。
これからpythonを勉強するなら2系列より3系列の方がよかろう。
そこで最新版の3.6を入れてみる。
入れ方もいろいろあるので2つ紹介してみる

python3.6-A
参考リンクはこことかここ
IUS Community Projectのリポジトリから拾う。
IUS Community Projectとは?→ここ等参照
# yum install https://centos7.iuscommunity.org/ius-release.rpm
// リポジトリ追加 epelみたいにデフォは無効にしてもよい
$ yum search python36

// ヒットするんだろうか?と試しているだけ
// (この1行は省略してもいい)
# yum install python36u python36u-libs python36u-devel python36u-pip

// 実際のインストール
$ python --version
Python 2.7.5

// 元々入っていた2.7.5は生きている
$ python3.6 --version
Python 3.6.4 

// python3系列はpython3.6コマンドで呼べるようになった

python3.6-B
ここにはまた違う方法が紹介されていた。
# yum install centos-release-scl-rh centos-release-scl
// scl=software collectionのリポジトリを追加している

// このSCLにpython3.6がある
// 勿論epel同様初期設定は無効化しておくのもアリ
# yum --enablerepo=centos-sclo-rh install rh-python36
// SCLのパッケージは /opt 配下にインストールされる

// つまり2.7系と共存可
# python -V
// バージョン確認
Python 2.7.5
// あれ?ワイ氏のpython3はどこやで?
# which python
// pythonコマンドはどこにあるやで?
// 今、pythonと呼んで反応するプログラムはどこのどれか
// パスがどこに通っているのかを確認している。
/usr/bin/python
// ここやで?
# scl enable rh-python36 bash
// 実は、環境変数を読み込んで利用する
# python -V

// 再確認。python -Vはpython --versionと同じ事。
// ちなみにpython -vは間違い。
// これはpythonが起動するだけ
// しかもverbose=普段は表示しないような
// 確認メッセージを全部ドカドカ表示するモード
Python 3.6.3
// めでたく3.6発見
# which python
/opt/rh/rh-python36/root/usr/bin/python

// pythonコマンドはここやで?と先程とは違う回答が出た。
// めでたくpython3による乗っ取りが成功している。
# nano /etc/profile.d/python36.sh
// 毎回毎回環境変数読み込みも面倒なので

// ログイン時に自動で3系を有効化する設定ファイルを書く

#!/bin/bash
source /opt/rh/rh-python36/enable
export X_SCLS="`scl enable rh-python36 'echo $X_SCLS'`"
// ctrl + o >> enter >> ctrl + x

次。JDK
ibus-mozcの項目で1.8ガーと書いておいてナンだが
JDKは既にオラクルが1.9を発表済み。
という事で1.8を飛ばして1.9を入れてみる。
ここのHPで紹介されていた方法を真似してみる。
まずオラクルのHP(ここ)で最新版のバージョンその他確認
(ダウンロードページでダウンロードリンクを右クリックして
copy link location押す)
2018年1月19日現在の最新版は
http://download.oracle.com/otn-pub/java/jdk/9.0.4+11/c2514751926b4512b076cc82f959763f/jdk-9.0.4_linux-x64_bin.rpm
...である(注:改行禁止) よって
# curl -LO -H "Cookie: oraclelicense=accept-\
securebackup-cookie" "http://download.oracle.com\
/otn-pub/java/jdk/9.0.4+11\
/c2514751926b4512b076cc82f959763f\
/jdk-9.0.4_linux-x64_bin.rpm"  
// これでダウンロード開始(例の改行取り消しをつけてある)
# java -version
// 最初に入ってるjavaは?
openjdk version "1.8.0_151"

// 1.8である
# rpm -Uvh jdk-9.0.4_linux-x64_bin.rpm 

// インストール開始
# java -version
// バージョン再確認
java version "9.0.4"

// めでたく9が入った
# javac --version
// ついでにコンパイラも確認
javac 9.0.4

// めでたく9が入った

最後 ffmpeg
本家HPでコマンドラインによるインストール方法が
書いてあるから入れればいいと思うよ?(爆w
ちなみにnux-dextopにもffmpegは置いてある

次回はいよいよ美人OLおパンツ鑑賞会

最後はお約束のひと言をオナシャス
「黒幕はキリスト教徒!」


2018年1月18日木曜日

華麗なるLinuxの世界14 〜ソフトウェアインスコ祭り2〜

華麗なるLinuxの世界14 〜ソフトウェアインスコ祭り2〜

では、前回の続き。単純なyumでは入らないソフトを入れる。
その過程でLinuxを取り巻く環境や、Linuxの操作の基本を
実地で学んでいく。
今回入れるのはnvidia driver, firefox quantum, ibus-mozc

まずnvidia driver
これは単純な話でメーカーのサイトから拾うだけ。
メーカーが無償公開しているのなら
いっそリポジトリに登録してくれてもいいのでは?
そうなればyumで簡単に入るのだが?という話ではある。
しかしそこが例のフリーソフトの問題だ。
「無料で提供されたからといって、
それがフリーソフトとは限らない。
ソースコード公開や改変、再配布等の自由が認められなければ
真のフリーソフトではない。
我々はソレスタルビーイング、いや、間違えた
我々は真のフリーソフトを推進する者。
プロプライエタリソフトの支配に異議を唱える私設武装組織」
これがredhat/fedora/centosのスタンスだ。
「真のフリー(ソフト)」の反対が「プロプライエタリ」
例えばwindowsなんかは典型的なプロプライエタリだ。

実際の作業内容は単純。
まずnvidiaのドライバのダウンロードページ(ここ)を開く。
nvidiaみたいな大手のメーカーは製品だって大量に作っている。
もちろんドライバだって大量にある。
たったひとつのドライバで過去から現在までの
何十、何百種類の製品をフルに機能させられるドライバなんか
作れるわけがない。
例えばnvidiaは1993年創業。90年代の時点で
2017年や2018年の製品がどうなるか100%読むのは不可能。
自社製品だけならまだしも、他社の製品、
例えばwindowsや、ディスプレイや、CPU等、
そういうものも含めて90年代の時点で
2017年、2018年の最新モデルの最新機能までは予測不能。
だから新機能、新製品が発表される度に
新ドライバを開発するのに決まっている。
当然、その都度、その都度、開発していれば、
ドライバだって大量に蓄積される。 
そこで沢山あるドライバーのうち、どれをダウンロードするのか
選択する必要性が出る。
今回の場合はチップセットがGT1030
製品のタイプ=GeForce
製品のシリーズ=Geforce 10 Series
製品ファミリ=GeForce GT 1030
オペレーティングシステム=Linux 64 bit
言語=Japanese 
以上を選択したら検索を押す。次の画面でダウンロードできる。

注目はlinux対応のドライバがちゃんと開発されているという所。
「すべてのオペレーティングシステムを表示する」を選ぶと
SolarisやFreeBSDのドライバすら開発されている。
Linuxと言えばメーカーから「いらん子」扱いされている
陰キャの代表みたいなイメージではなかろうか?
しかし、そんな昔のイメージにしがみついている間に
世間はどんどん先を行っていると自覚した方がいい。

たとえばLinuxと言えば「最新の3Dゲームができない」
という常識も崩壊しつつある。
ゲームのプラットフォームとして有名なSteamでは
Linux対応のゲームが次々と公開されている。
10年前の常識だけでドヤ顔していたら
そのうち「老害」と陰口を叩かれるから気を付けた方がいい。
参考(リンク) Steamがlinuxに正式対応したのは
2013年2月の話。もう5年も前の話だ。 

さて、ではダウンロードできたドライバのインストールを開始。
# yum update
# reboot

// 過去記事の段階で既にupdateは済んでいるはず
// "念の為"にupdateするという意味
# yum install kernel-devel-$(uname -r) gcc

// 作業に必要なブツをダウンロード・インストールしている
# echo 'blacklist nouveau' >> /etc/modprobe.d/blacklist.conf
# dracut /boot/initramfs-$(uname -r).img $(uname -r) --force
// これからプロプライエタリドライバを入れるに際して
// ドライバの競合を防ぐ為にヌーボードライバを無効化する
// ヌーボードライバとはcentos/fedoraが標準搭載しているもの
# systemctl disable gdm
// gdm=gnome display managerの無効化
# reboot

// この状態で再起動するともちろんCUIで立ち上がる
// つまり以下の作業はコマンドラインで行う必要がある
// gnome標準ではユーザー名が画面に表示されて
// enterを押せばPW入力画面になるはずだ
// しかしコマンドラインのログインはまずはユーザー名入力から
// 自分自身で手打ちする事になる。
// もちろん当ブログをブラウザで見ながら作業はできない。
// 以下の4行はメモしておくかスマホで見ながら行う事になる
# bash NVIDIA-Linux-x86_64-352.30.run
# nvidia-xconfig
# systemctl enable gdm
# reboot 

// ドライバのバージョンは不定期に更新されるので
// 単純にコピペするとエラーになる可能性あり
// 再起動後はパッと見は通常の起動のようだが
// GPUのドライバが動いている
// application >> other >> nvidia xserver settingsで
// GPUの状況等見る事もできるようになっている 

次。firefox quantum with adobe flash
centosにも最初からfirefoxは入っている。
しかしバージョンが古い(52.2.0
# yum updateを行ったとしても入るのが52.6.0-1だ
(2018年2月5日時点)
一方firefoxはバージョン57以降quantumと称している。
「firefox始まって以来の大改革」と言われる最新版だ。
是非とも入れたいではないか。

参考(リンク):firefoxを作っているmozillaのブログの
クアンタム紹介記事
(Introducing the New Firefox: Firefox Quantum)
この中に
It’s by far the biggest update we’ve had since we launched Firefox 1.0 in 2004
という表現が出てくる。

まずはここ(リンク)で最新版のfirefoxのバージョン確認
また、途中で旧版firefoxを削除する関係上
firefoxのアイコンが欲しくなる。
適当に画像検索でもしてfirefox用の画像を拾っておく
今回は仮に拾った画像の名前がfirefox.pngであると仮定する。
$ cd /opt
$ su
# wget https://download-installer.cdn.mozilla.net\

/pub/firefox/releases/57.0.4/linux-x86_64/en-\
US/firefox-57.0.4.tar.bz2
// wgetで最新版のfirefoxを拾う
# tar xfj firefox-57.0.4.tar.bz2

// 解凍
# exit

// ルート権限から一般ユーザーに戻る
$ /opt/firefox/firefox

// 最新版のfirefoxが起動する事を確認
// 但し旧版が起動中はこのコマンドを使っても旧版が立ち上がる
// 逆に新版(57.0.4)が起動中は上のapplicationメニューから

// 立ち上げても新版が立ち上がる
// とりあえずはfirefoxのウィンドウを全部閉じてから
// このコマンドで最新版が立ち上がるという確認をする
$ cd /usr/share/applications/
$ su
# cp firefox.desktop firefox-quantum.desktop
# nano firefox-quantum.desktop

Name=Firefox Quantum Web Browser
Exec=/opt/firefox/firefox %u

// 上記の2行を修正する。ctrl + o >> enter >> ctrl + x
// 以上の作業でapplications >> internetの中に

// firefox quantumが出るようになる
# yum remove firefox

// 旧版削除
# cp firefox.png /usr/share/applications/
// firefox.pngを/usr/share/applicationsにコピー
# cd /usr/share/applications/
# nano firefox-quantum.desktop

// Icon=のところ書きなおす

//  ./firefox.pngはダメ ちゃんとフルパスで書く
// これでfirefoxインストール完了。flashは入っていない。
// しかしニコニコ動画もyoutubeも見られる。
// とは言え、東京電力の福一ライブカメラ(ここ)等
// flashが無いとエラーになる時代遅れのHPもいまだ実在する。
// そこで、以下、このfirefox quantumにflashを入れる。 
// 実はadobe flash以外にもpepper flash等
// 少し違うflashも存在する。今回入れるのはadobe flash

まずadobe本家(ここ)でflashをダウンロードする。
ブラウザからダウンロードしてもいいしCLIなら以下のように。
$ cd // homeに移動
$ wget https://fpdownload.adobe.com/get/flashplayer\
/pdc/28.0.0.137/flash_player_npapi_\
linux.x86_64.tar.gz
// コツは.tar.gzを落とす事
// yumやrpmもあるがこれはインストールしても無反応
// エラーが出ることもなく、インストールできるのに
// 肝心のHPの表示がflash無しの時と何も変わらないので
// 何が悪いのか不明 面倒臭いから.tar.gzで入れるのが早い。
$ tar -zxvf flash_player_npapi_linux.x86_64.tar.gz
$ cd flash_player_npapi_linux.x86_64
$ su
# cp libflashplayer.so /usr/lib/mozilla/plugins
// "libflashplayer.so"を"/usr/lib/mozilla/plugins"にコピー
// これ以降firefoxでalt押す >> 上のtools >> 
// add-ons >> pluginsにflashが出てくるので
// 右の方のalways activate等を選べばよい 
これでフクイチライブカメラ監視作業も捗る。 

次。ibus-mozc
過去記事でソースコード修正の方法については紹介した。
(華麗なるlinuxの世界8)
しかしこの方法をcentosで行うには問題がある。
どうせ当ブログの読者でも実際に試した人など皆無だろう。
だから私以外何が問題なのか誰も気付いていないだろう(爆w)

ぐぐればcentos7にibus-mozcを入れる方法というのは
あちこちのHPに記載がある。
以前紹介したのとソックリなやり方だ。たとえばここ(リンク) 
だがこの方法はダメなやり方だ。

# yum install protobuf
# yum localinstall zinnia-0.06-16.fc19.x86_64.rpm
# yum install zinnia

// ここが問題あり。epelからver.0.06-22.el7が拾えるが
// こいつが曲者。これは新しするせいで
// 次に必要になるzinnia-tomoeがインストール不可になる。
// では先程のリンクにも紹介されている通り
// zinnia-0.06-16を使えばいいのでは?というと
// 今度はjava-1.8.0-openjdkが入らなくなる。
// openjdkの依存関係でzinnia0.06-22.el7が
// 要求されるのが原因
// 0.06-16 → openjdkが入らなくなる
// 0.06-22 → ibus-mozcが入らなくなる

// ではopenjdkを1.7か1.6で諦めれば?というのもひとつの手だ
// しかしそれでも問題が全面解決はしない。この先は未検証だが
// このソースコード改変版ibus-mozcを使っていると
// たまにコピペができない事態が発生する
// どうも何かがフリーズしているくさいが
// 完全に文字入力を受け付けなくなる訳でもなくて
// 一体何が悪いのか不明
// "たまに"しか起きない症状なので
// そもそも特定の原因があるのかどうかすら検証しにくい

今回は以上の問題をまるっと解決する
ミラコーな方法を紹介したい。
元々はここのブログで紹介されていた方法だ。
ソースをちょいといじってrpmを作り直すという
基本方針は同じだが実際の作業内容は結構違う。

$ wget http://ftp.iij.ad.jp/pub/linux/Fedora/archive\

/fedora/linux/releases/19/Everything/source/SRPMS\
/m/mozc-1.10.1390.102-1.fc19.src.rpm
// fedora19用のmozcのソースを拾う
# yum install openssl-devel protobuf-devel qt-devel \

ibus-devel emacs
// 必要なもののインスコ
# yum install libxcb-devel zlib-devel glib2-devel \

gtk2-devel
// これらも必要だが私の環境ではインスコ済みと出た
# yum install --enablerepo=epel zinnia-devel gyp \

xemacs xemacs-packages-extra
// 以上4つはepelで拾える
# rpm -ivh mozc-1.10.1390.102-1.fc19.src.rpm
// SRPMインスコ

$ cd ~/rpmbuild/SPECS/
$ nano mozc.spec

Requires: zinnia-tomoe // これ削除
Requires: zinnia-tomoe-ja // これ追加
Requires: zinnia-tomoe-zh_CN // これ追加

# rpmbuild -ba mozc.spec

//  数分かかるはず + exit 0 と出たら終了
# yum install --enablerepo=epel protobuf zinnia \
zinnia-tomoe-ja zinnia-tomoe-zh_CN
# cd ../RPMS/x86_64/

// 上のリンクには書いていないがこのcd...は必須

// これをやらないとNo such file or directoryのエラーで止まる
# rpm -ivh mozc-1.10.1390.102-1.el7.centos.x86_64.rpm
# rpm -ivh ibus-mozc-1.10.1390.102-1.el7.centos.x86_64.rpm

(一旦PC再起動)
settings >> regison & languageで追加して終了

最後はお約束のひと言をオナシャス
「黒幕はキリスト教徒!」