Open5

scoopシステム崩壊の序曲

一月くらい前に拝見した、とあるツイート:

https://twitter.com/ShougoMatsu/status/1443541686542430217

まぁ、アプリケーション自体は既に完成しているものだし、いざ何か問題があったら対応してくれるだろう。

だが、この時、障害は既に表面化していたのだ…

scoop について詳しくは以下を参照。簡単に言うと、管理者権限なしに使えるコマンドプロンプト用パッケージマネージャです。

そもそもの発端はコレ

scoop でインストールした diff が動かなくなってるんです。これ、原因は分かっています。必要な DLL が不足しているんです。Dependency Walker で確認してみましょう。

どうも MSYS-ICONV-2.DLL がないような雰囲気です。diff.exe の実体があるフォルダーを確認してみましょう。

<DESKTOP-LGGUCRA:~/scoop/apps/diffutils/current/usr/bin>
$ ls
chattr.exe*                kill.exe*                  passwd.exe*
cmp.exe*                   ldd.exe*                   pldd.exe*
cygcheck.exe*              ldh.exe*                   ps.exe*
cygpath.exe*               locale.exe*                regtool.exe*
cygwin-console-helper.exe* lsattr.exe*                sdiff.exe*
diff.exe*                  minidumper.exe*            setfacl.exe*
diff3.exe*                 mkgroup.exe*               setmetamode.exe*
dumper.exe*                mkpasswd.exe*              ssp.exe*
gencat.exe*                mount.exe*                 strace.exe*
getconf.exe*               msys-2.0.dll               tzset.exe*
getfacl.exe*               msys-intl-8.dll            umount.exe*
<DESKTOP-LGGUCRA:~/scoop/apps/diffutils/current/usr/bin>

確かにありません。どうも、パッケージが壊れている可能性が大です。アプリケーションのアップデートが滞っているのは耳にしていましたが、パッケージレポジトリ main は別ですし、これのメンテは比較的迅速にされています。これはどうしたことか…

何か issue 出てないかなということで、diffutils が入っている main レポジトリ を「diffutils」で検索してみると、こんな issue が:

diff.exe --help
You'll notice that there's no output when you do this.

ほぼ同じ症状でんがな!

https://github.com/ScoopInstaller/Main/issues/1722#issuecomment-853862335

Still the very same bug - apparently, no single .exe inside this package is working. All are missing msys-iconv-2.dll.

原因もにらんだとおりです。

Apparently the zstd file is not extracted:

「明らかに zstd ファイル[1]が展開されていない」とあります。

Later I found this: #1513
and that: ScoopInstaller/scoop#3990

どうやら、scoop アプリケーション本体の方の issue に続きがあるようです。

脚注
  1. Facebook製の高速・高圧縮率な圧縮ソフトウェア ↩︎

https://github.com/ScoopInstaller/scoop/issues/3990
  • scoop で zstd の展開をサポートして欲しいという issue
  • scoop はパッケージの展開を 7z に依存している。7z のフォーク版は zstd をサポートしているものがある(7zip-std)が、公式版(7zip)はサポートしていない
  • 7zip-std をインストールして、7zip をアンインストールしても無駄(scoop 自身が使う 7zip が消えるわけではない:実際試してダメだった)
  • 7zip のメインラインに zstd サポートが入る見込みはあまりない(いくつも PR があるが、どれもマージされていない)
  • diffutils だけでなく gcc も入らなくなっている
  • もう scoop のアプリケーションは死んでて、メンテされてないんちゃうかと言い出す人が現れる。そして誰も否定しない(「消せ」言われてた。なんかギスギス感が…)

にゃーん

diffutils については、しばらく busybox の diff でしのぎましょう…
しかし、これはもうダメかもしれんね

(補足)

diffutils をインストールする時のメッセージでも原因が分かるんですね

$ scoop install diffutils
Installing 'diffutils' (3.7) [64bit]
diffutils-3.7-1-x86_64.pkg.tar.xz (342.0 KB) [==================================] 100%
Checking hash of diffutils-3.7-1-x86_64.pkg.tar.xz ... ok.
msys2-runtime-3.1.7-2-x86_64.pkg.tar.xz (2.7 MB) [==============================] 100%
Checking hash of msys2-runtime-3.1.7-2-x86_64.pkg.tar.xz ... ok.
libiconv-1.16-2-x86_64.pkg.tar.zst (725.6 KB) [=================================] 100%
Checking hash of libiconv-1.16-2-x86_64.pkg.tar.zst ... ok.
libintl-0.19.8.1-1-x86_64.pkg.tar.xz (30.8 KB) [================================] 100%
Checking hash of libintl-0.19.8.1-1-x86_64.pkg.tar.xz ... ok.
Extracting diffutils-3.7-1-x86_64.pkg.tar.xz ... done.
Extracting msys2-runtime-3.1.7-2-x86_64.pkg.tar.xz ... done.
Extracting libintl-0.19.8.1-1-x86_64.pkg.tar.xz ... done.
Linking ~\scoop\apps\diffutils\current => ~\scoop\apps\diffutils\3.7
Creating shim for 'cmp'.
Creating shim for 'diff'.
Creating shim for 'diff3'.
Creating shim for 'sdiff'.
'diffutils' (3.7) was installed successfully!

diffutils が依存している4つあるパッケージのうち、libiconv-1.16-2-x86_64.pkg.tar.zst はダウンロードされてはいるけど、展開されてないッ!

にゃーん

ログインするとコメントできます