2019年10月26日土曜日

馬鹿の道

おそらく誰も使っていないのだろう。
数年前から、シンプルで軽いテキストエディタとして、medit(http://mooedit.sourceforge.net/)を使っている。
Ubuntuのパッケージで言うとこれだ。 以前から、時々日本語入力の最中に入力の確定ができなくなることがあったのだが、6月にUbuntu18.04に入れ替えてから、特にその現象が出やすくなった。

あえて18.04のインストールを1年待つのは、不具合の多くが解決されているだろうと期待しての行動だ。
しかし、それでも解決されていない。
おそらく解決を望む人がいないか、気にする人がいないのだろう。

こんな記事は誰も読まないだろうと思うが、meditで日本語入力ができるように改造(修正?)する方法を紹介する。
現象の原因は、キー入力ルーチンにgtk_text_view_im_context_filter_keypress ()が足りていないのだ。
meditのソースパッケージ内の場所で言うと、medit-1.2.0/moo/mooedit/mootextview-input.c 内の以下の部分、赤文字で示した部分を追加する。
:
1243     moo_accel_translate_event (widget, event, &keyval, &mods);
1244 
1245     if (keyval == GDK_KP_Enter || keyval == GDK_Return)
1246     {
1247         if (gtk_text_view_im_context_filter_keypress(text_view,event))
1248             return TRUE;
1249         gtk_text_buffer_begin_user_action (buffer);
1250         handled = handle_enter (view, event);
1251         gtk_text_buffer_end_user_action (buffer);
1252     }
:
ソース修正後に、dchとdpkg-buildpackageでバイナリパッケージを作って、インストールしなおせばいい。
数カ月使っていて、明確な問題はない(BSキーに対しても行ったほうが良いかもと思うが)。
とはいえ、本家の活動もほとんど無いようだ。いまどきgtk+2だし、仕方ない。
放置され続けていたので、すでに「使い物にならない!」って逃げ出してしまった人も多いだろう。
仮にこれを修正できたとしても、喜ぶ人はいないのだろうな。

NemoでRabbitVCSを使ったりfbtermでw3mを使ったり、本流ではないことばかりしている。
しかし、これこそ、馬鹿の道。

2019年10月25日金曜日

Ubuntu 18.04 で無理やりNemo RabbitVCS #2

6月に書いたこの記事にしたがってRabbitVCSをインストールした場合、一部の機能が動かない。バージョンが微妙に違うものを無理やりインストールしたためだろう。

記事を書いた後で気がついて、自分では別の方法を使って、再度インストールし直した。
とはいえ、UbuntuでNemoを使う人はマイナーだろうし、バージョン管理にRabbitVCSを使う人も多くないだろう(多くはコマンドラインだろう)から、アクセスは少ないだろうと思っていたので、放置していた。
しかし、最近になってじわじわアクセス数が伸びてきた。
一部の機能が動かない方法のまま放置するのもどうかと思って、新しい方法をここに書く。

新しい方法と言っても、Ubuntuのオフィシャルではない。
様々な事情があるようだが、Ubuntuには Nemo用RabbitVCSパッケージ は無いので、Ubuntuパッケージ管理から離れてなんとかする必要がある。
そのため結局、「無理やり」手法になる。

手動でインストールするために、まず、最新のRabbitVCSを得よう。
RabbitVCSを検索エンジンで検索すると、最初に出てくるのは http://rabbitvcs.orgだろう。(あえてハイパーリンクにしません)
しかし、このページを見ると、2017年あたりから更新が止まっているように見える。

実は、新しいページがgithubに作られている。The new home of rabbitvcs

このページで紹介されている方法に従って(いくつか変更が必要)、インストールするとNemoでRabbitVCSが使えるようになる。

まず最初に現在インストールされているRabbitVCS関連全てを削除する。
sudo apt purge 'rabbitvcs*'
インストールされていないものは削除できないとか色々表示されるけど、入っているものが削除されれはいいので、'Y'を答えて削除してしまおう。
前回の無理やりインストールで書き込んだ /usr/share/nemo-python/extensions/RabbitVCS.py は、後から上書きするので、放置しておいて良い。

次に必要なものにリストされているものをインストールする。
Debian系のコマンドライン例も書かれているが、python-gtkspell, tkinter, python-gtk3 が無いと言ってくる。
それぞれについて調べると、python-gtkspell は python-gtkspellcheck で、kinter は python3-tk でいいようだ。
python-gtk3 は、その情報も見つからなかったが、なんとなく python3-tk がカバーしているように思うので無視する(名前も似ているし)。
ということで、以下のようなコマンドで必要なものを入れることになる。
sudo apt-get install python-configobj python-gobject python-gtkspellcheck python-svn subversion python-dulwich python-pygments git meld python3-tk

続いて、ダウンロードおよびインストールをおこなう。
ダウンロードはgit cloneで行っておけば、git pullで更新できる(RabbitVCSで更新してもいいか)。
任意のディレクトリに移動して、以下を実行する。
git clone https://github.com/rabbitvcs/rabbitvcs.git
rabbitvcsというディレクトリ(ローカルリポジトリ)ができるので、その中に移動して、手動インストールコマンドを実行する。
sudo python setup.py install --install-layout=deb
ここまで来たら、以降の作業はクライアント(ファイルマネージャ)毎に異なる。
Nemoの場合は、https://github.com/rabbitvcs/rabbitvcs/tree/master/clients/nemoの説明に従う。
Nemoの場合に必要となるものがいくつかある。おそらくすでにインストールされていると思うが、それらをインストールしておく。
sudo apt install nemo-python python-dbus

ダウンロードしたrabbitvcsの中の、clients/nemo/RabbitVCS.py をコピーする(全ユーザで使う場合)。
sudo cp clients/nemo/RabbitVCS.py /usr/share/nemo-python/extensions

どちらの場合でも、python/python-extensionsフォルダを作る必要があるかもしれない的なことが書いてあるが、意味がわからないし、「かもしれない」ので無視する。
(コピーの前にコピー先のディレクトリを作っておけって言っているのかな?)

最後に、nemoを再起動する。
nemo -q
pgrep -f service.py | xargs kill
nohup nemo > /dev/null &
うまくいったら、RabbitVCSが動くようになる。
今の所、問題は無い。

無理やりインストールなので、やっぱり自己責任で。
すなわち、更新のチェックや、RabbitVCS.pyの入れ替えは、自分でやらなければならない。
aptはやってくれないし、私も責任をとらない。

2020.02.22 追記
VirtualBoxが動かないときがある。
/usr/share/nemo-python/extensions/RabbitVCS.py をコピーした時、そのディレクトリやそのファイルの所有者がrootになっていないと、VirtualBoxが動かないようだ。前の記事を書いた後で、VirtualBoxが動かなくなることに気がついて、すぐに直していた。
今日になって、母艦でVirtualBoxを使おとしたら動かなかったので、思い出した。
重要な事をなるべく記事に書こうと思うが、うっかり忘れてしまう。
記事にする前に、ある程度時間をかけて(1カ月ぐらいかな)確認していると、最初にやっていた事を忘れてしまう。特に直接関係ない事は「なんかあったような気がするけど、何だったっけ?」のようになってしまう。
所有者を書き換えるなら、たとえば以下のようにすればいい。
find /usr/share/nemo-python | xargs sudo chown root:root 
実行しようとすると、sudoがパスワードを求めてくるので、パスワードを入力する。
上記は、1つの例だ。自分のやり方でやればいい。
2020.03.01 追記
gitで「ログ表示」をした時、Revision Tableの欄の左端にグラフが出ていないことに気がついた。
Python の Cairo関連のパッケージが足りないようで、以下のようにしてインストールする。
sudo apt install python-cairocffi python-gi-cairo python3-cairocffi python3-gi-cairo
少し入れ過ぎなんだけど、足りないよりは良い。

2020.11.26 追記
最近になってこの記事のアクセスが増えてきた。
他にも足りないパッケージがあったように思うんだけど、時間経過とともにどんどん忘れてしまった。
'nemo -q'で実行中のnemoを全部止めた状態で、あらためてコマンドラインから'nemo'で起動すると、色々エラーが出る。問題のないものも多いが、python系で何か足りないようなら、それらをインストールしていこう。

2023.03.31 追記
先日、git pullして、setup.pyでインストールし直しを試みたら、setuptoolsが無いみたいなエラーになった。
aptで、python-setuptools(python3系ならpython3-setuptools)をインストールしたら動くようになった。

2019年10月11日金曜日

台風19号にも備えよう

先月の台風15号、房総半島方面、横浜方面ではすごいことになった。
台風15号は9/9(月)早朝に関東を通過した。
実はこの日は小潮だった。
また暴風圏が小さく、短時間で通過していったので、高潮被害は限定的だった。

しかし、台風19号のピークである10/13(日)は大潮だ。
海沿いは高潮も考えるべきだ。
しかも、15号よりも19号は何倍も大きい。雨雲は多いし、暴風圏も広い。
大きいため、通過するのにも時間がかかる。長時間雨が降る。
うちは海から離れた「さいたま市」なので高潮の被害はまず無いが、雨だけでもすごいことになるかもしれない。

そういえば先日の15号は、うちの近所を朝の3時頃に通過した。
通過の際、誰かが窓をバンバン叩くような、すごい風が吹いていた。
このとき、窓を開けるとガラスが割れたり、屋根が吹き飛んだりするらしい。
木造一軒家の場合、窓から強風が吹き込むと、屋根が飛びやすくなる。
屋根がなくなると、どれだけ酷いことになるかは、房総半島の惨状をみればわかる。
屋根を守るために、窓を守ろう。

高層マンションは、風が巻き込んですごい風になるときがある。
植木鉢やサンダルが飛んできて、窓を割るかもしれない。
ガラス飛散防止フイルムでガラスを補強しておくのが良いが、なければ養生テープをイギリス国旗のように貼っておくと良い。
とはいえ、近所のビバホは、養生テープが売り切れになっていた。
あちこちで売り切れらしい。

関東の南の方、神奈川や千葉は満潮と接近が重なるので、注意が必要だ。
しかし、悪いことばかりではない。
大潮は、潮位が高いばかりではない。引き潮のときは潮位がすごく低いのだ。
満潮は1日2回、おおよそ5時と17時にある。
干潮も1日2回、おおよそ11時と23時にある。
(地形も影響するので、地域差がある)

台風が接近するのが夕方の満潮付近であるものの、ちょうど真夜中ごろ、すなわち干潮時に関東を通過することになる。
東京湾に流れ込む川の水も、捌けやすい(しかし水量がすごいので楽観できないだろう)。
そのため、東京の被害は限定的かもしれない。
(通過後の千葉や茨城も注意が必要かも)

安全バイアスで、自分だけは大丈夫と思っている人が多いらしい。
埼玉最強伝説の里「さいたま市」在住であるが、後から「やっておけばよかった」と思うよりも、最初にやっておいたほうが良い。
そもそも浦和のあたりは、関東大震災の後、東京から移住してきた人が多い街だ。
災害に対する高い意識があるため、最強伝説も生まれたのかもしれない。
あ、掃除機のバッテリーもしっかり充電しておこう。

ところで、コロッケを何個買えばいい?

2019.10.13: 追記。
予想よりも数時間早く台風が通過した。

今回は、植木鉢を玄関に退避していたので、実害はなかった。
夕方、暗くなり始めの頃、IKEAで買ったラベンダーの良い香りのロウソクに火を付けた。

(今朝、撮影した)
おっちょこちょいなので、停電で真っ暗になる前に明かりを確保しておこうという考えだった。買ってから数年間まったく使っていなかったので、どんどん使おうという考えもあった。

「防災さいたま」から、深夜27時頃「警戒レベル4、直ちに避難」が発令され、まさに「寝耳に水」で少し驚いた。
うちのあたりでは、避難所は「附属中学校」だ。やや離れている。「外が危険な場合は屋内の高いところに...」ともあった。自宅は鉄筋コンクリートの集合住宅だ。停電対策で大量の水を確保していた。ロウソクもまだまだある。掃除機のバッテリーもビンビンだ。
埼玉県川の情報」で、水が引き始めている(水の増え方が鈍化している)ように見えた。
移動よりも自宅待機のほうが安全と判断し、避難所には行かなかった。

ラベンダーの香りは、気を落ち着かせる効果があるらしい。
少し驚いたものの、冷静に対処できたのはラベンダーの香りのおかげだったかもしれない。

個人的には、実害は全く無かったが、全国的に被害が出ている。
手放しでは喜べない。

2019年10月4日金曜日

Libreoffice Drawで多角形を曲線にすると保存できない

たとえば、シルク印刷の絵を書いたりアニメーションを作ったりとか、この回路図までも、Libreoffice Drawで書いている。

先日、あるものを作ろうとまた図を書き始めた。
図を少し書いて保存しようとすると、エラーになって保存できない。
どうも、曲線があると保存ができなくなるように見えた。
今日になって、真剣に調べ始めた。

すると、こんなBugがあるではないか。
Bug 119374 - FILESAVE: Cannot save any file with a bezier curve created from a polygon (Linux-only)
(多角形から作られたベジエ曲線を用いたあらゆるファイルが保存できない)。

Linuxだけで生じるらしい。さらに、普通の(多角形からではない)ベジエ曲線が含まれているだけなら、保存できる。
試しにウチでもやってみたら、まさしくそんな感じだった。
また、Libreoffice 6.0系で発生するが、6.1系では発生しないと書かれている。 ウチのやつを見てみたら、6.0系だった。
どうやらこれが原因のようだ。

6.1で治っているなら、6.0系での修正は行われない可能性が高い。
とはいえ、なんとかしたい。Ubuntu 18.04LTEのパッケージ管理を守りつつ、新しいバージョンをInstallする方法を探した。以下を発見した。
How to Install LibreOffice 6.1 in Ubuntu 18.04, 16.04

2つの方法があり、snapを使う方法と、オフィシャルPPAを使う方法が紹介されている。
同ページでは、オフィシャルPPAを使う方法が推薦されているので、私もオフィシャルPPAを使った。

感単に書くと、まず、ターミナルを開いて、PPAを追加するコマンドを実行する。
sudo add-apt-repository ppa:libreoffice/ppa
パスワードを聞かれたら、パスワードを入力する。

PPAを追加したので、パッケージ管理を更新する。
sudo apt update
ウチの場合は、update後、新しいパッケージが24個が出てきたので、upgradeも行い更新をした。
sudo apt upgrade
これで良いのかなとも思ったが、ここではinstallも行っているので、それに従った。
sudo apt install libreoffice
何気に色々installされた。
何かが足りていなかったのかな?
6.1ではなく、6.3が入った。

試してみると、ベジエ曲線を含んでいても保存できるようになった。
しかし、いつから使えなかったんだろう?

2020/03/27 追記: Libreoffice 6.4にdist-upgradeできなかった
aptで更新をチェックしたら、Libreofficeの新しいのがあると表示された。新しいバージョンのようで、dist-upgrade じゃないと保留されてしまう。
新しいやつでも問題は無いだろうとdist-upgradeしたら、依存関係が解決できずににっちもさっちも行かなくなった。
PPAを使っていると、時々こんな事になるもんだ。
解決するためには、問題を起こした新しいパッケージを削除すればいい。そんなことは言われなくてもわかるだろう。
ところが、1つ1つ消そうとしても、依存関係が問題になって、実行できない。
この場合、その依存物をまとめて一気に削除するしかない。ところが、何がどう依存しているのか解りにくい。
"apt-cache rdepends"で調べることもできるが、インストールしていないものも出たりして、それを選り分けるのも面倒だ。
そのため、たとえば、以下のようにして、エラーメッセージ内から依存物エラーになったパッケージを抽出していく。
最初は、こんなふうに適当に消そうとする。
sudo apt remove libreoffice-base
エラーが出たら(出ているのだが)、
sudo apt remove libreoffice-base | grep "^ [^ ]\+ :" | sed -e "s/ : .*$//g" | sed -e 's/^ \+//g' > xxx.txt
のようにして、エラメッセージ内から、パッケージ名を取り出して、xxx.txtに書く。
今度は書いたものを追加して、削除を試みる。
sudo apt remove libreoffice-base $(< xxx.txt)
それでもエラーになるなら、同じようにパッケージ名を取り出して、xxx.txtに書く。今度は追記で書く。
sudo apt remove libreoffice-base $(< xxx.txt) | grep "^ [^ ]\+ :" | sed -e "s/ : .*$//g" | sed -e 's/^ \+//g' >> xxx.txt
これを何回か繰り返せば、強引に削除できる。
ただし、大事なものも消してしまうかもしれないので、消すものをちゃんとチェックしよう。

ウチの場合は、最終的にxxx.txtは、以下のようになった。
libreoffice
libreoffice-avmedia-backend-gstreamer
libreoffice-base-core
libreoffice-base-drivers
libreoffice-calc
libreoffice-common
libreoffice-core
libreoffice-draw
libreoffice-gnome
libreoffice-gtk3
libreoffice-help-common
libreoffice-help-en-gb
libreoffice-help-en-us
libreoffice-help-ja
libreoffice-impress
libreoffice-java-common
libreoffice-l10n-en-gb
libreoffice-l10n-en-za
libreoffice-l10n-ja
libreoffice-math
libreoffice-nlpsolver
libreoffice-ogltrans
libreoffice-pdfimport
libreoffice-report-builder
libreoffice-report-builder-bin
libreoffice-script-provider-bsh
libreoffice-script-provider-js
libreoffice-script-provider-python
libreoffice-sdbc-firebird
libreoffice-sdbc-mysql
libreoffice-sdbc-postgresql
libreoffice-wiki-publisher
libreoffice-writer
python3-uno
ure
(取得後ソートした)

18.04のデフォルトの Libreoffice 6.0 に戻すとまた曲線が保存できなくなる。
6.0は使えない。そして、6.4はinstallできないので、その途中、例えば6.3を使うことにした。
まず、古いPPAを削除する。これは、update-managerの「他のソフトウエア」タブで、"http://ppa.launchpad.net/libreoffice/ppa/ubuntu bionic main"のチェックを外す。
そして、一旦更新する。これで、そのPPAリポジトリは使われなくなる。

実は、この LibreOffice Freshには、最新版のPPA以外に、6.3(しばらく使っていた)のPPAもある。最新版のPPAは自動的に新しいメジャーリリースになるが、6.3用のものはマイナアップデートだけが行われる。
6.3のPPAのページのやや下の方の Adding this PPA to your system にしたがって、このリポジトリを追加すればいい。
追加後、上記で示したように、Libreofficeをインストールしなおせばいい。

なんか、追記のほうが多いな。

2020/04/01 追記: いつの間にかできるようになったみたい
ノートPCと母艦にInstallしてうまくいっていたので、安心して職場のPCにもLibreOffice6.3をinstallしようとしたら、エラーになってインストールできなかった。
職場ではWindows+Office365なので、すぐに使う予定はない。放置して待つことにした。

母艦のVirtualBox内でFocalを動かして見ている。そっちではLibreOffice6.4が普通に入っていた。
そして、Focalでは、やたらと頻繁にLibreofficeが更新されていた。
もしや、BionicのLibreOffice6.4も更新されているのでは?と思って、リポジトリを再度6.4のものに変更してやってみたら、インストールできた。
ただし、どういうわけか、Libreoffice-writerとLibreoffice-style-elementaryがダウンロードできなかった(混み合っているのかな?)ので、wgetで無理やりダウンロードして、 /ver/cache/apt/archives/の下に置いて、ファイル名を以下のように書き換えて、apt-get installしたら、インストールできた。

Libreoffice-writer:
変更前 libreoffice-writer_6.4.2-0ubuntu0.18.04.3_amd64.deb
変更後 libreoffice-writer_1%3a6.4.2-0ubuntu0.18.04.3_amd64.deb

Libreoffice-style-elementary:
変更前 libreoffice-style-elementary_6.4.2-0ubuntu0.18.04.3_all.deb
変更後 libreoffice-style-elementary_1%3a6.4.2-0ubuntu0.18.04.3_all.deb

こんな書き換えをしなくても、このページで説明されている方法を使って、すんなりできた時もあった。
新型コロナウイルスで、テレワークをしている人も多いだろう。自宅ではWindowsではなくてUbuntu+Libreofficeを使っている人も多いだろう。それでダウンロードできないとなると、すごく困ることになる。
そのせいか、ダウンロードがすごく遅い。
待つことができるなら、しばらく待ってダウンロードするのが良いかもしれない。