PCLOS: filezilla をインストールしている環境で gnutls 関係で問題が起きる可能性

[現象]

filezilla をインストールしている環境では、gnutls を利用しているソフト(例: corebird, jdim)で TLS 証明書に関するエラーが発生する可能性があります。

下図は Twitter クライアントの corebird での例ですが、「受け付けられない TLS 証明書です」というエラーが発生して Twitter に全くアクセスできなくなっています。

corebirdでのTLS証明書エラー


[原因]

filezilla パッケージによってインストールされる /usr/lib/libgnutls.so.30 と、lib64gnutls30 パッケージによってインストールされている /usr/lib64/libgnutls.so.30 がコンフリクトするためです。


[対策]

以下のいずれかの方法で問題を回避できます。

  • filezilla パッケージを削除する。
  • filezilla パッケージによってインストールされた /usr/lib/libgnutls.so.30 を削除する。(これが無くても filezilla は正常に動作します。間違っても /usr/lib64/libgnutls.so.30 の方を削除しないこと!)
  • 自前で filezilla をソースコードからビルドする。

[経緯&考察&愚痴]

冒頭で書いた corebird のエラーに、一昨日の夜に気が付きました。普段は wine 経由で Saezuri を使用しているので何時からこのエラーが発生していたのかは不明です。で、TLS 証明書絡みのエラーと言えば 先のエントリー で書いた JDim でも発生していたので、根本原因を突き止めるべく、仮想環境に新たに PCLinuxOS をインストールして調べてみました。

まず、インストール直後の環境では問題は発生しないことを確認。そこから私が日頃使っているアプリを一つ一つインストールしては問題が発生していないかを確認しながら環境を整えて行きました。結果、かなり時間がかかりましたが filezilla が原因であることを突き止めました。

ソースパッケージを調べるまで知らなかったのですが、PCLinuxOS の filezilla パッケージはソースコードからビルドしているのではなくて、開発元が 64bit Linux 用として配布している tar 玉を引っ張ってきてそのまま /usr 下に展開しています。それ故、tar 玉に同梱されている libgnutls.so.30 が /usr/lib 下に配置されることとなり、問題を引き起こす原因になりました。

さらに、filezilla パッケージでは後処理部分の %post が存在せず ldconfig コマンドが実行されない為、filezilla だけをインストールした直後には問題が発覚せず、その後に ldconfig を実行するパッケージをインストールした段階で初めて問題が表面化するという時限爆弾のオマケ付きです。

実際、上記の仮想環境での調査過程でも filezilla のインストール直後には気付かず、その後に幾つかのパッケージをインストールした段階で初めて問題が発覚したので、発覚直前にインストールした他のパッケージが原因ではないかと最初は疑ってしまいました。

なお、filezilla をインストールすると libgnutls.so.30 以外にも libgmp.so.10 , libhogweed.so.4 , libnettle.so.6 が /usr/lib 下に配置されますが、これらと同名のライブラリが lib64gmp10 と lib64nettle6 のパッケージがインストールされている環境では /usr/lib64 下に存在しており、libgnutls.so.30 と同様にコンフリクトする状態となります。これがどのような問題を引き起こすのか、あるいは起こさないのかは不明ですが、予防措置として私はこれらのファイルも削除しました。(削除しても filezilla は問題なく動作しています)

また、JDim で TLS 証明書のエラーが出た時には filezilla パッケージが原因だとは夢にも考えていなかったので、JDim 側の問題ではないのにもかかわらず、JDim の開発者のお一人の ma8ma さんには --with-default-trust-store-file オプションの追加 という労力を強いることになってしまったことを心より深くお詫び致します。


PCLinuxOS では filezilla の他にも Firefox や LibreOffice などのようにビルドに大きなリソースを要するパッケージではソースコードからのビルドは行なわずに、開発元が配布しているバイナリーな tar 玉を利用しています。開発にかかわる人的リソースが少ない零細ディストリビューションではそれも有りかなと個人的には思っています。

ただしそれは「他の部分に無用な影響を及ぼさにように配慮した上で」という前提条件付きなはずです。今回の filezilla に関して言えば、tar 玉の展開先を /usr ではなくて /usr/local にしておけば、あるいはライブラリのコンフリクトについてもう少しだけ配慮してもらえていたら問題は発生しなかったはずで非常に残念です。

PCLinuxOS | comments (0) | -

