Chapter 11

(追記)トラブルシューティング

hymkor
hymkor
2022.02.23に更新

nyagos を 4.4.9_x から 4.4.10_x へバージョンアップできない

バージョンナンバーの桁数を増えると、インストール済みのバージョンと最新バージョンの比較がうまくゆかないようです(ASCII順で比較してる?)。この場合、scoop update nyagos ではなく、一度アンインストールしてから再インストールすれば解決します。

$ scoop uninstal nyagos
$ scoop install nyagos

diffutils 3.7 の diff が動かない

diff.exe が必要とする msys-iconv-2.dll が入っていないため、起動すらできないようです。

本来であれば scoop install diffutils のタイミングで、 libiconv-1.16-2-x86_64.pkg.tar.zst が展開されてインストールされるのですが、scoop が利用している 7-zip には zstd を展開する機能がなく、パッケージのダウンロードまでしか出来ていないようです。

当面 scoop で zstd でサポートされる可能性は低いため、今のところ以下のような回避策をとるしかないようです。

  1. unxutils (2007.03.01) をかわりに使う ( scoop install unxutils )
  2. busybox (4487-gd239d2d52) をかわりに使う ( scoop install busybox でインストール。利用は busybox diff を使う)

他にも scoop で使われている 7z.exe を zstd 対応のものに差し替える、MSYS や msys-iconv-2.dll だけを別途自前で入れるなども考えられます(が、未検証です)

参考

gvim などGUIアプリを起動すると終了待ちになる

通常、CMD.EXE は CUI アプリだと終了するまでプロンプトを出さず、 GUI アプリだと終了を待たずにプロンプトを出すという動作をします。ですが、scoop でインストールしたアプリは %PATH% 上にあるプロクシー的なEXEファイルが CUI であるため、GUIアプリも CUI と誤認識されて終了待ちになってしまう問題がありました。

この問題は最近の scoop では解消されたのですが、有効にするにはプロクシーの EXE ファイルを更新しないと反映されません。そのため、直っているのに気づいていない人も多いと思います。

プロクシーの EXE ファイルを更新するには

scoop reset vim-kaoriya

とすればよいようです。これで vim (kaoriya版) を起動する時、プロンプトがすぐ表示されるようになります。

とはいえ、GUIエディターでこれを行うと、git のコミットメッセージ編集など他のプログラムの子プロセスとして実行した場合に、編集が終わっていないのに次の処理が動いてしまうという弊害が発生してしまいます。

対処法は2つ

(1)その GUI アプリも CUI アプリ扱いする

昔の動作に戻します。

$ scoop config shim 71
$ scoop reset vim-kaoriya
$ scoop config rm shim

shim というグローバル設定を「一時的に」 71 という値(これも語源がよく分からない値だ)に設定して、その間に vim-kaoriya のプロクシー EXE をリセットすればよいようです。

(2)バッチや他のプロセスから呼び出す時はプロクシーを介さないようにする

git から gvim を呼び出す場合を例に説明します。
プロクシーでない本体のありかを確認

$ scoop which vim
~\scoop\apps\vim-kaoriya\current\vim.exe

それを git のエディターに指定します。

$ SET GIT_EDITOR=C:/Users/ユーザ名/scoop/apps/vim-kaoriya/current/gvim.exe

(gitの話ですが、GIT_EDITOR はパス区切りに / (forwardslash) を使わないといけないようです)

参考