scoopシステム崩壊の序曲
一月くらい前に拝見した、とあるツイート:
まぁ、アプリケーション自体は既に完成しているものだし、いざ何か問題があったら対応してくれるだろう。
だが、この時、障害は既に表面化していたのだ…
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.
ほぼ同じ症状でんがな!
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 に続きがあるようです。
-
Facebook製の高速・高圧縮率な圧縮ソフトウェア ↩︎
- 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 はダウンロードされてはいるけど、展開されてないッ!
にゃーん