[ubuntu-jp:4954] Re: Ubuntu 12.04でupdate-notifierがエラー終了する

Jiro Matsuzawa jmatsuzawa @ gnome.org
2014年 8月 17日 (日) 18:18:26 UTC


松澤です。
# ここに繋げるのが不適切ならお許しください。

2014-08-12 23:43 GMT+09:00 Mitsuya Shibata <mty.shibata @ gmail.com>:
> エラーの原因を含む詳しい経緯は、8月12日に開催された
> IRCミーティングの議事録を参照してください。
>
> - https://wiki.ubuntulinux.jp/IRCMeeting/20140812
> - http://irclogs.ubuntu.com/2014/08/12/%23ubuntu-jp.html

ふと思ったのですが、
本来この種のエラーは機械的かつ未然(コミット前)に見つけられるべきなんだと思います。


検出できなかった直接的な原因
----------------
# 不正なフォーマットを検出する機構がLaunchpadに備わっていると仮定して
今回その検出できなかった直接的な原因は、
件のメッセージにpython-formatフラグが付与されていない、
ということだと思います。
python-formatによるエラー検出については後述します。


python-fomratが付いていない原因
----------------
その原因は追及していませんが、考えられる要因としては:
- メッセージ抽出ツール(gettextやintltoolなど)がこれをpyton-formatとして認識できない (抽出ツールのバグ)。
- update-managerのメッセージ抽出ツールの使い方に不備がある (update-managerのバグ)。
- Launchpadで何かが起きてる (Launchpadのバグ?)。
などが挙げられると思います。
しかるべきところに問題として報告すれば、
今後この種のエラーは未然に防止できるようになるかもしれません。

ちなみに、同じpo中の他のメッセージにはpython-fomratが付与されています。


エラー検出の実際例
----------------
試しにpoをダウンロードして、
件のメッセージに以下のとおりpython-formatフラグを追加し、
% sed -n 2288,2291p po_update-manager-ja.po
#: ../check-new-release-gtk:90
#, python-format
msgid "Ubuntu %(version)s Upgrade Available"
msgstr "Ubuntu %(version) のアップグレードが利用可能です"

コンパイルすると、以下のとおりエラーとして検出可能です。
% msgfmt -cv -o /dev/null po_update-manager-ja.po
po_update-manager-ja.po:9: 警告: ヘッダ情報 'Language' が初期標準値のままです
po_update-manager-ja.po:2291: 'msgstr' は正しい Python 形式の文字列ではなく, 'msgid'
とは違います.  理由: 命令番号 1 の終端文字は正しい変換記述子ではありません.
msgfmt: 1 個の致命的エラーが見つかりました
406 個の翻訳メッセージ.
%
% echo $?
1


以上、何か参考になれば幸いです。



-- 
Jiro Matsuzawa
Email: jmatsuzawa at gnome.org
GPG Key ID: 0xECC442E9



More information about the ubuntu-jp mailing list