mieki256's diary



2018/08/11() [n年前の日記]

#1 [gimp] GIMP 2.10.4 Portable の pygimp.interp がおかしい

Windows10 x64 上に、GIMP 2.10.4 Portable をインストールしたけれど、Python-Fu を動かすための設定ファイル、pygimp.interp の内容が、どうもおかしいことに気づいたり。

症状。 :

例えば…。自分の場合、GIMP 2.10.4 Portable を C:\Prog\GIMP-2.10.4-Portable\ に置いてあるので…。
C:\Prog\GIMP-2.10.4-Portable\App\gimp\lib\gimp\2.0\interpreters\
内にある pygimp.interp を、以下のように書き換えてみた。

python=C:\Prog\GIMP-2.10.4-Portable\App\gimp\bin\pythonw.exe
python2=C:\Prog\GIMP-2.10.4-Portable\App\gimp\bin\pythonw.exe
/usr/bin/python=C:\Prog\GIMP-2.10.4-Portable\App\gimp\bin\pythonw.exe
:Python:E::py::\Prog\GIMP-2.10.4-Portable\App\gimp\bin\pythonw.exe:

GIMP 2.10.4 Portable を、動作状況を表示するメッセージ付きで起動してみる。
GIMPPortable.exe --verbose --console-messages

ログメッセージの中に、以下が表示されてしまう。pygimp.interp 内の記述が、何か間違っているらしい。
INIT: gimp_initialize
INIT: gimp_real_initialize
Parsing 'C:\Prog\GIMP-2.10.4-Portable\App\gimp\lib\gimp\2.0\interpreters\default.interp'
Parsing 'C:\Prog\GIMP-2.10.4-Portable\App\gimp\lib\gimp\2.0\interpreters\pygimp.interp'
GIMP-警告: インタープリターファイル 'C:\Prog\GIMP-2.10.4-Portable\App\gimp\lib\gimp\2.0\interpreters\pygimp.interp' 内で参照しているインタープリター '(NULL)' は無効です。

GIMP-警告: インタープリターファイル 'C:\Prog\GIMP-2.10.4-Portable\App\gimp\lib\gimp\2.0\interpreters\pygimp.interp' 内で参照しているインタープリター '(NULL)' は無効です。

Parsing 'C:\Prog\GIMP-2.10.4-Portable\App\gimp\lib\gimp\2.0\environ\default.env'
Parsing 'C:\Prog\GIMP-2.10.4-Portable\App\gimp\lib\gimp\2.0\environ\pygimp.env'
INIT: gui_initialize_after_callback
INIT: gimp_restore
Parsing 'C:\Prog\GIMP-2.10.4-Portable\Data\.gimp\parasiterc'

更に、GIMP が起動すると、pygimp.interp が、以下のように勝手に書き戻されてしまう。
python=C:\Prog\GIMP-2.10.4-Portable\App\gimp\Python\pythonw.exe
python2=C:\Prog\GIMP-2.10.4-Portable\App\gimp\bin\pythonw.exe
/usr/bin/python=C:\Prog\GIMP-2.10.4-Portable\App\gimp\Python\pythonw.exe
:Python:E::py::python:

App\gimp\Python\ フォルダは、GIMP 2.8 Portable の頃はあったけど、GIMP 2.10 Portable では無くなっている。一体誰が、存在しないパスに書き戻してしまっているのか…。

GIMP Portable 特有の不具合っぽい。 :

あちこちのファイルを眺めているうちに、なんとなく分かってきた。以下が犯人ではあるまいか。
C:\Prog\GIMP-2.10.4-Portable\App\AppInfo\Launcher\GIMPPortable.ini

GIMPPortable.ini 内の、以下の指定で、pygimp.interp を書き換えているように見える。
[FileWrite15]
Type=ConfigWrite
File=%PAL:AppDir%\gimp\lib\gimp\2.0\interpreters\pygimp.interp
Entry=python=
Value=%PAL:AppDir%\gimp\bin\pythonw.exe

[FileWrite16]
Type=ConfigWrite
File=%PAL:AppDir%\gimp\lib\gimp\2.0\interpreters\pygimp.interp
Entry=/usr/bin/python=
Value=%PAL:AppDir%\gimp\bin\pythonw.exe

[FileWrite17]
Type=ConfigWrite
File=%PAL:AppDir%\gimp\lib\gimp\2.0\interpreters\pygimp.interp
Entry=:Python:E::py:
Value=:pythonw.exe:

おそらく、GIMP Portable の起動時に、指定内容に基づいて、毎回 pygimp.interp を書き換えているのではないか…。しかし、ここに書かれているパスが、そもそも間違っていて、GIMP 2.8 時代のパスになっている。

