最新バージョンのパッケージを自動的に選択する方法

最新バージョンのパッケージを自動的に選択する方法

一部のパッケージはデフォルトで最新バージョンに設定されており、名前にバージョン番号が含まれていません。たとえば、PHP

$ apt-cache search php*-fpm --names-only

php-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) (default) php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)

これがすべてのパッケージに該当するわけではありません。命名規則に従って最新のパッケージを自動的に選択するbash機能を実行したいと思います。

たとえば、最新バージョンをインストールするには、oracle-java-installer次の手順を実行します。

sudo add-apt-repository ppa:webupd8team/java -y && sudo apt-get update

aptget install oracle-java*-installer

これが私のaptget機能がどのように機能するかです。

apt-cache次の4つの結果を検索して検索する必要がある正規表現があります。

oracle-java7-installer - Oracle Java(TM) Development Kit (JDK) 7
oracle-java6-installer - Oracle Java(TM) Development Kit (JDK) 6
oracle-java8-installer - Oracle Java(TM) Development Kit (JDK) 8
oracle-java9-installer - Oracle Java(TM) Development Kit (JDK) 9

oracle-java9-installer結果から抽出され、apt-get installパッケージ名を使用して実行されます。

私が使った正規表現はここでうまくいきます。正規表現しかし、端末で動作するように正しく外れることはできません。

apt-cache search結果から最新のパッケージ名を抽出する方法が見つかりませんでした。

function aptget(){

    pkg="$2"
    # versionRegex="(\d+\.)?(\d+\.)?(\d+)?"
    result="${pkg/\*/$versionRegex}"

    pkg_list=$(apt-cache search --names-only "^$result$")

    echo $pkg_list

    # pkg=

    set -- "${@:1:1}" "$pkg" "${@:3}"
    sudo apt-get "$@"
}

bashで正規表現を操作するのに役立つ必要があり、最新のパッケージの名前だけを検索する方法についてのコメントも聞きたいです。

ベストアンサー1

これはとても悪い考えです。命名規則は、メジャーバージョン間でコンテンツが中断されるのを防ぐことです。

すべての展開には、特定の主要ソフトウェアの特定のバージョンが必要です。 python 2.xをpython3に置き換えると、システムが利用できなくなり、回復できなくなります。

おすすめ記事