昨年2019年の6月末に ironsand さんが scoop という Windows のパッケージマネージャに nyagos 4.4.5_2 を登録してくださいました(ありがとうございました)。
今頃になりましたが、どんなものか、試してみました。
(1)scoop をインストールする
インストーラーを PowerShell でダウンロード即実行します。スクリプトを実行するので、RemoteSigne 権限で行う必要があります(この権限付けがめんどいですよね)
$ powershell -ExecutionPolicy RemoteSigned "iwr -useb get.scoop.sh | iex" Initializing... Downloading scoop... Extracting... Creating shim... Downloading main bucket... Extracting... Adding ~\scoop\shims to your path. 'lastupdate' has been set to '2020-01-26T20:56:49.1761305+09:00' Scoop was installed successfully! Type 'scoop help' for instructions.
(2) scoop にパスを通すコマンドプロンプトを再起動する
環境変数 PATH に
環境変数 PATH のデフォルト設定が変更されているので、コマンドプロンプトを再起動して環境変数をリロードする%USERPROFILE%\scoop\shims
を追加します。
(3)nyagos をインストールする
$ scoop install nyagos Installing 'nyagos' (4.4.5_2) [64bit] nyagos-4.4.5_2-windows-amd64.zip (3.1 MB) [===========================] 100% Checking hash of nyagos-4.4.5_2-windows-amd64.zip ... ok. Extracting nyagos-4.4.5_2-windows-amd64.zip ... done. Linking ~\scoop\apps\nyagos\current => ~\scoop\apps\nyagos\4.4.5_2 Creating shim for 'nyagos'. 'nyagos' (4.4.5_2) was installed successfully!
(4)ちゃんと入ったかな?
$ where nyagos C:\Users\hymko\Share\bin64\nyagos.exe C:\Users\hymko\Share\bin64\nyagos.lua C:\Users\hymko\Share\bin\nyagos C:\Users\hymko\Share\bin\nyagos.exe C:\Users\hymko\Share\bin\nyagos.lua C:\Users\hymko\scoop\shims\nyagos.exe C:\Users\hymko\scoop\shims\nyagos.ps1
最後の2行が今回追加されたようなので、これがインストールされた nyagos なのかなと思ったら、ちょっと違うようです。
<DESKTOP-LGGUCRA:~/scoop/shims> $ ls -ltr -rwxa-- 7,680 Dec 1 03:27:28 nyagos.exe* -rwxa-- 271 Jan 26 20:56:43 scoop.ps1* -rwxa-- 339 Jan 26 20:56:43 scoop.cmd* -rw-a-- 116 Jan 26 20:56:43 scoop -rwxa-- 269 Jan 26 21:01:19 nyagos.ps1* -rw-a-- 63 Jan 26 21:01:20 nyagos.shim
俺の nyagos がこんなに小さいわけがない(8KB どころの話じゃなくて、8MBくらいある。でも、実行するとちゃんと起動します。
<DESKTOP-LGGUCRA:~/scoop/shims> $ ./nyagos.exe Nihongo Yet Another GOing Shell 4.4.5_2-windows-amd64 by go1.13.3 (c) 2014-2019 NYAOS.ORG <http://www.nyaos.org> <DESKTOP-LGGUCRA:~/scoop/shims> $ lua_e "print(nyagos.exe)" C:\Users\hymko\scoop\apps\nyagos\current\nyagos.exe
どうやら、この nyagos.exe はプロクシー的なプログラムで、実体である
%USERPROFILE%\scoop\apps\(アプリケーション名)\current\(アプリケーション名).exe
を呼び出す仕組みになっているようです。なるほど、これなら環境変数 PATH に無秩序にディレクトリを追加しなくて済みそうですね。よく考えられています。
<DESKTOP-LGGUCRA:~/scoop/apps/nyagos> $ ls -ltr dr-x--- 0 Jan 26 21:01:19 current@ -> C:\Users\hymko\scoop\apps\nyagos\4.4.5_2 drwx--- 0 Jan 26 21:01:20 4.4.5_2/
アプリケーションに関するファイルは基本全部 %USERPROFILE%\scoop\apps\(アプリケーション名)\バージョン\
の中に入っていて、current は最新バージョンに対するジャンクションみたいです。考えた人、あたまいいですね。
(追記)
このあと、scoop install curl
もやってみました。
<DESKTOP-LGGUCRA:~/scoop/shims> $ ls -ltr -rwxa-- 7,680 Dec 1 03:27:28 nyagos.exe* -rwxa-- 7,680 Dec 1 03:27:28 curl.exe* -rwxa-- 7,680 Dec 1 03:27:28 7z.exe*
curl が依存している 7z も一緒に入ったようです。で、全部同じサイズです。
<DESKTOP-LGGUCRA:~/scoop/shims> $ fc /b nyagos.exe curl.exe ファイル nyagos.exe と CURL.EXE を比較しています FC: 相違点は検出されませんでした
同じバイナリのようです。ARGV[0] で挙動を変えているパターンのようですね。
$ fsutil.exe hardlink list nyagos.exe \Users\hymko\scoop\shims\nyagos.exe
でも、別にハードリンクされているわけではなさそうです。あらー