PCLOS: 本日の野良リポジトリ (2019-02-27)

下記のパッケージを nora セクションに投入しました。

jdim-0.1.0-6.20190224
  • 最新のリビジョンを用いてビルドしました。
  • 環境によっては https://github.com/ https://i.imgur.com/ 上の画像を開こうとした際に、
    JDSSL::connect(gnutls) *** Handshake failed: Error in the certificate verification
    という gnutls 絡みのエラーが出るという問題に対処するための応急的なパッチを適用しました。

    このパッチでは、PCLinuxOS でインストールされている x.509 証明書の位置 (/etc/pki/tls/cert.pem) を明示的に指定することでエラーを回避しています。

    なおこのパッチは、
    JDim GnuTLSを使って自前で用意した証明書でhostnameを検証するパッチ
    を基にして作成しました。

PCLinuxOS | comments (0) | -

PCLOS: 本日の野良リポジトリ (2019-02-02)

下記のパッケージを nora セクションに投入しました。

marisa-0.2.4-3
  • libkkc や libkkc-data に必要となる marisa ですが、ruby が 2.6.1 へ更新された影響により公式リポジトリから削除されました。(将来復活するのかどうかは不明)
    このため ruby-2.6.1 を用いて再ビルドしたものを投入しました。
libkkc-0.3.5-10.git20180801
libkkc-data-0.2.7-4
  • どちらも上記の marisa-0.2.4-3 を用いて再ビルドしました。
    なお marisa が公式リポジトリから削除されたことにより、libkkc 関連のパッケージも全て公式リポジトリから削除されています。
jdim-0.1.0-2.20190129
  • 最新のリビジョンを用いてビルドしました。
PCLinuxOS | comments (0) | -

PCLOS: 本日の野良リポジトリ (2019-01-24)

下記のパッケージを nora セクションに投入しました。

jdim-0.1.0-1.20190123
  • JD に替えて JD から fork された JDim (JD improved) を新たに投入しました。(jd パッケージがインストール済の環境では、jdim パッケージをインストールすると jd パッケージが削除されます)
  • JDim はルック・アンド・フィールや環境設定は JD と互換性があります。今まで JD を使用していた環境であれば、(環境変数 JDIM_CACHE で明示的に他の位置を指定しない限り) JD が使用していたデフォルトのキャッシュディレクトリの $HOME/.jd がそのまま JDim でも使用されるので、従来の JD の環境をそのまま引き継ぐことが可能です。
  • JD と JDim の違いでは名称が変更された以外には、環境変数の JD_CACHE と JD_LOCK が JDIM_CACHE と JDIM_LOCK に変更になっています。
  • JDim が JD から fork された経緯については "本家JD projectとの区別について · Issue #15" というスレッドをご覧ください。
  • なお JD と同様に JDim は 5ch.net の API に対応していません。

【追記】

JDim への fork に伴って実行ファイル名が jd から jdim に変更されています。従来の JD を 5ch.net 用の proxy を使うようにシェルスクリプト経由で起動させていたような環境では、実行ファイル名の変更によるシェルスクリプトの修正が必要となるケースがあると思われます。

PCLinuxOS | comments (0) | -

PCLOS: 本日の野良リポジトリ (2018-11-02)

下記のパッケージを nora セクションに投入しました。

jd-2.8.9_181023-13
  • ソースを2018年10月23日版へ更新しました。
mozc-2.23.2815.102-4
  • 郵便番号データを2018年10月版へ更新しました。
  • ibus-mozc のデフォルトのアイコンに替えて、fcitx-mozc で使用しているアイコンを ibus-mozc でも使用するように変更しました。また、ibus-mozc のアイコンを流用している uim-mozc でも fcitx-mozc のアイコンを使用するように変更しました。
    (ibus-mozc のデフォルトのアイコンが 16x16 なのに比べて fcitx-mozc のアイコンは 48x48 で作成されており、Plasma の kimpanel 上でのアイコンの場合のような 16x16 以上のサイズでの表示品質が向上します)
mozc-neologd-ut-2.23.2815.102-6.20181004.1
  • mozc パッケージと同様に fcitx-mozc のアイコンを ibus-mozc や uim-mozc でも使用するように変更しました。
uim-1.8.8-3.git20181025
  • ソースを2018年10月25日のリビジョンへ更新しました。
setime-2.2-1
PCLinuxOS | comments (0) | -