2016-10-19 2 views
0

필자는 필요에 따라 빌드 스크립트 (bash 또는 Makefile)를 개선하여 일부 필수 구성 요소를 설치하려고합니다.패키지 목록이 설치되어 있지 않은 경우에만 sudo로 패키지 목록을 설치 하시겠습니까?

패키지 목록이 길기 때문에 (10-15) 패키지가 설치되지 않은 경우에만 설치하고 싶습니다.

빌드 스크립트가 비 루트로 실행될 수 있으므로 sudo yum install을 한 번만 실행하고 필요한 경우에만 하나 이상의 패키지가 설치되어 있지 않은지 확인하십시오.

내 현재의 구현은 분명히 최적되지 않습니다 :

for PACKAGE in a b c ... ; do 
    yum list installed $PACKAGE >/dev/null 2>&1 || sudo yum install -q -y $PACKAGE ; 
done 

나는이 어떻게 할 수

?

+0

Yum은 패키지 목록을 얻을 수 있습니다. 루프없이 직접 시도 했습니까? – cohenjo

+0

매개 변수로 둘 이상의 패키지 이름을 지정하면 지정된 패키지 중 하나가 누락 된 경우 오류 코드가 반환되지 않습니다. 예를 들어 "a b"는 a가 설치되고 b가 유효하지 않으면 성공 (0)을 반환하고 쓸모 없게 만듭니다. – sorin

답변

0

당신은, 물론, 단지 파일에 설치된 패키지 목록을 넣고 루프에서 그에 대한 GREP을 실행하지만, 어떤 파일을 만들지 않도록하고자한다 수 rpm을 실행하는 일을한다 :

for p in a b c ... ; do 
    rpm -q > /dev/null 2>&1 $PACKAGE || sudo yum install -q -y $p 
done 

패키지 정보를 쿼리 할 때 rpm은 패키지가 발견되면 0을 반환하고 그렇지 않으면 0이 아닙니다.