Gitのコミットログをグラフィカルに見せてくれるGitkですが、いつのころからか、Arch Linux の端末で実行すると、ウィンドウが開くまで数分かかり、さらに日本語が文字化けしてるという状態になっていました。
メインマシンではなかったので、見て見ぬふりを続けてきましたが、先月メモリを16Gバイトに4倍増して、機械学習のお勉強用などとしても使う機会が増えてくると「さすがにこれ以上は放置できない看過できないナントカセネバ!」とイライラしはじめ鼻息荒く調べてみると、割とあっさり「どうやらGitよりも先にインストールしていたAnacondaのせいだったのね」と判明しました。
まあAnacondaがすべて悪いかというと、そうも言いきれないのですが・・・とにかく以下の方法でGitkの文字化けは解消しました。
Gitkの文字が化け化けだ
Gitリポジトリのコミットログじゃなくてウィンドウ自体の日本語が化けてるんですよね。
\u…
なんて表示されているのはUnicodeの文字コードでしょう。
フォントが見つからないのかも。
2つのWishが混在するのが原因でした
GitkはWishを使います
Gitkは wish というコマンドを使っているそうです。
wishはtkパッケージに含まれるコマンドで /usr/bin/wish
に配置されるTcl/Tkのインタプリタ。
対話的に画面を作れるツールですね。
ArchLinux公式のGitの説明では、GitkやGitGuiなどのGuiツールを使うにはこの tk パッケージが必要だと書いてあります。
AnacondaもWishを使います
Anacondaもwishを使っているそうです。
しかもAnacondaは、ユーザーのホームディレクトリ以下に独自?の wish をセットアップし、かつ /usr/bin
のwish よりも独自のwishが優先的に実行されるように .bashrc を自動的に書き換えてしまいます(↓)。
# added by Anaconda3 Installer export PATH="/home/<user>/anaconda3/bin:$PATH"
/usr/bin
は $PATHに含まれているので、それより先にAnacondaのbinのwishが呼ばれてしまいます(<user>
はユーザー名に読み替えてください)。
ワタシはそもそもtkをインストールしていませんでしたが、それでもGitkがなんとか起動していたのは、Anacondaがセットアップしたwishが呼ばれていたからなんですね。
対策は?
tkをインストールする
tkをインストールするには、以下のようにすればOKですが、
$ sudo pacman -S tk
.bashrcで/usr/bin/wish
が優先されるように設定書き換え
というとで、.bashrcを以下のように書き換えて、 /usr/bin/wish
が優先されるようにします。
# added by Anaconda3 Installer export PATH="$PATH:/<user>/anaconda3/bin"
動作確認
ターミナルを立ち上げなおして、ちゃんと設定できたか確認しましょう。
まずは、 /usr/bin/
の wish が呼ばれるかどうか。
$ which wish /usr/bin/wish
そしてGitk。
$ gitk --all&
↓即座に起動&文字化け解消!
まとめると
以下の対策で Gitkが即座に起動するようになり、文字化けも解消しました。
- tkパッケージをインストール
- Anacondaのwishではなく
/usr/bin/wish
が呼ばれるように .bashrc を設定