コマンドが存在しない場合のコマンドのインストール [閉じる]

コマンドが存在しない場合のコマンドのインストール [閉じる]

私はこれをMakefile

ARG_2 := $(word 2, $(MAKECMDGOALS))

command_exist=command -v $(1) >/dev/null 2>&1
command_not_exist=! command -v $(1) >/dev/null 2>&1

npmig:
    $(call command_not_exist,npm) && echo 'npm is not installed'
    $(call command_not_exist,ied) && npm install ied
    $(call command_not_exist,$(ARG_2)) && ied install $(ARG_2) -g

一般的なアイデアは、このようなことを実行でき、make npmig jsonインストールnpmされていないと実際のエラーが発生することです。インストールされていない場合はインストールされ、最終的iedにインストールされiedますjson

  • 最初の行以降にnpmチェックが失敗すると、プロセスは終了します。
  • iedすでにインストールしているか(希望的に)インストールしても、2番目のインストール後にインストールする必要があります。
  • json3番目のアイテムは、すでにインストールされているか(希望的に)インストールされている場合でも、後でインストールする必要があります。

これはうまくいきません。コマンドが存在することを確認するコードはエラーを生成し、レシピ全体が終了します。私が望むときに終了し、必要なときに続くようにこのレシピの流れを制御する方法が必要です。

答え1

まだ慣れていない場合は、詳しく見てください。パッケージソースpkgsrc積極的に開発され広くサポートされ、このタイプのパッケージ管理を実行する強力なツールです。

例のmakefileを見つけることができますここ始めるには。

関連情報