appstreamcli の WARNING が分からない

Environment
Photo by hyt.

appstreamcli の WARNING が分からないです.

2週間くらい前からでしょうか.elementary OS で,

$ sudo apt update
...
** (appstreamcli:32032): WARNING **: 13:16:34.052: Ignored search token 'のほとんどの機能がプラグインを使って実装されており、プラグインは動的に有効化、無効化できるようになっています。自分のプロジェクトで有効化するプラグインを自分で選択できます。ユーザーインターフェースの配置と同様に、有効化したプラグイン群も各プロジェクトで保持されるため、複合的に様々なレベルのプロジェクトでの作業がしやすくなっています。プラグインを使うことにより独自の機能で': Too long to be stored in the cache.
...

なる WARNING が出るようになりました.ググってみると,同じ症状が

Bug#942438: apt: Sometimes it shows "(appstreamcli:17971): WARNING" in ja_JP locale

に報告されているのですが,apt ではなく apt から呼び出される appstreamcli の問題であることが指摘されているだけで解決法は書かれていません.

上のバグ報告にある通り,確かに apt は /etc/apt/apt.conf.d/50appstream から appstreamcli を呼び出していて,実際に WARNING を出しているのは,当該ファイルの最後の方の

# Refresh AppStream cache when APT's cache is updated (i.e. apt update)
APT::Update::Post-Invoke-Success {
    "if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh-cache > /dev/null || true; fi";
};

という部分のようです.実際,

$ sudo appstreamcli refresh-cache --force --verbose
...
** (appstreamcli:13407): DEBUG: 14:25:50.575: Opening cache file: /var/cache/app-info/cache/ja.cache
...
** (appstreamcli:13407): WARNING **: 14:25:52.289: Ignored search token 'のほとんどの機能がプラグインを使って実装されており、プラグインは動的に有効化、無効化できるようになっています。自分のプロジェクトで有効化するプラグインを自分で選択できます。ユーザーインターフェースの配置と同様に、有効化したプラグイン群も各プロジェクトで保持されるため、複合的に様々なレベルのプロジェクトでの作業がしやすくなっています。プラグインを使うことにより独自の機能で': Too long to be stored in the cache.
** (appstreamcli:13407): DEBUG: 14:25:52.426: Cache returned from floating mode (all changes are now persistent)
** (appstreamcli:13407): DEBUG: 14:25:52.427: Opening cache file: /tmp/appstream-cache-HR8PC0.mdb
AppStream キャッシュのアップデートは正しく完了しました。
...

のように表示されます.つまり,/var/cache/app-info/cache/ja.cache を作り直すときに出ている WARNING で,「あまりに説明文が長すぎるので検索のためのキャッシュに含めることができない」ってことのようです.

また,この長過ぎるって言われている日本語の説明文は,Anjuta という統合開発環境アプリの説明文のようで,確かに,