試しに、GIMPPortable.ini を、GIMP 2.10向けに修正してみたところ、次回起動時、pygimp.interp も修正後の内容で書き換えられた。やはり、この指定が、pygimp.interp を妙な内容に書き換えてしまう犯人だった模様。

しかし、起動ログを見ると、相変わらず警告が出ている…。

pygimp.interp を眺めていたら、改行コードについて、CRLF と LF が混在している点がが気になった。もしかして、GIMP は *NIX文化圏のアプリだから、LFの改行コードしか受け付けない可能性はないか…。

GIMPPortable.ini を書き換えて、pygimp.interp の書き換え設定部分をコメントアウトしてみた。.iniファイルは、行頭に「;」をつけるとコメントアウトできるらしい。これで、pygimp.interp を書き換えない状態になるはず。
; [FileWrite15]
; Type=ConfigWrite
; File=%PAL:AppDir%\gimp\lib\gimp\2.0\interpreters\pygimp.interp
; Entry=python=
; Value=%PAL:AppDir%\gimp\bin\pythonw.exe
;
; [FileWrite16]
; Type=ConfigWrite
; File=%PAL:AppDir%\gimp\lib\gimp\2.0\interpreters\pygimp.interp
; Entry=/usr/bin/python=
; Value=%PAL:AppDir%\gimp\bin\pythonw.exe
;
; [FileWrite17]
; Type=ConfigWrite
; File=%PAL:AppDir%\gimp\lib\gimp\2.0\interpreters\pygimp.interp
; Entry=:Python:E::py:
; Value=:pythonw.exe:

かつ、pygimp.interp を、LF のみにして保存してみた。

この状態で GIMP を起動すると、起動時のログの中で、警告が出てこなくなった。
INIT: gimp_initialize
INIT: gimp_real_initialize
Parsing 'C:\Prog\GIMP-2.10.4-Portable\App\gimp\lib\gimp\2.0\interpreters\default.interp'
Parsing 'C:\Prog\GIMP-2.10.4-Portable\App\gimp\lib\gimp\2.0\interpreters\pygimp.interp'
Parsing 'C:\Prog\GIMP-2.10.4-Portable\App\gimp\lib\gimp\2.0\environ\default.env'
Parsing 'C:\Prog\GIMP-2.10.4-Portable\App\gimp\lib\gimp\2.0\environ\pygimp.env'
INIT: gui_initialize_after_callback
INIT: gimp_restore
Parsing 'C:\Prog\GIMP-2.10.4-Portable\Data\.gimp\parasiterc'

結論。 :

つまり、GIMP 2.10.4 Portable には、以下のバグがある。
  • GIMPPortable.ini 内の指定により、GIMP 2.8用の間違った pythonw.exe のパスで pygimp.interp が書き換えられてしまう。
  • 改行コードを LF にしないといけない設定ファイルに対して、CRLF を使って書き換えてしまって、GIMP が警告を出す。

よって、解決策としては…。
  • (GIMP 2.10.4 Portableインストールフォルダ)\App\AppInfo\Launcher\GIMPPortable.ini の、pygimp.interp 書き換え指定部分をコメントアウト(行頭に「;」を挿入)して、pygimp.interp を書き換えないようにする。
  • かつ、(GIMP 2.10.4 Portableインストールフォルダ)\App\gimp\lib\gimp\2.0\interpreters\pygimp.interp の、pythonw.exe までのパスを正しいものにする。
  • かつ、pygimp.interp は、改行コードを LF で統一して保存する。

自分の環境では、pygimp.interp を以下のようにした。
python=C:\Prog\GIMP-2.10.4-Portable\App\gimp\bin\pythonw.exe
python2=C:\Prog\GIMP-2.10.4-Portable\App\gimp\bin\pythonw.exe
/usr/bin/python=C:\Prog\GIMP-2.10.4-Portable\App\gimp\bin\pythonw.exe
:Python:E::py::pythonw.exe:

ちなみに、一番最後の行で pythonw.exe を指定することで、Python-Fuスクリプトを実行した際にDOS窓が開かない状態になる模様。

本来なら、最後の行に、
:Python:E::py::python:
と書いてあることで、上のほうで指定されてる「python=〜」が使われて、結局は pythonw.exe が呼び出され、DOS窓が開かない状態になるのではないかと思うのだけど…。

今回、「python=〜」を、GIMP が読み取れない、もしくは読み取っても、指定されたパスに目的のファイルが存在しないので、.py が呼ばれると、とにかく 「python」を呼び出した ―― python.exe を呼んでしまって、DOS窓が開いていたのだろう…。

