一部のパッケージはデフォルトで最新バージョンに設定されており、名前にバージョン番号が含まれていません。たとえば、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に置き換えると、システムが利用できなくなり、回復できなくなります。