2020年11月27日金曜日

Ubuntu の日本語入力って…

VirtualBoxで動かしている Ubuntu Budgie 20.04 の更新をしたら、SystemTray上のiBusのアイコンが表示されなくなった。
直接入力と日本語入力の区別をそのiBusアイコンで行っていたので、なくなると困る。

なぜ表示されなくなったのかと調べてみた。budgie-wmがibus-daemonを'--panel disable'付きで起動するようになっていた。
budgie-vmは、budgie-coreパッケージに入っている。ソースパッケージを入手して、'--panel disable'を外して自分でビルドし直せば良いのだが...。
そもそも最近はiBusで直接入力と日本語入力の切り替えをするのではなく、入力ソースを切り替える方式になりつつある。
実際にはだいぶ前(14.04?16.04?)からその方向になっていた。

apt-get changelogを見ると、
budgie-desktop (10.5.1-6ubuntu0.2) focal; urgency=medium

  * Bug-fix
    Allow non-xkb layouts to appear and chosen in the keyboard applet
    show-non-xkb-layouts.patch (LP: #1902317)
    Display spotify cover-art
    fix-spotify-album-art.patch (LP: #1895720)
    Fix broken chrome-based notifications
    chromium-browser-notifications.patch (LP: #1895697)

 -- David Mohammed <fossfreedom@ubuntu.com>  Fri, 30 Oct 2020 22:14:52 +0000

この1行目のnon-xkbの件は、入力ソースの切換ができるようになったことを示している。
逆に言えば、正常に動作していなかったのだ。
そのため、方向は逆だと解ってはいるものの、使える手法としてiBusでの切り替えを使っていた。

今回使えるようになったのだが、ibus-mozcのデフォルト入力が直接入力なので、入力ソースを英文字入力からibusに切り替えてもデフォルトでは日本語入力にならない。起動後にibusの入力を日本語にしなければならない。
すなわち、ibusの切り替えも必要なのだ。

結局、budgie-wmを改造してSystemTrayにibusアイコンが表示されるようにしてしまった。逆方向の改造だ。
おそらく、正しくないやり方なので、あえてその詳細は書かない。

一体どうするのが正解なのか?

2020年9月22日火曜日

Ubuntu 20.04 で Raspberry Pi 3B のUSBブートを有効にする

以前買った Raspberry Pi 3B で時々遊んでいる。
最初はRaspbianを入れていたが、途中でLubuntuにしていたが、最近では、Ubuntu20.04を使っている。PCでもUbuntuなので、統一しておいたほうが便利だからだ(とはいえ、PCはbionic、RaspberryPiはfocal)。

以前、PCでUSB Bootable Ubuntuを、普通に使っていたことがある。8GBのUSBメモリだったが、毎日使っていると1ヶ月ぐらいでUSBメモリでエラーが出るようになっていた。
リムーバブルメディアの寿命は、基本的にそんなものだ。MicroSDだったとしても、大して変わらない。
しかしながら、SSDは多少事情が異なる。
SSDは頻繁に読み書きする事を前提で設計されているので、寿命が長い。
最近のUSB接続のSSDの容量が、512MBではなく480MBなど少なめの中途半端な容量になっているのは、おそらく代替え領域などを多めに確保しているためだろう(未確認。詳細不明)。
RaspberryPiもUSBポートがあるので、USB接続のSSDが使える。
本格的に使うなら1ヶ月で壊れるものは使いにくい。SSDの方がMicroSDよりもいい。
以前、どこかでRaspberryPi3BでもUSBブートできるという記事を読んでいたので、それをやってみようと思った。

もう一度調べ直すと、おおよそ
  • OTP(One Time Programable)領域の特定のビットをセットする。
  • セットするには、/boot/config.txtの末尾に、"program_usb_boot_mode=1"を書き込んでリブートする。
  • 確認には、vcgencmdコマンドを使う。
ということだ。難しそうな所はない。
過去に調べた時、そのような操作をしたような気もするが、不可逆的なので躊躇していたようにも思う。Raspbianを使っていた頃のことなので、もうだいぶ時間が経っている。記憶があやふやだ。

確認しようとして、Ubuntu20.04で、vcgencmdを起動しようとしたら、動かない。
focal(Ubuntu20.04)には、vcgencmdが入っていないのだ。
ネットで調べると、PPAを設定して入れる方法が見つかったが、focalでは動かない。focal用のものが用意されていないようだ。
OTPの物理アドレスが解ればアクセスできるかと思ってそれを調べたが、この記事の中ぐらいに、以下のような書き込みを見つけた。
That's impossible to do because of the closed source GPU code. 
There's no user API to access any OTP memory.
自分なりに訳すと、
それを行うのは不可能だ。なぜならクローズドソースのGPUコードだからだ。
あらゆるOTPメモリをアクセスするユーザAPIは無い。
直接アクセス可能な物理メモリ空間にあるのではなく、GPU経由でアクセスするメモリに存在しているようだ。これでは読めない。

やはり、なんとしてもvcgencmdを動かさないといけない。
色々調べると、githubでuserlandのソースが管理されている事がわかった。
以下のようにして、gitリポジトリをクローンする。
git clone https://github.com/raspberrypi/userland.git
サブディレクトリ userland/ ができている。
スクリプトのbuildmeを読むと、uname -mの戻り値によっては、セルフビルドするようになっている。ただし、cmakeをインストールする必要がある。
ビルドツール類をまだ入れていないなら、それらもまとめてinstallしてしまおう。
以下のようにする。
sudo apt install cmake build-essential
後はビルドするだけだ。

git cloneでできたサブディレクトリuserland/へ移動して、buildmeを実行する。
cd userland
./buildme
なんだかんだ色々表示されてビルドが終わる。終了後、/opt/vc/以下に様々な生成物がinstallされている。
もちろん念願のvcgencmdも/opt/vc/bin/の下にある。

ビルドはできたが、このままでは、ライブラリパスも実行パスも通っていない。
まずは、ライブラリパスを通す。
ファイル /etc/ld.so.conf.d/00-vmcs.conf を以下の内容で作成する。
/opt/vc/lib
この状態で、"sudo ldconfig"を実行し、ライブラリパスをキャッシュする。
sudo ldconfig
これで、ライブラリパスの設定はおわり。

つづいて、実行パスも通すのだが、vcgencmdはsudo経由で実行しなければならないため、/etc/sudoersファイル内の、Default secure="..."に、"/opt/vc/bin/"を追加する。
また、このファイルは、直接編集できない。"sudo -e /etc/sudoers" で編集する。
結果的にその行はウチでは以下のようになった。
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/opt/vc/bin"
これで、vcgencmdが実行できるはずだ。 以下のようにして、vcgencmdを実行してみたら、
$ sudo vcgencmd otp_dump | grep '^17:'
17:1020000a
うーん。これではUSBブートできない。3020000aでないといけない。
不可逆な変更なので、躊躇していたようだ。
それにしても、たった1bit確認するだけで、細かく色々、どんだけ手間がかかるんだ。

USBブートがセットされてないことが解ったので、セットしよう。
セットするには、/boot/config.txtの末尾に、"program_usb_boot_mode=1"を書き込んでリブートするらしいのだが、Focalでは/boot/config.txtが存在しない。
Raspbianのイメージをダウンロードして調べてみると、MicroSDの第一パーティション(FATフォーマット)のconfig.txtだ。
Focalでそれは/boot/firmware/config.txt だ。
そのため、以下のようにして書き込む。
echo program_usb_boot_mode=1 | sudo tee -a /boot/firmware/config.txt
これで、再起動してOTP領域を確認すると、
$ sudo vcgencmd otp_dump | grep '^17:'
17:3020000a
よしよし。やっとUSBブートのセットができた。

これで全てではない。
ダウンロードしてきたイメージをUSBでブートできるようになったのだが、実際に使うにはもう少し手間がかかる。
1ビット確認して、1ビット書き換えただけで、妙に長くなってしまったので、とりあえず今回はここまで。

つづく。

2020年9月13日日曜日

新しいプリンタを買った

昔から使っているCANON LBP-1310は未だに健在だ。しかしながら、白黒だし、スキャナも欲しかったので、インクジェットを新たに買った。
今回は、EPSON EW-M752T にした。EPSONのプリンタは20年ぶりぐらいだろうか。
エコタンク対応で、ランニングコストが安価になる。古い機械を長く使う人にしてみれば、効果的だし、コンビニのビニール袋すら問題視する時代に合っていると言えよう。

急激なテレワーク化のため、プリンタもまたバカ売れ品薄状態で、先月の末に店頭で注文したのに、届いたのは昨日だった。

届いてから、おもむろにLinuxドライバを探した。
MacのおかげでCUPSが発展し、最近ではLinuxでも簡単にプリンタが使えるようになっていたので、ほとんど気にしていなかったのだが、検索して出てきた「Linuxドライバーダウンロード可能機種一覧」のページをみて愕然とした。

購入したEW-M752Tが、その一覧には無いのだ。

「…やってしまった。」と思ったが、一応ドライバダウンロードへ移動して、ダメ元で検索してみた。
すると、以下のような結果が表示された。

あるじゃん!
しかも、ARM用のパッケージまである。armhf用なので、RaspberryPi 3系で使える。4でもLinuxが32bit版なら使えるだろう。

まずは、PC(amd64)のプリンタドライバセットアップをする。
epson-inkjet-printer-escpr2_1.1.17-1lsb3.2_amd64.deb をダウンロードしてくる。
ダウンロードページの下の方(上記画面の"ESC/P-R Driver 2 (generic driver)"の行の「ダウンロード」をクリックした後で、ソフトウエア使用許諾に同意した後で表示される)に、以下のような事が書いてある。
[Notice]
In order to install these drivers, you need to install LSB package (version 3.2 or later) beforehand.

Ubuntu:
# apt-get install lsb

Fedora:
# yum install lsb

OpenSUSE:
# yast --install lsb
最初の部分には、「これらドライバをインストールするためには、LSBパッケージ(バージョン3.2またはそれ以降)を事前にインストールする必要がある。」と書いてある。このlsbは、"Linux Standard Base"と呼ばれる機能のパッケージらしい。最新のUbuntuでは、これは全機能を提供していないようで、サードパーティプリンタドライバとの互換性のためだけに提供されているもののようだ。
ウチは、Ubuntu 18.04なので、以下のようにしてインストールした。
sudo apt-get install lsb
その後、ダウンロードした epson-inkjet-printer-escpr2_1.1.17-1lsb3.2_amd64.deb を以下のようにインストールする。
sudo dpkg -i epson-inkjet-printer-escpr2_1.1.17-1lsb3.2_amd64.deb
あっさりと終わってしまった。次は何をすれば良いんだ?
よくわからないので、とりあえずcupsのWebI/F(http://localhost:631)で見てみる。
上の方の「管理」をクリックして、「プリンタの追加」ボタンを押すと、「発見されたネットワークプリンター」の中に「EPSON EW-M752T Series (EPSON EW-M752T Series)」がある。

注意:上記画面は、プリンタ登録後にキャプチャしたので、すでに上にプリンタが見えている

ここに見えていれば、後は普通に設定すればプリンタは使えるようになる。

次にスキャナも使えるようにする。
ダウンロードページの一番下の行の"Scanner Driver"、"All-in-one package"と書かれているところの「ダウンロード」をクリックする。
使用許諾が求められ、同意すると、PDFファイルのダウンロードとその下に、"Package Download"リンクが表示される。
PDFファイルは、スキャナドライバのインストール方法が書かれている。
"Package Download"をクリックすると、各ディストリビューション、アーキテクチャ用のtarファイルのダウンロードページが表示される。

うちのUbuntuは18.04のamd64なので、imagescan-bundle-ubuntu-18.04-3.63.0.x64.deb.tar.gz ダウンロードした。
インストールは基本的には、tar.gzファイルを展開して、 展開後にできるディレクトリ内のinstall.shを実行すればいい。
$ tar -xf imagescan-bundle-ubuntu-18.04-3.63.0.x64.deb.tar.gz 

$ cd imagescan-bundle-ubuntu-18.04-3.63.0.x64.deb/

$ sudo ./install.sh
install.shはよくできており、足りないパッケージを自動的に apt-get install するようになっている。

ドライバのインストールはできたが、スキャナは自動検出&認識ではない。
/etc/imagescan/imagescan.conf でIPアドレスを指定する必要がある。
各ネットワーク環境毎にやり方は様々だと思うが、とにかくEW-M752TのIPアドレスを固定化して、そのアドレスを得ておく。
そうして、以下のように /etc/imagescan/imagescan.conf を書き換える。
# /etc/imagescan/imagescan.conf -- Image Scan configuration
# Refer to the documentation for details on the configuration options
# for the software.  Plugins should come with their own documentation
# if they have configuration options.
#
# Lines starting with a # or a ; are comments.  Comments must be on a
# line of their own.  End-of-line comments are not supported.

[devices]

myscanner.udi    = esci:networkscan://192.168.xxx.xxx:1865
myscanner.vendor = Epson
myscanner.model  = EW-M752T
注意:上記 "192.168.xxx.xxx"には、EW-M752T のIPアドレスを指定する。

この状態で、Terminalからimagescanと入力するか、メニューから「グラフィック」-> 「Image Scan」(ウチはGnome session flashback環境)をクリックすると、imagescanというアプリが起動する。
「更新」ボタンをクリックすると、プレビューが表示される。以下は、プリンタについていた「インクボトルガイド」をプレビューした様子。

一瞬、未対応かと冷や汗をかいたが、バッチリじゃん。
最近のLinux環境は良くなったものだ。

さらにarmhfアーキテクチャのドライバまである(まだ試しいていない。将来記事にするかも)。CANONには無かったと思う(最近見てないので詳細不明)が、CANONとEPSONはお互い切磋琢磨しているので、徐々に良くなるだろう。
RaspberryPiも、PCの代わりに使えるぐらいの性能になった。しかし、実際にPCの代わりに使うには、プリンタやスキャナも普通に使える必要がある。
残念なことに、arm64のドライバはまだ提供されて無いようだ。RaspberryPiでも64bitを必要とするようになったのは最近のことだし、MacもARMに移行するらしいので、arm64の環境も徐々に充実するだろう。
期待して待とう。

2020年9月6日日曜日

雲のタイムラプス

台風10号が九州に接近している。
かなり強力な台風なので、関東にも影響が出ている。
晴れたかと思えば、突然雨が降ったり、雷が鳴ったり、不安定だ。

雲が流れていくのを見て、タイムラプスで見てみたいと思って撮影した。

2020年9月6日 12:50頃から、15:38頃までの2時間48分、さいたま市で撮影。
x60倍速再生のため、1分で1時間に相当する。
撮影時に雷も光っていたが、とびとびなので動画では見えない。

2020年8月31日月曜日

台風10号!?

沖縄に台風9号が接近している。
時々発生する猛烈なやつだ。台風に慣れている地域とはいえ、無傷では済まないだろう。

衛星写真上に先週の末頃からそれとは別の雲の塊が、そのはるか東、関東の南南東にあった。
最初は細かい積乱雲の集団だったがそれがまとまって大きな雲になっていった。
大きな塊ではあるが、昨日までは気象庁の天気図で見ても、低気圧らしきものは書き込まれていなかったので、あまり心配していなかった。

大きな塊の雲でも、時々霧散してしまうこともある。
だから、大丈夫だろうと思っていたが、今日の15:00の気象庁の天気図から、熱帯低気圧となった。そして、どんどん成長するらしい。

(上の写真の右下の雲の塊)
この位置でどんどん成長するなら、台風10号も大型で非常に強くなりそうだ。

まだコースがわからない。
しかし、上陸するとなると、これも無傷ではすまないだろう。
せっかく安くなってきた野菜も、また高くなってしまうかもしれない。
明日は、防災の日でもあるから、食料を備蓄しておくのも良い。
備蓄食糧は、後でちゃんと消費するなら無駄にはならない。

どこに上陸するかはまだまだ解らないし、さらには運良く日本の東にそれるかもしれない。
でも、今年は世界中で気象災害が発生している。冬は食糧危機という噂もある。

「用意しておけばよかった」って後悔するくらいなら、備蓄をするほうがいい。

2020/09/02 追記 気象庁から「特別警報級」と表現されるほど警戒されるようになった。
コースに近い地域は早いうちから最大限の対策をしよう。
2020/09/05 追記 いよいよ近づいてきた。どうやら避けられそうにない。
窓が割れて、家に突風が吹き込むと、屋根が飛ぶ。窓を守ることが家を守る。
送電設備が被災して、電源喪失もあり得る。電源なしでも使える明かりを確保しておこう。できれば、冷蔵庫の中身を整理しておこう。

2020年8月23日日曜日

いまさらの電子辞書 #2

前回からの続き。
catdumpでCATALOGSファイルを作成するには、まず、テキストファイル形式のカタログファイルを作成する必要がある。
テキストファイルのカタログファイルは、このページに参考例がある
とはいえ、ただの例なので、自分の辞書CDがどのような構成になっているのかを知る必要がある。

普通にCDを見てみると、ファイルの構成はこのようになっている。
$ tree xxx
xxx
├── README.FreeBSD
├── README.LINUX
├── TRANS.TBL
└── chujiten
    ├── TRANS.TBL
    ├── data
    │   ├── TRANS.TBL
    │   └── honmon
    └── gaiji
        ├── TRANS.TBL
        ├── gai16f00
        ├── gai16h00
        ├── gai24f00
        ├── gai24h00
        ├── gai30f00
        ├── gai30h00
        ├── gai48f00
        └── gai48h00

3 directories, 15 files
(xxxはCDのマウントポイント)

"chujiten/data/honmon"が辞書データそのものだろう。
前回ビルドしたepwutil内にあるbookinfoで見てみると以下のように表示された。
$ bookinfo dict/chujiten/data/honmon 
; 電子ブック/EPWING 書籍管理情報 (generated by bookinfo v1.0)

対象書籍ファイル = dict/chujiten/data/honmon
情報所在ブロック = 1
書籍構成要素数 = 13
予備領域1(書籍種別/保護情報) = 2000H
  書籍種別: 英和辞典
  保護情報: 表示許可, 印刷許可, テキスト引用許可, 図版引用許可,
            カラー図版引用禁止, 動画引用禁止, 大量引用禁止
INDEX情報の取扱法 = 02H (INDEX情報は有効)

 ID 名称                                 先頭 サイズ INDEX情報 予備3/4
*00 本文                              34398  44941           00/0000
*91 前方一致表記形インデックス         4244   4236 .a....... 00/0000
*71 後方一致表記形インデックス            8   4236 .a....... 00/0000
*02 著作権表示                         7      1           00/0000
*01 メニュー                        26941      1           00/0000
 FF 複合検索                          ***   1969           00/0000
 FF 複合検索                          ***  33305           00/0000
 FF 複合検索                          ***  16261           00/0000
 FF 複合検索                          ***      5           00/0000
 FF 複合検索                          ***     23           00/0000
*05 前方一致表記形見出し        26946   3726           00/0000
*07 後方一致表記形見出し        30672   3726           00/0000
 D8 PCM音声                           79339  83391           00/0000

表示方法の初期値情報:
  有効無効フラグ = 01H (初期値情報は有効)
  一覧表表示 = 00H (直接本文表示)
  本文表示法 = 00H (検索結果を項目単位に連続して表示)

書籍ファイルサイズ = 318MB
マーク部分のサイズ = 119MB
文字のサイズと文字のバイト数が合わないので、ズレズレ表示になっているが、読めなくはない。
CDが壊れているかもと思っていたが、辞書データは使えるようだ。

このページの例を参考に、上記情報とディレクトリ構成を元に、catalogs.txtという名前で、以下のようなテキストファイルを作成した。
[Catalog]
FileName   = catalogs
Type       = EPWING1
Books      = 1

[Book]
BookType   = 2000
Title      = "新英和・和英中辞典"
Directory  = "chujiten"
InfoBlock  = 0001
ZenGaiji   = "gai16f00gai24f00gai30f00gai48f00"
HanGaiji   = "gai16h00gai24h00gai30h00gai48h00"
このテキストファイルは、UTF-8で書いている。
ソースコードやMakefileを読めば解るが、Unix系でのcatdumpは、EUC-JPを期待した作りになっている(WindowsではShift_JIS)。
そのためEUC−JPに変換しなければならない。
以下のようにして、変換する。
$ nkf -e catalogs.txt > catalogs.euc
一応、確認。
$ nkf -g catalogs.euc
EUC-JP
よしよし。

これを使ってバイナリのCATALOGSを作成する。
$ catdump -u catalogs.euc CATALOGS

これでカタログファイルはできたけど、相手はCDROMだ。書き込むことはできない。
壊れているとはいえ勝手にコピーしてしまうのも問題だ。
こういうときは、overlayマウント(unionマウントとも言う)してしまおう。

いくつか方法はあるが、以前からoverlayfsを使っているので、それを使う。
デフォルトではoverlayfs用のカーネルモジュールが読み込まれていないので、モジュールを読み込む。
$ sudo modprobe overlay 
つぎに、読み書きディレクトリ、作業ディレクトリ、マウントポイントを用意する。
$ mkdir rw wk dict
そして、overlayマウントする(xxxにCDがマウントされているものとする)。
$ sudo mount -t overlay overlay dict/ -o lowerdir=xxx,upperdir=rw,workdir=wk
これで、dict/を通してxxx/をアクセスでき、書き込みもできるようになる。
dict/へ作成したCATALOGSファイルをコピーする。
$ cp CATALOGS dict/
これで、多くの辞書アプリでアクセス可能になる。
試しに、eblookで見てみよう。以下のようにしてインストールする。
$ sudo apt install eblook
インストール後、overlayマウントしたマウントポイントを指定して起動する。
以下は、英単語"english"をひいたときの様子。
$ eblook dict/
eblook> list
 1. chujiten	新英和・和英中辞典
eblook> select 1
eblook> search english
 1. 37402:692	English
eblook> content english
Invalid entry number: english
eblook> content 1
<gaiji=ha123>En・glish /<gaiji=ha137><gaiji=ha22f>gl<gaiji=ha228><gaiji=ha22d>/→<gaiji=za339>
<gaiji=za34e><gaiji=za323>
1 イングランドの; 《俗に》 イギリスの,英国の.
2 イングランド人の; 《俗に》 イギリス人の,英国人の.
3 英語の.<reference>→<gaiji=za33a></reference=53513:1184>
<gaiji=za34e><gaiji=za321>
1 <gaiji=za32f> 英語.<reference>→<gaiji=za33a></reference=53513:1284>
2 [the 〜; 複数扱い]
a イングランド人; 《俗に》 イギリス人,英国人 (cf. the Scots,the Welsh,the Irish).
b 英軍.
<gaiji=ha126>古期英語 ‘of the race of Angles' の意; ⇒ENGLAND<gaiji=ha127>
<prev><reference><gaiji=ha123>En・gland /<gaiji=ha137><gaiji=ha22f>gl<gaiji=ha226>nd/→<gaiji=za339></reference=37401:1782></prev>
<next><reference><gaiji=ha155>nglish br<gaiji=ha168>akfast</reference=37402:1602></next>
eblook> quit
外字が<gaiji=xxxxx>のように表示されて読みにくいが、動作しているのはわかる。
GUIアプリのebviewで表示すると、発音記号その他外字も表示される。

外字の大きさが、文字と合っていないのが少し気になる…。
メニューから、ツール->オプションで、「設定項目」から「外部プログラム」を選んで、「音声再生プログラム」を"aplay %f"にすると、音声も再生できるようになる。

これでネットにつながらなくても、電子辞書が使える。

いまさらの電子辞書#1

何故?
先日、CDを整理していたら、Stingの"Ten Summoner's Tales"のCDの中から、電子辞書のCDが出てきた。
宮崎生まれの私にとっては、Stingは SEAGAIA のこけら落としに来てくれた特別なアーチストだ。

十数年前はネット上に電子辞書は少なかったし、PCもネットも遅く、広告の表示がひどい足かせとなり、実用的ではなかった。紙の辞書も使っていたが、電子辞書も売られるようになっていたので、それを使うようになった。
しかし...、何故StingのCDのケースに入っていたのだろう?

その当時、Linuxで、この辞書CDを使うのは一苦労だった事を、だんだん思い出した。
今は、ネット上に電子辞書がたくさんある。それどころか、電子翻訳も発達している。さらに、電子辞書はスマホアプリが中心となり、電子辞書CDや、専用電子辞書は下火になっている。
そういう時代だからこそ、もう一度この辞書CDを扱えるようにしてみよう。
無駄なのは解っている。しかし、遊びとはそういうものだ。実用性や採算性を追求するのは「仕事」だ。

CDの表面にはEPWINGと書かれているので、EPWING形式なのだろうが、どういうわけかCATALOGSファイルが無い。
壊れているのだろうか?
ネット上で見ても、そんなCDの話はない。さらにいろいろ探しているとCATALOGSファイルの作り方が見つかった。
1999年(20世紀末!)ごろ太田純氏により開発されたcatdumpというアプリを使うらしい。
Debian系では、epwutilというパッケージに入っている。このパッケージはDebian Jessieを最後に、以降のDebianでは無くなっている。
しょうがないので、Jessie の epwutil のソースをダウンロードしてきた(以下の3ファイル)。
http://deb.debian.org/debian/pool/main/e/epwutil/epwutil_1.1-8.1.dsc.
http://deb.debian.org/debian/pool/main/e/epwutil/epwutil_1.1.orig.tar.gz
http://deb.debian.org/debian/pool/main/e/epwutil/epwutil_1.1-8.1.debian.tar.gz

dchでローカルでバージョンを上げておいて(存在しないので必要ないかも)、Ubuntu 18.04でビルドしようとするが、やはりそのままでは通らない。
こんな感じでエラーになる。
 : (省略)
dh_clean: Compatibility levels before 5 are no longer supported (level 4 requested)
debian/rules:27: recipe for target 'clean' failed
make: *** [clean] Error 25
dpkg-buildpackage: error: fakeroot debian/rules clean subprocess returned exit status 2
debian/compatの値が4になっているためだ。このへんを見ると、最近では10が普通らしい。
Lennyの頃から組み込みでdebianを使っていたが、たしかJessieの頃にMulti-arch対応等でパッケージ管理システムが大きく変わり後方互換を完全には維持できなくなった(と記憶している)。それ以降、どのような変更があったのかは見ていなかったが、古いものとの互換性を維持するために手間をかけるよりも、より良い形に変えていくために手間をかけたほうが良い。以降も色々あったのだろう。
epwutilは単純なMakefile形式だし、.dscを読んでもビルド依存物はdevhelperだけだ。
単純に数字を大きくしても、ビルドできるだろう。とりあえず、10 にする。

この状態で、"dpkg-buildpackage -us -uc" を行うと、Warningがでるが一応ビルドできた。
とはいえ、日本語文字コードがEUC-JPになっており、ビルドされたバイナリのエラーメッセージやヘルプがバケバケだ。20年以上前のものなのでしょうがない。
現代なら、UTF-8にするべきだろう。以下のようにして、UTF-8に置き換える。
$ nkf -w80 -Lu -x --in-place=.BAK *.c *.h *.man
ついでに、Warningを直しておこう。以下を行う。
  • catdump.c と squeeze.cで、unistd.h を #include する。
  • bookinfo.cの、126行付近、「情報所在ブロック」の書式化文字列の"%d"を"%ld"にする。
  • bookinfo.cの、ローカル関数hex()のプロトタイプが無いので、プロトタイプを書く。(他と合わせて、昔の書き方にしたほうが良いだろう)
  • squeeze.c内のlog()がビルドイン関数と名前がかぶっているので、wrlog()に置き換える。
    "sed -e 's/\<log(/wrlog(/g' -i.BAK squeeze.c"
この状態で、そのままビルドしようとしても、以下のようなエラーになる。
 : (省略)
dpkg-source: info: you can integrate the local changes with dpkg-source --commit
dpkg-source: error: aborting due to unexpected upstream changes, see /tmp/epwutil_1.1-8.1ubuntu1.diff.HodWKA
dpkg-buildpackage: error: dpkg-source -b epwutil-1.1 subprocess returned exit status 2
書かれているように、"dpkg-source --commit"を実行する。
言われるがままパッチ名を付けたり、サマリや説明を書いたりする。

この状態で、"dpkg-buildpackage -us -uc"をすると、新しいバイナリパッケージやソースパッケージができる。
 : (省略)
dpkg-deb: building package 'epwutil' in '../epwutil_1.1-8.1ubuntu1_amd64.deb'.
dpkg-deb: building package 'epwutil-dbgsym' in 'debian/.debhelper/scratch-space/build-epwutil/epwutil-dbgsym_1.1-8.1ubuntu1_amd64.deb'.
	Renaming epwutil-dbgsym_1.1-8.1ubuntu1_amd64.deb to epwutil-dbgsym_1.1-8.1ubuntu1_amd64.ddeb
 dpkg-genbuildinfo
 dpkg-genchanges  >../epwutil_1.1-8.1ubuntu1_amd64.changes
dpkg-genchanges: info: not including original source code in upload
 dpkg-source --after-build epwutil-1.1
dpkg-buildpackage: info: binary and diff upload (original source NOT included)

$ ls ../
epwutil-1.1
epwutil-dbgsym_1.1-8.1ubuntu1_amd64.ddeb
epwutil_1.1-8.1.debian.tar.gz
epwutil_1.1-8.1.dsc
epwutil_1.1-8.1ubuntu1.debian.tar.xz
epwutil_1.1-8.1ubuntu1.dsc
epwutil_1.1-8.1ubuntu1_amd64.buildinfo
epwutil_1.1-8.1ubuntu1_amd64.changes
epwutil_1.1-8.1ubuntu1_amd64.deb
epwutil_1.1.orig.tar.gz

このepwutil_1.1-8.1ubuntu1_amd64.debをインストールする。
sudo dpkg -i ../epwutil_1.1-8.1ubuntu1_amd64.deb

"catdump -h" を実行すると以下のように表示される。
$ catdump -h
電子ブック/EPWING カタログ/テキスト変換 Ver.1.1 (1999/01/13)
    Written by Junn Ohta (ohta@src.ricoh.co.jp), Public Domain.

使用法: catdump [-g] [-d] [-u <テキストファイル>] <カタログファイル>

オプション:
    -g: EBG 専用モードにする
    -d: カタログファイルを標準出力にダンプする
    -u: テキストファイルをカタログファイルに変換する
ギリギリ入手できたけど、こういうアプリは無くなっていくのだろうな…。

とりあえず、epwutilのビルドまで。
次は、実際にCATALOGSファイルを作成する。
つづく。

2020年7月31日金曜日

西之島があつい

西之島がどんどん成長しているようだ。
コロナ禍や激甚化する気象など、嫌なニュースが多い中での数少ない良いニュースだ。

西之島の噴火は、普通の海底火山の噴火とは異なり、大陸を形成すると言われている。
実際にどんどん巨大化しており、無いところから発生した島としては、有史以来人類が経験したことがないほどの大きさらしい。
地球人であれば、誰でもワクワクしているに違いない。
とはいえ、今生きている人の寿命の範囲内では、大陸と呼べるほど大きくはないだろう。

今月に入りさらに活発に噴火し、溶岩が大量に流れ出して面積も広がった。
今月半ばには、火山灰が8,000mに達するほどの噴火があった。昨日の7/30に再度激しく火山灰が吹き出した。
去年は溶岩地獄のような風景だったが、今では火山灰が降り積もり、島全体をすっぽりと覆って、砂漠のような風景に変わっている(朝日新聞の動画が興味深い)。
山も大きくなっている。
素人が見ても、どんどん変わって面白い。
これからも注目だ。

2020年7月21日火曜日

宇宙でも Go to トラベル?

はやぶさ2が、カプセル切り離し後に再度地球を離れて、他の天体の探査へ向かうことが決まったようだ。
はやぶさ1でも、最初はそういう話も出ていたのだが、末期には姿勢制御エンジンは全停止、リアクション・ホイールも3基中2基が止まるという状態。カプセルを地球へ確実に返すために、地球へギリギリまで近づいて切り離さざるを得ず、神風ミッションとなってしまった。
(あの状態で、延長運用するのも無理があっただろうけど)

H2Aで打ち上げられたUAEのHOPE探査機も火星に向かっているようだ。

コロナ禍や豪雨災害など嫌な事が多い(ネオワイズ彗星も見れないし)。
こういう明るいニュースがほしかった。

2020年7月17日金曜日

ネオワイズ彗星が見えない

ネオワイズ彗星が接近している。
「(速報)ネオワイズ彗星が明るい(2020年7月)」(国立天文台)
太陽の近くを通過した後で尾が伸びて見頃らしいが、数週間前は早朝、日の出前だった。
この時期の朝は早い。4時にはもう明るい(ダイビングに行くときは4時起き)。
仕事もあるし、見るのは諦めていた。

しかし、今月中過ぎからは夕方の時間帯に見えるようになった。
見たいのだが、この天気だ。

高校生の頃のハレー彗星の接近以来、尾を引いているほうき星を一度は見てみたいと思い、接近のたびに期待しているのだが、いまだに見えない。