Kindle2 on Ubuntu Linux and Calibre
- 7月
- 4
リンク: http://bugs.calibre-ebook.com/ticket/6086
Kindle2を使っている。電子ブックを上手に使うには、calibreというアプリケーションが便利だ。Linuxだけではなく、mac, windowsでも使えるだろう。
Ubuntu GNU/Linux (10.04)上で、Calibreをつかって、外部のWebニュースを巡回して、電子ブックを生成して、Kindle2に流し込んでいる。
Calibreは、スケジュールされた時間帯にWebを巡回して、たとえばLWNやTimes, CNN, BBC, Japan Timesなどニュースサイトからニュースを取得して、ebookを生成してくれる。
また、kindle2を接続すると、自動的に、まだkindle2に取り込んでいないNewsを転送してくれる。すぐれものだ。
ただし、ちょっとした不具合がある。
Calibreを英語以外のlocaleで起動すると、Timesなどのサイト巡回結果のタイトルに日付がつくのだが、それが日本語混じりになる。技術的にはstrftime()がロケールLC_TIMEの影響を受けるためだ。
一方、Kindle2は、まだ英語以外の言語に対応していない。Kindle2をUbnutuにつなぐと、vfatとして認識されて自動マウントされる。マウントオプションは、
/dev/sdc1 on /media/Kindle type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush)
こんな感じ。
そこに、日本語のファイル名のついたニュースファイルを流し込むと、怪しいことが起こる。
具体的には、マウントしたKindleが読み込みのみになってしまう。
で、リンク先のようなバグレポートとなった。
でも、本当は、OSがわで対応すべきではないのか?ということで、たとえばuni_xlateというマウントオプションをつけることを考えたい。これは、unicode文字がきたときに、適当なエスケープシーケンスでlatin文字に変換するというものだ。
では、オートマウントされるときの機構でどこをどのようにいじればいいのか。
gconf-editorで、設定を開いて、system/storage/vfatあたりを見ればいいのかとおもったが、ここに設定を追加すると、すべてのデバイスで影響してしまう。kindleの時だけ、オプションを追加するには、どうすればいいか。
Automounting a storage device with GNOMEを参考にすると、hal-device というコマンドを見ればいいらしい。
Kindleに関わる部分をみるとこんなふうになっている。
0: udi = '/org/freedesktop/Hal/devices/volume_uuid_0096_AB41'
linux.hotplug_type = 3 (0x3) (int)
info.interfaces = { 'org.freedesktop.Hal.Device.Volume' } (string list)
block.storage_device = '/org/freedesktop/Hal/devices/storage_serial_Kindle_Internal_Storage_B003B0A200930A7F_0_0' (string)
volume.fstype = 'vfat' (string)
volume.fsusage = 'filesystem' (string)
volume.fsversion = 'FAT32' (string)
volume.uuid = '0096-AB41' (string)
volume.label = 'Kindle' (string)
info.udi = '/org/freedesktop/Hal/devices/volume_uuid_0096_AB41' (string)
volume.mount_point = '/media/Kindle' (string)
volume.is_mounted = true (bool)
volume.is_mounted_read_only = false (bool)
volume.is_disc = false (bool)
info.product = 'Kindle' (string)
volume.partition.number = 1 (0x1) (int)
block.major = 8 (0x8) (int)
block.device = '/dev/sdc1' (string)
block.is_volume = true (bool)
volume.partition.start = 8192 (0x2000) (uint64)
volume.partition.media_size = 1602191360 (0x5f7f8000) (uint64)
volume.size = 1602183168 (0x5f7f6000) (uint64)
block.minor = 33 (0x21) (int)
volume.num_blocks = 3129264 (0x2fbfb0) (uint64)
volume.is_partition = true (bool)
org.freedesktop.Hal.Device.Volume.method_names = { 'Mount', 'Unmount', 'Eject' } (string list)
volume.block_size = 512 (0x200) (int)
volume.linux.is_device_mapper = false (bool)
org.freedesktop.Hal.Device.Volume.method_execpaths = { 'hal-storage-mount', 'hal-storage-unmount', 'hal-storage-eject' } (string li
st)
org.freedesktop.Hal.Device.Volume.method_signatures = { 'ssas', 'as', 'as' } (string list)
org.freedesktop.Hal.Device.Volume.method_argnames = { 'mount_point fstype extra_options', 'extra_options', 'extra_options' } (strin
g list)
volume.ignore = false (bool)
volume.mount.valid_options = { 'ro', 'sync', 'dirsync', 'noatime', 'nodiratime', 'relatime', 'noexec', 'quiet', 'remount', 'exec',
'utf8', 'shortname=', 'codepage=', 'iocharset=', 'umask=', 'dmask=', 'fmask=', 'uid=', 'flush' } (string list)
volume.unmount.valid_options = { 'lazy' } (string list)
linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0/host16/target16:0:0/16:0:0:0/block/sdc/sdc1' (string)
info.parent = '/org/freedesktop/Hal/devices/storage_serial_Kindle_Internal_Storage_B003B0A200930A7F_0_0' (string)
info.capabilities = { 'volume', 'block' } (string list)
info.category = 'volume' (string)
あとは、このUDIなどをつかって、labelがKindleのようなストレージデバイスのときは、こうしろ的な設定を gconftoolなんかつかって、書き込めばいいらしい。
E: Internal Error, Could not perform immediate configuration (2)
- 5月
- 23
Ubuntu 8.10プレインストールのLPIAアーキテクチャのDELL mini10vを Uubntu 9.10(LPIA)にしたものを
https://wiki.ubuntu.com/LucidLpiaMigrationHowToに従って、無理矢理I386にアップグレードしようとすると、タイトルのようなエラーが発生する。
もちろん、この方法は、debian packageになれた人ではないとおすすめしない。というか、やめたほうがいい。
Launchpad+bazaarか、Github+gitか、それが問題だ
- 5月
- 23
リンク: http://andymatuschak.org/articles/2008/05/07/more-on-launchpad-bazaar-vs-lighthouse-github/
最近、gpxviewerというアプリケーションをいじっている。これは、GPXファイルの管理を行う上で、容易に地図上でどこをトレースした物かを表示してくれる。
Python + GTKでかかれており、小さく、最低限必要な機能を満たしている。
多数のGPXファイルがあると、JOSMで開いて確認していくのでは、少々手間がかかりすぎる。また、できればファイル管理ソフトウエア(nautilus) から簡単に起動できた方がいい。
これは、まだリリースして日が浅く、コードベースも小さいので、こういった用途に向けて改良するには、ちょうどよかった。
わたしの改良点は、Githubリポジトリにおいてある。すでに、作者にパッチを送っており、gpxviewer on launchpadから最新のコードを入手できる。
5月に入ってから、7つのコミットに関わる貢献をしている。
さて、作者のAndrew Geeさんからは、BazaarをつかってLaunchpadにブランチを開いてくれ。そしたら、マージもレビューも簡単だ、といわれている。たしかに、bazaarを使ってlaunchpad からコードを入手して開発しているが、bazaarはその使い勝手が気持ち悪くて、git-bzrをつかって、(たとえば、git-bzrの使いかた),gitにインポートして開発し、ブランチの歴史をきれいにしてから、git format-patchを用いてパッチを生成して送っている。送ったパッチをそのままインポートしてくれれば、リポジトリに取り込むときに面倒はないのだけれども、Andrewは(bzrにそんな機能はないのかもしれないが)、パッチをあてて適当なコメントをつけてupstreamにマージをするので、パッチを送った後は、upstreamの最新から再度ブランチを切って作業をする羽目になる。
そもそも、プロジェクトのオーナーがlaunchpad+bazaarを使っているのだから、選択するのはオーナーだ。それに不満はない。けど、開発する方は、使いたい奴を使いたいではないか。
閑話休題
その選択にあたっても、プロジェクトオーナーは、pros/consがあって悩ましいはず。launchpadのサイトとしての機能はすばらしいが、bazaarよりgitのほうが使いやすいじゃん。という悩みをこの記事では吐露してくれているのである。
gnucashの日本語入力時のバグ
- 1月
- 17
Gnucashという会計ソフトがあり、複式簿記ができる。Windowsのバイナリもあり、sqlite3やmysql, PostgresQLもバックエンドに使えるようになってきているんで、共同作業にも使えるようになっている。
メッセージの日本語化も進んでいるので、いろいろ使えると思うが、入力メソッドを使ったときに、変換候補がインラインで表示されない、という仕様になっている。
これは、GTKのインライン要素を不可視にした上で、入力内容をパースして、セルに記入するという動作をしているためである。
gnucashのシートイメージは、gnome officeのひとつ、gnumericのシートのコードが祖先になっているようだ。gnumericのほうでは、入力メソッドを使ったときの動作は改良されているので、同じような改良をgnucashに行う必要がある。
ソースは以下から入手可能
http://svn.gnucash.org/repo/gnucash/trunk
問題のコードは、
gnucash/src/register/register-gnome/gnucash-sheet.c
とおもわれる。
修正内容は、IM Contextの使い方を参照すると酔い。
Dell mini 10v (Ubuntu版)のUbuntu 9.10へのアップグレード
- 1月
- 1
Dell mini 10v(ubuntuプレインストール版)は、Dell mini 10vに、Dellカスタマイズ版のUbuntu 8.04 LTS (LPIA) UNR(Ubuntu netbook remix)がのった製品である。
詳細は、技術評論社のhttp://gihyo.jp/admin/serial/01/ubuntu-recipe/0084
記事をみてもらうとして、実際のところ、ただのカスタマイズ版ではなかったことが、後ほど判明している。
さて、2009年11月27日、このDell miniに搭載されているUbuntuのLPIAアーキテクチャ版のサポートは打ち切られることが発表された。その結果、現行のLPIAアーキテクチャ版のUbuntuが搭載されたPCやネットブックは、i386版の再インストール無しにアップグレードはできないことが判明した。
したがって、現在も今後も入手できるLPIA版のUbuntuは、9.10(Karmic Koala)であることになる。ところで、LPIA とは、Low Power Intel Architectureの略で、ATOMプロセッサを軸としたアーキテクチャで、省電力にチューニングしたコンパイルやカーネル提供がなされることになっていた。
CanonicalのUbuntu公式のサポート対象外になったのを記念して(?)、Dell mini 10v(Ubuntuプレインストール版)を、Ubuntu 9.10 (LPIA)にアップグレードしてみた。もちろん、このアップグレードによって、Dellによるサポートは受けられなくなるので、ご注意を。
Ubuntu公式サポート対象外であるので、aptのリポジトリ指定も、従来とは異なって、 ports.archive.ubuntu.comを指定しなければならない。
たとえば、既定の状態では、/etc/apt/sources.listには、次のように指定されているはずである。
deb http://dell-mini.archive.canonical.com/ubuntu/ hardy main universe multiverse restricted deb-src http://dell-mini.archive.canonical.com/ubuntu/ hardy main universe multiverse restricted
これに対して、サポートされないことを覚悟の上、通常のUbuntuにアップグレードするには、
deb http://ports.ubuntu.com/ubuntu-ports intrepid main universe multiverse restricted
このように指定する。
いったん、upgrade-managerも、Dellカスタマイズ版ではなく、通常版を使わせるために削除し、新リポジトリから再インストールしておこう。
また、もとのシステムは、LTS(長期間サポート)として設定されているので、通常アップデートが表示されない。これは、UbuntuのFAQにもあるように、/etc/update-manager/release-upgradesに、
[DEFAULT] # default prompting behavior, valid options: # never - never prompt for a new distribution version # normal - prompt if a new version of the distribution is available # lts - prompt only if a LTS version of the distribution is available Prompt=lts
とあるのを、
[DEFAULT] # default prompting behavior, valid options: # never - never prompt for a new distribution version # normal - prompt if a new version of the distribution is available # lts - prompt only if a LTS version of the distribution is available#Prompt=lts [DEFAULT] # default prompting behavior, valid options: # never - never prompt for a new distribution version # normal - prompt if a new version of the distribution is available # lts - prompt only if a LTS version of the distribution is available Prompt=normal
と書き換えることによって、アップグレードを行うことができる。
さて、このようにして、Dellカスタマイズ版Ubuntu 8.04LTSをベースとしてアップグレードをかけていくと、途中でXが正常に起動しなくなることがあるかもしれない。これは、Xの設定を作り直すことで解消することができる。正常に起動しなくなったとき、トラブルシューティングの画面になるので、設定の作り直しを選択すればよい。(このときのメニューは英語だ)
ところで、Dell mini 10v は、mini 9/10/12が使用しているIntel GMA500 (Poulsbo) チップと違い、Intelの Mobile 945GME Express 統合グラフィックコントローラを採用している。したがって、間違えて mini 9などの情報を流用することのないようにしたいところ。
Ubuntuは(ほかのディストリビューションも同様であるが)、バージョンとばしのアップグレードはサポートされない。したがって、LPIA版の最新かつ最終版である9.10にするには、途中 8.10, 9.04バージョンを順にあげていく必要がある。
さて、8.10以降、サスペンドできなくなることに気づくであろう。これは、Dellカスタマイズ版に含まれているプロプラソフトウエアが、バージョンアップに追従しないため、内部構造の変更に追従できないことから起こる。
Dellカスタマイズ版には、少なくとも次のプロプラエタリ・ソフトウエアが含まれる。
- Fruendo メディアプレイヤーのエンコード・デコードライブラリ
- Adobe Acrobat Reader 8
- PowerDVD DVDプレイヤー
- Dell Video Chat チャットソフトウエア
- DELL V505 ドライバー
- Dell launcher
これらのうち、Fruendo ライブラリは、アップグレードの過程で、フリー版のビデオエンコード・ライブラリを導入しようとすると、削除されるかもしれない。したがって、アップグレード前に、これらのソフトウエアはパッケージとして保存しておくとよい。
# apt-get install dpkg-repack # dpkg-repack gstreamer0.10-fluendo-plugins
などとすることで、アップグレードの心配は少し軽減されるだろう。
もし、すでにアップグレードの過程で知らずに消してしまった場合、、、 Dellからのパッケージについていた、Ubuntu DVDで再インストールすることで、入手できる。というか、再インストールが必要である。
さて、サスペンドの問題であるが、これは、上記のうちPowerDVDが原因である。
Gnome power managerからのサスペンドであるが、これはgnome-power-managerがHALを経由して、システムユーティリティを呼び出すことで実行される。呼び出されるユーティリティはHALが判断するが、今回は、/usr/sbin/pm-suspnedが呼び出される。
カーネルを直接呼び出してサスペンドさせた場合には、成功するが、pm-suspendは失敗する。したがって、pm-suspendの問題である。
そこで、pm-suspendでサスペンドをさせようとした後、ログファイルを見ると、
/var/log/pm-suspend.log /etc/pm/sleep.d/07-stop-play.sh suspend suspend: kill: 4: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or kill -l [exitstatus] Returned exit code 2. Fri Dec 25 09:05:03 JST 2009: Inhibit found, will not perform suspend Fri Dec 25 09:05:03 JST 2009: Running hooks for resume /etc/pm/sleep.d/01f3507g resume suspend: Fatal open FIFO for writing: /dev/ttyACM0: No such file or directory mbm_gpsd: no process found Returned exit code 1.
というように、ログにエラーが残っている。これによると、/etc/pm/sleep.d/07-stop-play.sh が失敗しているとされている。dpkg -S 07-stop-play.shとして、どのパッケージに含まれるファイルが失敗したか、検索すると、pdvdlinuxだという。そこで、この問題のファイルを削除することで、サスペンドできるようになる。
本質的には、当該ファイルを修正して、意図する動作をするようにしなければならない。
ちなみに、pdvdlinuxパッケージは、つぎのようなパッケージである。
パッケージ: pdvdlinux バージョン: 5.0.1218 優先度: 任意 セクション: non-free/graphics メンテナ: Bazooka Shih <bazooka_shih@cyberlink.com> 説明: Dell Media Experience With Dell Media Experience, you can play back your DVD movies, with the features and controls of a normal living room DVD player.
Thunderbird 3 や Icedove 3のアーカイブフォルダをカスタマイズ
- 12月
- 12
リンク: http://www.ghacks.net/2009/10/16/customize-the-email-archive-in-thunderbird-3/
Thunderbird 3のアーカイブは新しい機能であり、とても便利だ。ただ、私のように大量のメールを(MLが中心だが)受け取っていると、既定の年単位では、フォルダが大きくなりすぎて、扱いにくい(性能上もデメリットだ)。今月リリースされたThunderbird3を使いこなすには、このあたりを使いこなすのが、重要ではないだろうか。
そこで、アーカイブの行い方をカスタマイズすることができると便利だ。
この記事によると、アドオンを利用することで、このアーカイブ機能をカスタマイズできるということだ。
igotu2gpx: 安価GPSトラッカーi-gotU のLinuxクライアントが大進化
- 11月
- 29
リンク: https://launchpad.net/igotu2gpx
OpenStreetMap Japanでは、MAPコンシュルジュのご協力で、OSM Japan寄付付きi-gotU GPXトラッカーの販売を行っていただいたことがある。当初は、Windowsのみの対応だったが、OpenStreetMap JapanのMLでご紹介したように、igotu2gpxというLinuxのクライアントが開発されていた。
最近、みたところ、大変な進化を遂げている。
- GUIが追加された
- 設定ができるようになった
- Windows/Macにも対応するようになった。
わかりやすいところで、GUIを見ていただきたい

起動時画面

地図をズームアップ、メニュー表示
これらのメッセージが日本語なのは、さっき翻訳したから。いずれ、取り込んでもらいます。地図は、もちろんOSMの成果を使っています。

