「ORCA」タグアーカイブ

14.04+ibus-mozc+glclient2でログイン後最初の選択番号のフィールドが自動で半角にならない

jma版のibus-mozc(ibus-anthyも)はファイル(/tmp/im-status.ユーザーid.txt)で現在のIMの全角・半角状態を保持して、gtkpandaと協調して全角半角切り替えを行うパッチが当たっています。ところが、電源投入直後のログインでは、ibus-mozcが初期状態が全角にも関わらずim-statusファイルが存在しないため全角状態を取得できず、選択番号が全角入力のままになってしまうようです。(一度全角半角キーを押して切り替えを行なうと、im-statusファイルは作成されます)

本当はibus-mozcの方を直接直してビルドするのがいいのでしょうが面倒なので、以下のファイルを自動起動ファイル(ホームディレクトリの).config/autostart/im-status.desktopとして追加しました。

ログイン時に、im-statusファイルを作成し中身を1(全角状態である)に設定しているだけですが、これによって電源投入直後でもうまくglclient2が全角半角を切り替えてくれて、選択番号のところが半角入力になりました。

(上記ファイルは以下の手順でダウンロードできます)

mkdir ~/.config/autostart
wget -O ~/.config/autostart/im-status.desktop https://gist.githubusercontent.com/nts-kimura/0b777f4146bad53676771d2749215977/raw/e089e004e675aeff45b48b80681c934a2b9357cc/im-status.desktop

12.04 LTS→14.04 LTS アップグレード

今更感がありますが。

ポイントは、14.04にpostgresql-9.1のパッケージがないので、pgdg版を使うのと、普通にdo-release-upgradeすると、サードパーティのapt-lineが無効化されてしまい一発でアップグレードが終わらないので、無効にしないオプションをつけてdo-release-upgradeを起動します。

pgdg版 PostgreSQLがインストールされるように設定

https://www.postgresql.org/download/linux/ubuntu/ にあるように、apt-keyとapt-lineを設定。
/etc/apt/sources.list.d/pgdg.list

deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main

ただし、そのままだとpostgresql-9.1以外のPostgreSQLパッケージもpgdg版が入るので、それ以外はUbuntu版が入るように/etc/apt/preferences.d/postgresql として以下を設定

サードパーティのaptが無効にされないようにするオプション

以下のように環境変数 RELEASE_UPRADER_ALLOW_THIRD_PARTY=1 を設定(UP’G’RADERではない)してdo-release-upgradeをかけると、jma-receiptのapt・上で設定したPostgreSQLのpgdg版のapt-lineが無効にならずに、Presice→Trustyに書き換わっていい感じにアップグレードされます。

RELEASE_UPRADER_ALLOW_THIRD_PARTY=1 do-release-upgrade
PostgreSQL 9.1→9.3へデータ移行

アップグレード直後はPostgreSQL 9.1で動作しているため、PostgreSQL 9.3で動くように変換します。pg_upgradeclusterコマンドで一発で9.1から9.3へデータ移行できますが、アップグレード時に9.3 mainという名前の空のデータベースクラスタが出来上がっているので一旦削除してから変換します。

pg_dropcluster --stop 9.3 main
pg_upgradecluster 9.1 main

うまく移行できたら、9.1 mainのクラスタ、postgresql-9.1のパッケージ、apt-lineなども削除。

その後、14.04のデスクトップの設定などを行いますが、弊社では極力手作業ではなくAnsibleをつかって自動化しております。
アップグレードにかかった所要時間は、1時間程度でした。(Core i5-4590 4GB、パッケージは事前ダウンロード、HDDで、ext4はnobarrierオプション付き)

Ubuntu 14.04とEPSONレーザープリンターについて

[orca-users:13972]の内容について、弊社ではEPSONレーザーをメイン機として使っているお客様はいないものの、社内にはEPSON LP-9100があり、同様の現象が発生したため調査しました。
cupsd.confのLogLevelをdebugに変更して/var/log/cups/error_logを12.04の時と比較したり、gdbでgsをステップ実行したりして調査した結果です。

12.04より左マージンが大きくなる問題

14.04で印刷するとなぜか左マージンが大きくなり、右端の印字が切れます。これはCUPSの途中で走るPDF→PSへの変換処理がGhostscriptで行われると発生するようです。/var/log/cups/error_logでいうと

Running command line for gs: gs -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=ps2write -sOUTPUTFILE=%stdout -dLanguageLevel=3 -r600 -dCompressFonts=false -dNoT3CCITT -dNOINTERPOLATE -c 'save pop' -f /tmp/foomatic-1Emzj

の部分で、このps2writeデバイスで出力されたPSファイルをeplaser-jpで処理すると印字がズレるようです。
(ただしこの変換済みのPSファイルをgvなどで見てもずれているわけではないので、eplaser-jpとの組み合わせで発生するようです)
対処として、

lpadmin -p プリンタ名 -o pdftops-renderer-default=pdftops

を設定すると、このPDF→PSへの変換処理が、poppler-utilsのpdftopsを使うようになり、

/var/log/cups/error_log
 Running command line for pdftops: pdftops -level3 -origpagesizes -nocenter -r 600 /tmp/foomatic-gEB0Zx -

きちんとした位置に印字されるようになります。

QRコードが白黒反転したり、薬剤情報の写真がない部分が黒塗りになる

この不具合は、もともとあったGhostscriptのgdevescv.cドライバーの1ビット画像の処理の抜けではないかと考えています。
(12.04版ORCAでQRコードの部分は1ビットイメージではないので再現しません)

1ビットイメージを描画する際はescv_copy_monoで行っているようですが、ビット1が、透明・または白色をあらわすというパラメータが渡ってきた場合、(one == gx_no_color_index、または、one == vdev->whiteのとき)、ESC/Page側では1が黒で固定されている(?)ため、0と1を反転させてからプリンタ側に送信しなくてはなりませんが、反転処理が行われていないようです。(コメントにはビット反転、という部分がありましたが処理は空)。
ビットを反転して送信する以下のパッチを作成し、gsをビルドすると正しい印字となりました。

#あとで気づきましたが、gdevescv.cを改造する話に同じようなパッチがありました。10年以上前から存在する不具合なんですね・・。

全てのソースが公開されているので(今回ESC/Pageの仕様書もEPSONからダウンロードしました)、調べようと思えばなんとかなるものですね。今回、ちょっとだけCUPSからプリンタまでの処理の流れについて知識が増えた気がします。