명령이 존재하지 않는 경우 명령 설치 [닫기]

명령이 존재하지 않는 경우 명령 설치 [닫기]

나는 이것을 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이미 설치했든 (희망적으로) 방금 설치했든 두 번째 설치 후에 설치해야 합니다.
  • json세 번째 항목 은 이미 설치되었거나 (희망적으로) 방금 설치되었든 나중에 설치해야 합니다 .

이것은 작동하지 않습니다. 명령이 존재하는지 확인하는 코드는 오류를 발생시키고 전체 레시피가 종료됩니다. 내가 원할 때 종료하고 원할 때 계속되도록 이 레시피의 흐름을 제어할 수 있는 방법이 필요합니다.

답변1

아직 익숙하지 않다면 자세히 살펴봐야 합니다.패키지 소스. pkgsrc적극적으로 개발되고 널리 지원되며 이러한 유형의 패키지 관리를 수행하는 강력한 도구입니다.

예제 makefile을 찾을 수 있습니다여기시작하려면.

관련 정보