패키지가 아직 설치되지 않은 경우 패키지를 설치하기 위한 Bash 스크립트(여러 패키지가 포함된 디렉터리에서) - Fedora 17

패키지가 아직 설치되지 않은 경우 패키지를 설치하기 위한 Bash 스크립트(여러 패키지가 포함된 디렉터리에서) - Fedora 17

rpms(및 해당 종속성)로 가득 찬 디렉토리가 있습니다. 현재 나는 yum localinstall ./packages_directory/*.rpm그 안에 있는 모든 패키지를 설치하고 있습니다. 이미 설치된 항목은 자동으로 건너뜁니다. 그러나 모든 패키지가 이미 설치되어 있으면 시간이 너무 오래 걸릴 수 있습니다. 패키지를 더 빨리 설치하고 싶습니다. 제가 생각하는 또 다른 옵션은 이러한 각 패키지가 이미 설치되어 있는지 확인하는 것입니다(아마도 다른 명령을 사용하여). 설치되어 있지 않으면 로컬 설치를 실행합니다. 누군가 이 스크립트를 작성하는 데 도움을 줄 수 있나요? 아니면 더 빠른 대안일 수도 있습니다.

답변1

나는 그것에 대한 스크립트를 생각해 냈습니다 (Fedora 17). 현재 스크립트 실행 디렉터리가 rpm이 위치한 디렉터리이기도하다고 가정합니다.

install_packages(){
    echo "Installing/Checking Fedora packages. Process may take a while..."
    for i in *
    do
        if test -f "$i" #Test if it is a file
        then
           i=$(basename $i) #Remove parent directory part of the string
           PACKAGE_NAME=${i::-4} #Remove .rpm from the end of file name
           if rpm -q $PACKAGE_NAME | grep "not installed" > /dev/null #If package not yet installed
           then
            echo "Installing $i ..."
                yum localinstall ./fc17/"$i" -y > /dev/null #Install this package 
           fi
        fi
    done    
    echo "Packages checked/installed"


}

Fedora 22의 경우 yum localinstall다음으로 바꾸십시오.dnf install

관련 정보