問題。 :

これは GIMP Portable に限った話ではなく、PortableApps で公開されてるアプリ全般に言えるのかもしれないけれど。もしかして、設定ファイルを書き換える処理部分に、改行コードを LF にするか、CRLF にするか、指定・反映する機能も必要だったりするのではないかしらん。まあ、*NIX文化圏のアプリに対してのみ、必要になる機能だろうけど。

GIMP側で CR を読み飛ばす処理を入れる手もあるだろうけど。GIMP開発側 = *NIX文化圏からは、「LFで統一しろや」「なんでCRLFなんて使うんだ」と言われそうな予感も。

#2 [pc] USBメモリ I-O DATA KUM-8G/Kを購入

先日、DELL Latitude 10 がまともに動かなくなって焦ったので、OSをバックアップしておかないといかんなと。バックアップには8GB程度のUSBメモリが必要らしいので、近所のケーズデンキで、ワゴンに山積みになっていた、I-O DATA KUM-8G/K を購入。USB2.0接続。8GB。税抜きで660円ぐらいだった気がする。

_KUMシリーズ | USBメモリー | IODATA アイ・オー・データ機器

一応、CrystalDiskMark で速度測定。

iodata_kum8gk_benchmark_ss.png

-----------------------------------------------------------------------
CrystalDiskMark 5.1.2 x64 (C) 2007-2016 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

  Sequential Read (Q= 32,T= 1) :    22.310 MB/s
 Sequential Write (Q= 32,T= 1) :     6.893 MB/s
 Random Read 4KiB (Q= 32,T= 1) :     4.456 MB/s [  1087.9 IOPS]
Random Write 4KiB (Q= 32,T= 1) :     0.400 MB/s [    97.7 IOPS]
        Sequential Read (T= 1) :    22.229 MB/s
       Sequential Write (T= 1) :     5.872 MB/s
  Random Read 4KiB (Q= 1,T= 1) :     4.215 MB/s [  1029.1 IOPS]
 Random Write 4KiB (Q= 1,T= 1) :     0.382 MB/s [    93.3 IOPS]

  Test : 100 MiB [F: 0.0% (0.0/7384.0 MiB)] (x3)  [Interval=5 sec]
  Date : 2018/08/11 20:32:53
    OS : Windows 10 Professional [10.0 Build 17134] (x64)
    I-O DATA KUM-8G/K (USB2.0/8GB)

コレは…かなり遅いのではなかろうか…。まあ、最安で売られてた製品だし、USB3.0対応品でもないし…。

Check Flash で、エラーが無いか一応確認。

_故障や容量偽装のチェック| check flashの使い方 | SDカード博士のSDカードナビ
_SDカードやUSBメモリを診断・検査・修復できるツール Check Flash - ぼくんちのTV 別館

「一時ファイルを使う」「読み書きテスト」「最小パターン」「フルパス1回」でチェックしてみたけれど、エラーは出なかった。一応、8GB分、ちゃんと使える状態らしい。

スライド式のUSBメモリだけど、USB端子に差そうとして少し力を入れると、出したはずの金属端子部分がすぐに引っ込んでしまう。使うにはコツが必要そう。いや、ぶっちゃけ、使いづらい。でもまあ、安いから仕方ない…。

余談。DELL OS Recovery Toolのその後。 :

DELL OS Recovery Tool を使えば、DELL Latitude 10 のOS再インストール用ISOを入手できるのでは、と思っていたけれど。サービスタグやエクスプレスサービスコードを入力しても、「お前が持ってる機種用のイメージは用意されてねえから」と言われてしまった…。

このDELL製品、何かの拍子にインストール済みの Windows8 が壊れたら、手詰まりだな…。一般的なメーカ製ノートPCのように、HDD内の別パーティションから書き戻して、工場出荷時に戻せれば良かったのだけど…。

#3 [pc] Thunderbirdをバージョン 60 にアップデートしたけれど

メーラ、Thunderbird のバージョン60が公開されたらしいので、アップデートしたのだけれど。

_Mozilla、「Thunderbird 60」を正式公開 〜「Firefox Quantum」の“Photon”デザインを導入 - 窓の杜

導入していた拡張が使えなくなってしまった…。Thunderbird 60 は Firefox Quantum のアレコレを導入、と書いてあるけれど、そのせいだろうか…。もうちょっと待てばよかったか…。

#4 [anime] シンカリオン、エヴァコラボ回を視聴

ええもん見せてもろた…。これは本気のコラボや…。

以上、1 日分です。

過去ログ表示

Prev - 2018/08 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project