$ appstreamcli dump anjuta.desktop
<?xml version="1.0" encoding="utf-8"?>
<component type="desktop-application">
  <id>anjuta.desktop</id>
  <name>Anjuta</name>
  <name xml:lang="ja">Anjuta</name>
  <summary>Develop software in an integrated development environment</summary>
  <summary xml:lang="ja">統合開発環境でソフトウェアを開発します</summary>
  <project_license>GPL-2.0+</project_license>
  <project_group>GNOME</project_group>
  <description>
    <p>Anjuta DevStudio is a versatile software development studio featuring a number of advanced programming facilities including project management, application wizard, interactive debugger, source editor, version control, GUI designer, profiler and many more tools. It focuses on providing simple and usable user interface, yet powerful for efficient development.</p>
    <p xml:lang="ja">Anjuta DevStudio は多目的ソフトウェア開発基盤です。高度なプログラミング支援機能を多数搭載しており、プロジェクト管理、アプリケーションウイザード、対話型デバッガ、ソースエディター、バージョン管理、GUI 設計ツール、プロファイル管理に加え、他にも多くのツールが利用できます。シンプルで使いやすいユーザーインターフェースでありながら、効率的な開発を強力に支援します。</p>
    <p>Anjuta is very extensible with plugins. Almost all features in Anjuta are implemented using plugins which can be dynamically enabled or disabled. You can choose which plugins should be active for your project. Like the user interface layout, the set of active plugins is also persistent for each project making it easy to work on projects with various levels of complexity. Using plugins, you can extend Anjuta with your own features.</p>
    <p xml:lang="ja">Anjuta はプラグインにより非常に拡張性の高いものになっています。Anjuta のほとんどの機能がプラグインを使って実装されており、プラグインは動的に有効化、無効化できるようになっています。自分のプロジェクトで有効化するプラグインを自分で選択できます。ユーザーインターフェースの配置と同様に、有効化したプラグイン群も各プロジェクトで保持されるため、複合的に様々なレベルのプロジェクトでの作業がしやすくなっています。プラグインを使うことにより独自の機能で Anjuta を拡張できるようになっています。</p>
    <p>The project wizard lets you create new projects from a selection of project templates. The selection includes simple generic, flat (no subdirectory), GTK+, GNOME, Java, Python projects and more. New templates can be easily downloaded and installed.</p>
    <p xml:lang="ja">プロジェクトウイザードにより、プロジェクトのテンプレートを選択することから新しいプロジェクトを作成できるようになっています。選択肢には簡素で一般的なもの、平面的なもの (サブディレクトリ)、GTK+、GNOME、Java、Python プロジェクト用、その他のものがあります。新しいテンプレートは簡単にダウンロード、インストールできるようになっています。</p>
  </description>
  <pkgname>anjuta</pkgname>
  <categories>
    <category>Development</category>
    <category>IDE</category>
  </categories>
  <keywords>
    <keyword>IDE</keyword>
    <keyword>development</keyword>
    <keyword>programming</keyword>
  </keywords>
  <url type="homepage">https://projects.gnome.org/anjuta/</url>
  <url type="bugtracker">https://bugzilla.gnome.org/enter_bug.cgi?product=anjuta</url>
  <url type="help">https://developer.gnome.org/anjuta-manual/stable/</url>
  <url type="donation">http://www.gnome.org/friends/</url>
  <icon type="cached" width="48" height="48">anjuta_anjuta.png</icon>
  <icon type="cached" width="64" height="64">anjuta_anjuta.png</icon>
  <icon type="cached" width="128" height="128">anjuta_anjuta.png</icon>
  <icon type="stock">anjuta</icon>
  <icon type="remote" width="128" height="128">http://appstream.ubuntu.com/media/bionic/a/an/anjuta.desktop/81084E04BCF0CB53F3C16B644D9E2556/icons/128x128/anjuta_anjuta.png</icon>
  <launchable type="desktop-id">anjuta.desktop</launchable>
  <screenshots>
    <screenshot type="default">
      <image type="thumbnail" width="752" height="573">http://appstream.ubuntu.com/media/bionic/a/an/anjuta.desktop/81084E04BCF0CB53F3C16B644D9E2556/screenshots/image-1_752x573.png</image>
      <image type="thumbnail" width="624" height="475">http://appstream.ubuntu.com/media/bionic/a/an/anjuta.desktop/81084E04BCF0CB53F3C16B644D9E2556/screenshots/image-1_624x475.png</image>
      <image type="thumbnail" width="224" height="170">http://appstream.ubuntu.com/media/bionic/a/an/anjuta.desktop/81084E04BCF0CB53F3C16B644D9E2556/screenshots/image-1_224x170.png</image>
      <image type="source" width="1112" height="848">http://appstream.ubuntu.com/media/bionic/a/an/anjuta.desktop/81084E04BCF0CB53F3C16B644D9E2556/screenshots/image-1_orig.png</image>
    </screenshot>
  </screenshots>
  <mimetypes>
    <mimetype>application/x-anjuta</mimetype>
    <mimetype>application/x-anjuta-project-template</mimetype>
    <mimetype>application/x-anjuta-compressed-project-template</mimetype>
    <mimetype>inode/directory</mimetype>
  </mimetypes>
</component>

のように表示されます.

残念ながら appstreamcli がどこからこの情報を引っ張ってきてるのか分からないのですが,素直に考えるなら,これを修正するには上の説明文を短くするのか appstreamcli が長いメッセージをキャッシュに含めることができるような変更を加えるかのどちらかしかなさそう.

私の場合,別に Anjuta 使いませんし,内容からして,検索値としてプラグイン云々という部分が使えないってだけで実害は無さそうなので,目障りですが放置するしかなさそうな感じだなぁ……って思っています.

なお,根本的な解決策ではなくて,単に WARNING を見えなくするだけで良ければ /etc/apt/apt.conf.d/50appstream の該当部分を以下のように書き換えれば良いと思います.

$ sudo vi /etc/apt/apt.conf.d/50appstream
....
# Refresh AppStream cache when APT's cache is updated (i.e. apt update)
APT::Update::Post-Invoke-Success {
    "if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh-cache 2> /dev/null || true; fi";
};

要するに「appstreamcli refresh-cache > /dev/null」を「appstreamcli refresh-cache 2> /dev/null」に書き換えているだけ.WARNING 部分を /dev/null に捨てる訳ですね.

以上!

 

Environment
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました