🦕

Deno 1.13.0で過去にインストールしたCLIのエラーが出たら再インストールしよう

2021/08/13に公開

タイトルで全て書いていますが解説します。

Deno 1.13.0がリリースされた

2021/08/11にDenoのv1.13.0がリリースされました。

https://zenn.dev/magurotuna/articles/deno-release-note-1-13-0

こちらでプラグインシステムの刷新があり、deno run--allow-pluginオプションが消えて(--allow-ffiに変わって)います。


v1.12.2のdeno run --help


v1.13.0のdeno run --help

本記事執筆時点ではマニュアルに--allow-pluginの記述が残っていますが、
https://deno.land/manual@v1.13.0/getting_started/permissions

すでに修正PRが出ているので近いうちにマニュアルも更新されると思います。
https://github.com/denoland/manual/pull/48

旧バージョンでdeno install -Aしたものはエラーが出る

ということで、現バージョンでは--allow-pluginを使えないのですが、過去にdeno install -Aを使って導入したコマンドでエラーが発生することがあります。

これは、deno install -A--allow-xxxオプションを一つ一つ展開したdeno runコマンドを作成しているためです。
例として、自分が以前インストールしたeggsコマンドの中身は以下のようになっていました。

~/.deno/bin/eggs
#!/bin/sh
# generated by deno install
exec deno run --allow-read --allow-write --allow-net --allow-env --allow-run --allow-plugin --allow-hrtime --quiet --unstable 'https://x.nest.land/eggs@0.3.8/eggs.ts' "$@"

内部に--allow-pluginが含まれています。ここでエラーが発生します。

現バージョンでCLIツールを再インストールしよう

現在のバージョンで再インストールすればエラーは改善します。
-A--allow-pluginが展開されなくなるためです。

❯ deno install -Afq --unstable https://x.nest.land/eggs@0.3.8/eggs.ts
✅ Successfully installed eggs
/Users/kawarimidoll/.deno/bin/eggs

インストールコマンドは各ツールの公式に従えば問題ないはずですが、既存のコマンドを更新するため、-f(または--force)オプションが必要です。

インストールされたものを確認すると、--allow-pluginが消えています。

~/.deno/bin/eggs
#!/bin/sh
# generated by deno install
exec deno run --allow-read --allow-write --allow-net --allow-env --allow-run --allow-ffi --allow-hrtime --quiet --unstable 'https://x.nest.land/eggs@0.3.8/eggs.ts' "$@"

再インストールの必要なコマンドを探すワンライナー

複数のコマンドをインストールしている場合は、各々について再インストールの作業が必要となります。
以下のワンライナーで対象を列挙可能です[1]

❯ grep allow-plugin -rl ~/.deno/bin

Denoをダウングレードしたい場合

どうしても--allow-pluginを使いたい…!という場合はダウングレードしてしまうのも手です。
deno upgradeでバージョンを指定すればそのバージョンに切り替えることができます[2]

❯ deno upgrade --version 1.12.2

https://stackoverflow.com/questions/66687576/how-to-downgrade-deno

脚注
  1. インストール先を変えている場合は適宜修正してください ↩︎

  2. 前掲のヘルプもこれで表示させました ↩︎

Discussion