これは簡単な方法ですが、好きなようには機能しません。
$(eval PkgName := $(shell pacman -Qq zsh | awk '{print $$1}'))
$(if ifeq ($(strip ${PkgName}),), pacman -Sy --noconfirm zsh)
私が望むのは、以前にインストールされていなかったパッケージをインストールすることだけです。システムにパッケージがない場合、インストールは正常に実行されます。ただし、インストールされていても実行されます。
私は同じ結果でGNU make条件付きifeqを試しました。
パッケージがシステムにすでに存在する場合、パッケージが実行されないようにする方法は?
答え1
次のように書くことができます。
$(eval PkgName := $(shell pacman -Qq zsh | awk '{print $$1}'))
$(if ${PkgName},,pacman -Sy --noconfirm zsh)
これにより、エラーなしですべての操作が実行されます。
もう一度ありがとうございます。これが将来的に誰かに役立つことを願っています。
答え2
$(if cond,true_path,false_path)
make と条件を混同していますifeq
。
ユースケースに応じて make 変数を定義$(STATUS)
し、if ステートメントに install がないことを確認できます。
STATUS := $(if $(strip $(shell pacman -Qq zsh | awk '{print $$1}')),,$(strip $(shell pacman -Sy --noconfirm zsh)))