Wednesday, December 29, 2021

[SOLVED] yum list get last available package

Issue

I need to extract a substring of my latest available package in a repository

yum list myCompany-apps-MYPROJECT*

Available Packages

myCompany-apps-MYPROJECT-0.0.0.41-210409.noarch                      1-160                       myproject
myCompany-apps-MYPROJECT-0.0.0.42-210412.noarch                      1-162                       myproject
myCompany-apps-MYPROJECT-0.0.0.43-210412.noarch                      1-163                       myproject
myCompany-apps-MYPROJECT-0.0.0.44-210412.noarch                      1-173                       myproject
myCompany-apps-MYPROJECT-0.0.0.45-210412.noarch                      1-174                       myproject
myCompany-apps-MYPROJECT-0.0.0.46-210412.noarch                      1-176                       myproject
myCompany-apps-MYPROJECT-0.0.0.47-210412.noarch                      1-179                       myproject
myCompany-apps-MYPROJECT-1.0.0.1-210407.noarch                       1-146                       myproject
myCompany-apps-MYPROJECT-1.0.0.2-210407.noarch                       1-147                       myproject
myCompany-apps-MYPROJECT-1.0.0.3-210408.noarch                       1-149                       myproject
myCompany-apps-MYPROJECT-1.0.0.4-210408.noarch                       1-150                       myproject

I want to extract the part after MYPROJECT and before the datetime

I tried :

function lastVersion () {
  last_version=$(yum list myCompany-apps-MYPROJECT* | grep "myCompany-apps-MYPROJECT" | awk '{ print $1 }'| awk -F "-" '{ print $4 }' | sort -V | tail -1)
  echo ${last_version}
}

The output is : 1.0.0.4 , i need it to be : 0.0.0.47 ( the latest one as indicated in the 2nd column (1-179) , what represents the 2nd column exactly ?)

Thank you very much


Solution

all in one awk script...

... | awk '!/myCompany-apps-MYPROJECT/ {next} 
                                       {sub("-",".",$2)} 
                                max<$2 {max=$2; split($1,f,"-"); maxV=f[4]} 
                                   END {print maxV}' file

0.0.0.47


Answered By - karakfa