標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

パッケージマネージャの「scoop」経由で nyagos をインストールしてみました。

昨年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 に %USERPROFILE%\scoop\shims を追加します。 環境変数 PATH のデフォルト設定が変更されているので、コマンドプロンプトを再起動して環境変数をリロードする

(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

でも、別にハードリンクされているわけではなさそうです。あらー