rpm version comparison in python - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: rpm version comparison in python (/thread-11800.html) |
rpm version comparison in python - asad - Jul-26-2018 Hi All , I have just read python and I was checking to code rpm version comparion . list1 = ["binutils-2.23.52.0.1-12.el7.x86_64","compat-libcap1-1.10-3.el7.x86_64","gcc-4.8.2-3.el7.x86_64","gcc-c++-4.8.2-3.el7.x86_64", "glibc-2.17-36.el7.i686","glibc-2.17-36.el7.x86_64","glibc-devel-2.17-36.el7.i686" ] list2 = [ basesystem-10.0-7.0.1.el7 (noarch) bash-4.2.46-29.el7_4 (x86_64) bc-1.06.95-13.el7 (x86_64) bind-libs-9.9.4-51.el7_4.2 (x86_64) bind-libs-lite-9.9.4-51.el7_4.2 (x86_64) bind-license-9.9.4-51.el7_4.2 (noarch) bind-utils-9.9.4-51.el7_4.2 (x86_64) binutils-2.25.1-32.base.el7_4.2 (x86_64) biosdevname-0.7.2-2.el7 (x86_64) btrfs-progs-4.9.1-1.0.2.el7 (x86_64) bzip2-1.0.6-13.el7 (x86_64) bzip2-libs-1.0.6-13.el7 (i686) bzip2-libs-1.0.6-13.el7 (x86_64) ca-certificates-2017.2.14-71.el7 (noarch) c-ares-1.10.0-3.el7 (x86_64) checkpolicy-2.5-4.el7 (x86_64) chkconfig-1.7.4-1.el7 (x86_64) compat-libcap1-1.10-7.el7 (x86_64) compat-libstdc++-33-3.2.3-72.el7 (i686) compat-libstdc++-33-3.2.3-72.el7 (x86_64) ]Is there any was we can perform a comparison with list1 and list2 and print all the new versions of rpm present in list2 and if certain rpm's which are present in list 1 but not in list 2 it should say missing rpm's and print the rpm name. I tried this : sys_pkg = 'binutils-2.23.52.0.1-12.el7.x86_64' repo_pkg = 'binutils-2.25.1-32.base.el7_4.2 (x86_64)' result = rpm.compare_packages(repo_pkg, sys_pkg) print result if result > 0: # repo_pkg is newer print('Repo package is newer') It works well for single rpm's for not for the list . If anyone is a aware of a code please share it with me I am unable to progress on this code . RE: rpm version comparison in python - buran - Jul-26-2018 Your second list is not defined correctly, add quotes to make elements sting, as well as commas. RE: rpm version comparison in python - asad - Jul-27-2018 Hi Plan to create 2 dictionary's data set there for need a regular expression get the package name and version name seperate: I want to get a regex to actually get the rpm name and version for comparison : binutils-2.23.52.0.1-12.el7.x86_64", compat-libcap1-1.10-3.el7.x86_64" compat-libstdc++-33-3.2.3-71.el7.i686 (^[a-zA-Z0-9\-]*)\-\d' First part of the regular expression is ^[a-zA-Z0-9\-] which means search for anything that begins with a letter (lower or upper) or a number up until you reach an hyphen sign (‘-‘). but it fails to match :compat-libstdc++-33-3.2.3-71.el7.i686 Please let me know what regex should i use to extract all 3 rpms names. Also let me know if there are web tools to build regex Good websites for regex tutorials. Is there any module in python which acheives this Thanks, RE: rpm version comparison in python - buran - Jul-27-2018 (Jul-27-2018, 12:57 PM)asad Wrote: let me know if there are web tools to build regexcheck http://regex101.com nice to test your regex, has explanations and can generate python code |