さて、いまだ「うぃんどうず」とかいう
ゴミOSからのアクセスが後を絶たない当ブログだが(苦笑
忘れた頃に華麗なるlinuxの世界のパート8を書きたい。
今回は一気にレベルを上げて中級者向けの記事を書く。
linuxそのものを含むフリーソフトの特徴のひとつは
改変ができるという事だ。
linuxの世界はうぃんどうずのボンクラの世界とは違う。
うぃんどうずに不平不満は人一倍のくせに
結局何もしない、できない、バカどもとは違う。
linuxの世界では文句があるなら自分で作ってしまうという
荒業が許される。
ソフトが無いのなら自分で作ればいいのに♥
(某マリー=アントワネット)
もちろん、ゼロから作るのは時間も手間もかかって大変だ。
最初は、既存のソフトを部分的に改変するのがよいかと思う。
(ここにおいて、"プログラミングぐらいwinでもできますけど?"
という反論は一気にトーンダウンする。
既存のソフトのパクリ上等というオープンソースの世界と
裁判覚悟でなければパクリなんかできないwinの世界
初心者にやさしいのはどちらか?)
その過程で開発ツールやソースコードの取扱いを勉強すれば
将来的なステップアップに役立つはずだ。
今回はibus-mozcを取り上げる。
まずはこれのどこに不満があるか?という問題点を書く。
私自身はUS配列のキーボードを使っている。
この条件でibus-mozcを使うと困る事がある。
入力をibus-mozcに切替えると最初は「直接入力」になる。
これは単に半角英数を打つのと同じだ。
日本語を入力しようと思った
↓
だからibus-mozcに切り替えた(キーボードのsuper + space)
↓
しかし英語入力のままである
↓
切り替えた意味ねえじゃん!
という問題だ。
どうもJISキーボードを使う場合だとまた違う対応があるようだが
私のようなUSキーボードの場合は、この後に
マウスを持つ
↓
画面右上の「A」の所をクリック
↓
input modeをクリック
↓
hiraganaをクリック
↓
準備おk
ここまでやって初めて日本語が打てる。これは邪魔くさい。
文字入力はキーボードで行う作業だ。
だったらキーボード操作だけで文字入力ができたっていいはずだ。
それなのにマウスで3箇所もクリックするのは馬鹿らしい。
(注意 私はlinuxは基本的に英語でインストールしている
日本語でインストールすると表記が違うかもしれない)
日本語を入力しようと思った
↓
(1)だからibus-mozcに切り替えた(キーボードのsuper + space)
↓
(2)マウスを持って
↓
(3)画面右上の「A」の所をクリック
↓
(4)input modeをクリック
↓
(5)hiraganaをクリック
↓
準備おk
・・・上記の5段階が
日本語を入力しようと思った
↓
(1)だからibus-mozcに切り替えた(キーボードのsuper + space)
↓
準備おk
・・・1段階になったらいいよね?という話だ。
通常のibus-mozcの3倍以上の速度で準備が済めば
シャア大佐にも勝てるかもしれない
もしくはトランザム
でなければ人類の未来ガー イノベイターガー
元々この記事はある人のブログ記事を元ネタにしている。
しかし2017年8月時点でそのブログそのものが削除されている。
しかも元記事自体、内容が古くなってしまっている。
(記事内容そのものはコピペで保存してある)
「古い」の具体的内容は、元記事の公開後に、
ibus-mozcがバージョンアップされた事が原因。
ibus-mozcのソースコードが変わってしまっている。
だから「○○行目の○○を、○○に修正」という
肝心要の内容が違ってきてしまっている。
もうひとつは、fedoraがyumからdnfへ移行したのが原因。
yumで書いてある箇所をdnfに直さないといけない。
だから私自身がfedora26で実際に検証した結果を踏まえて
最新版に修正した情報を公開する事に意味はあると思う。
では、早速、その新手順を解説しよう
想定する環境はfedora 26 64bit gnome版
尚、fedora 26はインストール直後から日本語が入力できる。
設定画面で"japanese (kana kanji)"を選べば良い。
settings -> region&language -> input sources -> 「+」
だからインストール直後で、
まだ、ibus-mozcの修正作業が終わっていない段階で
何かググりたい事があっても日本語は使える。
しかし、
「え?じゃあ、そもそもibus-mozcいらなくね?」
という事にはならない。
"japanese (kana kanji)"では漢字変換がバカなので
うぃんどうず並みに誤変換を連発する。
だからibus-mozcを使いたい。
尚、"input sources"の、"japanese"は違う。これは別物。
これはキーボード配列がJISになるだけで日本語入力はできない。
では、以下に作業内容を解説付きで書く。
基本的に青字の所をコピペすればいい。
バージョンの数字等細かい所が変わる事はよくあるので
エラーが出るようなら解説部分でも見て
「これは何の作業をしているのか?」を考えれば
どうにかなるはず。
$ su // 管理者権限取得
# dnf update // とりあえずアップデート
この後、普段の私はibus-mozcよりも先に色々インストールする。
例えばclangとかvlcとかその他多数。
その時にrpmfusionが必須。参考リンク
最近unitedrpmsもいいかなあと悩み中。
ひとつにはunitedrpmsを入れるとunrarが簡単に入るから。
しかしrpmfusionとunitedrpmsは相性が悪いかもと
指摘するHPがある。参考リンク
一体何の話だろう?と見てみるとこのへんの事みたい。
新版が出た時のアップグレードに問題が出たらしいが
本当にrpmfusionとunitedrpmsの共存が悪いのかどうかは
ブログの筆者自身ちゃんと調べてはいない。
OSのアップグレードってべつにfedoraに限らず
winでも評判悪いので、この記事がどこまで信用できるのか不明。
私がrpmfusionとunitedrpmsを両方入れた感じでは
一応動く。即座に不具合が出るわけではなさそう。
# dnf groupinstall -y development-tools gcc-c++ rpm-build
// 開発ツールインスコ
# exit // 一般ユーザーにもどる
$ cd ~ // ホームに戻る(べつにこれは必須ではない)
$ dnf download --source ibus-mozc
// これはyum時代は
// yumdownloader --source ibus-mozc
// と打っていた内容。ソースをダウソしている。
$ rpm -ivh mozc* //rpmインスコ
// ここで下記のような警告が大量に出るが全部放置する。
// warning: user mockbuild does not exist - using root
// warning: group mockbuild does not exist - using root
// 次に必要なもの=依存関係を準備する
// 依存関係というのは
//「風呂を沸かすなら、まずは湯船に水貯めなきゃダメだろ?」
//「目玉焼き作りたいならフライパンぐらい買ってこいよ」
// みたいなもの
// 直接的な目的とは別物であったとしても
// 準備として必要なものが依存関係。
// ちなみにここまでの手順が済んでいれば
~/rpmbuild/SPECS/mozc.spec
// ↑ここに依存関係の記述がある。
// Requires:xxx等と書いてあるのがソレだ。
// しかし、1個1個手作業で拾い集めなくても一括ダウソができる。
# su // また管理者になった
# dnf builddep mozc-2.20.2677.102-1.fc26.src.rpm
// これで依存関係が一括ダウソされる
// yum時代にはyum-builddep mozc-2.20.2677.102-1.fc26.src.rpm
// と書いたであろう内容だ。
// dnf移行済みのfedora26ではyum-builddepはエラーが出る
// bash: yum-builddep: command not found...
// 先程のyumdownloaderもそうだがdnf移行にしてから
// fedoraのコマンドが色々変わっている。
// 勿論、これは将来的にcentosがdnf移行するという意味もあるので
// https://fedoraproject.org/wiki/Yum_to_DNF_Cheatsheet
// こういう所↑などを参照しておくのがよい
# exit // 一般ユーザーに戻る
$ cd ~/rpmbuild/SPECS
$ rpmbuild -bp mozc.spec
// これでソース展開&パッチ適用&適用済みソースが
// ~/rpmbuild/BUILD/mozc-2.20.2677.102/ 以下に展開。
// 最後に「+ exit 0」が表示されれば正常終了
$ cd ~/rpmbuild/BUILD/
$ cp -r mozc-2.20.2677.102/ mozc-2.20.2677.102.org/
// オリジナルのソースを保存
$ cd ~/rpmbuild/BUILD/mozc-2.20.2677.102
$ nano ./unix/ibus/property_handler.cc
// ここからソース改変 下記のグレー背景部分がソース。
// 編集に使うのはnanoに限らずvimでもemacsでも何でもいい
// Some users expect that Mozc is turned off by default on IBus 1.5.0 and later.
// https://github.com/google/mozc/issues/201
// On IBus 1.4.x, IBus expects that an IME should always be turned on and
// IME on/off keys are handled by IBus itself rather than each IME.
#if IBUS_CHECK_VERSION(1, 5, 0)
const bool kActivatedOnLaunch = true;
// 83行目のここをtrueにする
#else
const bool kActivatedOnLaunch = true;
// ここは元々true
#endif // IBus>=1.5.0
$ cd ~/rpmbuild/BUILD/
$ diff -aurN mozc-2.20.2677.102.org mozc-2.20.2677.102 > hiragana.patch
// 差分パッチの作成
// これを作らないとビルドの過程で勝手にソースが元に戻る
// 名前はなんでもいい。unko.patchでもgachi-kgb.patchでもいい
// ただ、後の作業で必要になる名前なので
// 最低限、名前を覚えておくこと
$ mv hiragana.patch ~/rpmbuild/SOURCES
// 先程のパッチを移動
$ cd ~/rpmbuild/SPECS
$ nano mozc.spec
// 再度ソースの編集
# Public Domain
Source2: http://www.post.japanpost.jp/zipcode/dl/kogaki/zip/ken_all.zip
Source3: http://www.post.japanpost.jp/zipcode/dl/jigyosyo/zip/jigyosyo.zip
Source4: ibus-setup-mozc-jp.desktop
Patch0: mozc-build-ninja.patch
## to avoid undefined symbols with clang.
Patch1: mozc-build-gcc.patch
Patch2: mozc-build-verbosely.patch
Patch3: mozc-build-id.patch
Patch10: hiragana.patch
// 51行目にこれ(↑)追加 Patch10の数字は何でもいい
// 他(Patch1/Patch2/Patch3)と重複してなけりゃおk
(ソース中略)
%prep
%setup -q -c -n %{name}-%{version} -a 2 -a 3
%patch0 -p1 -b .0-ninja
#%%patch1 -p1 -b .1-gcc
%patch2 -p1 -b .2-verbose
%patch3 -p1 -b .3-build-id
%patch10 -p1
// 96行目にこれ(↑)追加
// ここも何でもいい。但し、なんでもいいと言っても
// 51行目と一致はさせること
参考 http://d.hatena.ne.jp/cactusman/20080315/p1
// rpmbuild -bb コマンドでソースをビルドして
// Binary RPM を作成するが、ビルド中に
// "/usr/lib64/qt-3.3/bin/rcc"を実行しようとして
// "No such file or directory"が出る。
// その対策として"/usr/bin/rcc"を参照するよう事前に環境変数を操作
$ export QTDIR= QTINC= QTLIB=
$ PATH=/usr/bin:$PATH
$ cd ~/rpmbuild/SPECS
$ rpmbuild -bb mozc.spec
// ビルド実行。最後に"+ exit 0"が出れば正常終了
# rpm -evh --nodeps mozc ibus-mozc
// 古いibus-mozc削除
// もちろんこれはソース改変無しの、
// ノーマルibus-mozcをインスコしていた場合のみに必要な作業
# cd ~/rpmbuild/RPMS/x86_64
# dnf install mozc-2.20.2677.102-1.fc26.x86_64.rpm ibus-mozc-2.20.2677.102-1.fc26.x86_64.rpm
// dnf installはいんたーねっつからダウソする時以外でも使える。
// 今回のケースではローカルでビルドされた.rpmを
// インスコしている。yumでは"yum localinstall"していた。
// ちなみに"yum localinstall"をdnfでどう書くんだろう?
// とぐぐるとここが見つかる
// Please implement "yum localinstall" feture to dnf
// dnfに「yum localinstall」の機能をつけてください
// という2013年4月のbugzilla記事だ
// ここでAles Kozumplikを名乗る人物が
// This was the reason why I removed localinstall.
// と言い出している。
// 「ええ、俺様がlocalinstallを消しましたけどそれが何か?」
// と平然と語るこの人物。何者?と思って調べると
// 実はredhatの社員でdnfを書いた張本人。
// ガチの「中の人」だったりするw
再起動してsetting -> region&languageで選び直しして終了。
最後はお約束のひと言をオナシャス
「黒幕はキリスト教徒!」
0 件のコメント:
コメントを投稿