パッケージがまだインストールされていない場合は、パッケージをインストールするためのBashスクリプト(複数のパッケージを含むディレクトリから) - Fedora 17

パッケージがまだインストールされていない場合は、パッケージをインストールするためのBashスクリプト(複数のパッケージを含むディレクトリから) - Fedora 17

rpms(およびその依存関係)でいっぱいのディレクトリがあります。現在私はyum localinstall ./packages_directory/*.rpmその中にあるすべてのパッケージをインストールしています。すでにインストールされている項目は自動的にスキップされます。ただし、すべてのパッケージがすでにインストールされている場合は、時間がかかりすぎる可能性があります。パッケージを早くインストールしたいです。私が考えるもう1つのオプションは、これらの各パッケージがすでにインストールされていることを確認することです(おそらく別のコマンドを使用して)。インストールされていない場合は、ローカルインストールを実行します。誰かがこのスクリプトを書くのに役立ちますか?あるいは、より速い選択肢かもしれません。

答え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

関連情報