Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-12395

Failed dependencies while installing lustre-client-tests and lustre-iokit rpms on RHEL 8.0 client

Details

    • 3
    • 9223372036854775807

    Description

      While installing lustre-client-tests and lustre-iokit rpms on RHEL 8.0 client, they hit the following dependency issues:

      error: Failed dependencies:
      	libmpi.so.40()(64bit) is needed by lustre-client-tests-2.12.54-1.el8.x86_64
      	python > 2.2 is needed by lustre-iokit-2.12.54-1.el8.x86_64
      

      On RHEL 8.0, openmpi provides "libmpi.so.40()(64bit)(openmpi-x86_64)", not "libmpi.so.40()(64bit)". There are python2 and python3 on RHEL 8.0, no python.

      Attachments

        Issue Links

          Activity

            [LU-12395] Failed dependencies while installing lustre-client-tests and lustre-iokit rpms on RHEL 8.0 client

            Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35094/
            Subject: LU-12395 build: require python2 for lustre-iokit
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 6f0fcc289887737f45687b5f8a15835aeab32ef4

            gerrit Gerrit Updater added a comment - Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35094/ Subject: LU-12395 build: require python2 for lustre-iokit Project: fs/lustre-release Branch: master Current Patch Set: Commit: 6f0fcc289887737f45687b5f8a15835aeab32ef4
            dongyang Dongyang Li added a comment -

            Yes we should still have the lustre-client-tests rpm which has the common binary and scripts,

            and 2 additional lustre-client-tests-openmpi and lustre-client-tests-mpich for the mpt tests only, like the example listed in the fedora wiki:

            https://fedoraproject.org/wiki/Packaging:MPI

            Still we need to make sure changing the specs won't break the build for old distros like CentOS7

            dongyang Dongyang Li added a comment - Yes we should still have the lustre-client-tests rpm which has the common binary and scripts, and 2 additional lustre-client-tests-openmpi and lustre-client-tests-mpich for the mpt tests only, like the example listed in the fedora wiki: https://fedoraproject.org/wiki/Packaging:MPI Still we need to make sure changing the specs won't break the build for old distros like CentOS7

            Does it make sense to split out the MPI tests into a separate RPM, namely lustre-client-tests-openmpi and lustre-client-tests-mpich, but keep the rest of the test binaries/scripts in lustre-client-tests? That avoids increasing the size of the build products. Alternately, we just build one or the other MPI RPMs, but name them appropriately and add the appropriate Requires: line so that it will refuse to install with the wrong packages.

            Since very few users beyond autotest will ever install lustre-client-tests-*mpi I don't think we need to spend too much time making this work everywhere.

            adilger Andreas Dilger added a comment - Does it make sense to split out the MPI tests into a separate RPM, namely lustre-client-tests-openmpi and lustre-client-tests-mpich , but keep the rest of the test binaries/scripts in lustre-client-tests ? That avoids increasing the size of the build products. Alternately, we just build one or the other MPI RPMs, but name them appropriately and add the appropriate Requires: line so that it will refuse to install with the wrong packages. Since very few users beyond autotest will ever install lustre-client-tests-*mpi I don't think we need to spend too much time making this work everywhere.
            dongyang Dongyang Li added a comment -

            I think I know what's going on with the MPI dependencies now.

            RHEL8 has rpm-mpi-hooks, which will generate the provides/requires for different mpi libs.

            https://fedoraproject.org//wiki/Changes/RpmMPIReqProv

            This is done to distinguish e.g. libmpi.so from openmpi and mpich. What that means is we should have 2 additional lutre-client-tests rpms, like lustre-client-tests-openmpi and lustre-client-tests-mpich to package the mpi tests, and they will have different dependencies on libmpi.so

            According to https://fedoraproject.org/wiki/Packaging:MPI

            the binary should be placed under /usr/lib64/openmpi/bin or /usr/lib64/mpich/bin

            This means we need to change the rpm build spec and maybe the test scripts assuming the location of the mpi tests.

            The same should also be done for the IOR package.

            Before that happens a walkaround is disabling the mpi tests, can be achieved by removing the openmpi/mpich packages from the build system, or use --enable-mpitests=no configure option.

            dongyang Dongyang Li added a comment - I think I know what's going on with the MPI dependencies now. RHEL8 has rpm-mpi-hooks, which will generate the provides/requires for different mpi libs. https://fedoraproject.org//wiki/Changes/RpmMPIReqProv This is done to distinguish e.g. libmpi.so from openmpi and mpich. What that means is we should have 2 additional lutre-client-tests rpms, like lustre-client-tests-openmpi and lustre-client-tests-mpich to package the mpi tests, and they will have different dependencies on libmpi.so According to  https://fedoraproject.org/wiki/Packaging:MPI the binary should be placed under /usr/lib64/openmpi/bin or /usr/lib64/mpich/bin This means we need to change the rpm build spec and maybe the test scripts assuming the location of the mpi tests. The same should also be done for the IOR package. Before that happens a walkaround is disabling the mpi tests, can be achieved by removing the openmpi/mpich packages from the build system, or use --enable-mpitests=no configure option.

            Li Dongyang (dongyangli@ddn.com) uploaded a new patch: https://review.whamcloud.com/35094
            Subject: LU-12395 build: require python2 for lustre-iokit
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: f56ae83d3125e2b5a32732386ba30f48f5151725

            gerrit Gerrit Updater added a comment - Li Dongyang (dongyangli@ddn.com) uploaded a new patch: https://review.whamcloud.com/35094 Subject: LU-12395 build: require python2 for lustre-iokit Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: f56ae83d3125e2b5a32732386ba30f48f5151725
            yujian Jian Yu added a comment -

            Hi Dongyang,
            I used the client rpms built by Jenkins:
            https://build.whamcloud.com/job/lustre-master/3904/arch=x86_64,build_type=client,distro=el8,ib_stack=inkernel/
            Here is the build log:
            https://build.whamcloud.com/job/lustre-master/3904/arch=x86_64,build_type=client,distro=el8,ib_stack=inkernel/consoleFull

            # rpm -qpR lustre-client-tests-2.12.54-1.el8.x86_64.rpm
            /bin/bash
            /bin/sh
            /usr/bin/getconf
            /usr/bin/perl
            attr
            kmod-lustre-client = 2.12.54
            kmod-lustre-client-tests = 2.12.54
            libc.so.6()(64bit)
            libc.so.6(GLIBC_2.14)(64bit)
            libc.so.6(GLIBC_2.2.5)(64bit)
            libc.so.6(GLIBC_2.28)(64bit)
            libc.so.6(GLIBC_2.3)(64bit)
            libc.so.6(GLIBC_2.3.4)(64bit)
            libc.so.6(GLIBC_2.4)(64bit)
            libc.so.6(GLIBC_2.7)(64bit)
            libkeyutils.so.1()(64bit)
            liblustreapi.so.1()(64bit)
            libmpi.so.40()(64bit)
            libpthread.so.0()(64bit)
            libpthread.so.0(GLIBC_2.2.5)(64bit)
            libreadline.so.7()(64bit)
            libtool
            lsof
            lustre-client = 2.12.54
            lustre-iokit
            perl
            perl(FileHandle)
            perl(Getopt::Std)
            perl(IO::Handle)
            perl(POSIX)
            perl(Socket)
            perl(strict)
            perl(vars)
            rpmlib(CompressedFileNames) <= 3.0.4-1
            rpmlib(FileDigests) <= 4.6.0-1
            rpmlib(PayloadFilesHavePrefix) <= 4.0-1
            rpmlib(PayloadIsXz) <= 5.2-1
            rsync
            rtld(GNU_HASH)
            
            # rpm -qa | grep mpi
            orc-compiler-0.4.28-2.el8.x86_64
            compiler-rt-7.0.1-1.module+el8+2560+c32c7af1.x86_64
            mpitests-mvapich2-psm2-5.4.2-4.el8.x86_64
            rpm-mpi-hooks-5-4.el8.noarch
            openmpi-devel-3.1.2-5.el8.x86_64
            omping-0.0.4-14.el8.x86_64
            mpitests-mvapich2-5.4.2-4.el8.x86_64
            exempi-2.4.5-2.el8.x86_64
            mpich-devel-3.2.1-9.el8.x86_64
            libcmpiCppImpl0-2.0.3-15.el8.x86_64
            openmpi-3.1.2-5.el8.x86_64
            mpich-3.2.1-9.el8.x86_64
            mpitests-openmpi-5.4.2-4.el8.x86_64
            mpitests-mpich-5.4.2-4.el8.x86_64
            
            # rpm -ivh IOR-2.10.3-wc1.x86_64.rpm 
            error: Failed dependencies:
            	libmpi.so.40()(64bit) is needed by IOR-2.10.3-wc1.x86_64
            
            yujian Jian Yu added a comment - Hi Dongyang, I used the client rpms built by Jenkins: https://build.whamcloud.com/job/lustre-master/3904/arch=x86_64,build_type=client,distro=el8,ib_stack=inkernel/ Here is the build log: https://build.whamcloud.com/job/lustre-master/3904/arch=x86_64,build_type=client,distro=el8,ib_stack=inkernel/consoleFull # rpm -qpR lustre-client-tests-2.12.54-1.el8.x86_64.rpm /bin/bash /bin/sh /usr/bin/getconf /usr/bin/perl attr kmod-lustre-client = 2.12.54 kmod-lustre-client-tests = 2.12.54 libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.28)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) libc.so.6(GLIBC_2.7)(64bit) libkeyutils.so.1()(64bit) liblustreapi.so.1()(64bit) libmpi.so.40()(64bit) libpthread.so.0()(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit) libreadline.so.7()(64bit) libtool lsof lustre-client = 2.12.54 lustre-iokit perl perl(FileHandle) perl(Getopt::Std) perl(IO::Handle) perl(POSIX) perl(Socket) perl(strict) perl(vars) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1 rsync rtld(GNU_HASH) # rpm -qa | grep mpi orc-compiler-0.4.28-2.el8.x86_64 compiler-rt-7.0.1-1.module+el8+2560+c32c7af1.x86_64 mpitests-mvapich2-psm2-5.4.2-4.el8.x86_64 rpm-mpi-hooks-5-4.el8.noarch openmpi-devel-3.1.2-5.el8.x86_64 omping-0.0.4-14.el8.x86_64 mpitests-mvapich2-5.4.2-4.el8.x86_64 exempi-2.4.5-2.el8.x86_64 mpich-devel-3.2.1-9.el8.x86_64 libcmpiCppImpl0-2.0.3-15.el8.x86_64 openmpi-3.1.2-5.el8.x86_64 mpich-3.2.1-9.el8.x86_64 mpitests-openmpi-5.4.2-4.el8.x86_64 mpitests-mpich-5.4.2-4.el8.x86_64 # rpm -ivh IOR-2.10.3-wc1.x86_64.rpm error: Failed dependencies: libmpi.so.40()(64bit) is needed by IOR-2.10.3-wc1.x86_64
            dongyang Dongyang Li added a comment - - edited

            Jian,

            Can you share how did you built the rpms? I just built the client rpms and lustre-client-tests doesn't have dependency on libmpi, and I could not find where do we insert the dependency on libmpi in the spec:

            [root@rhel8 lustre-release]# rpm -qpR ./lustre-client-tests-2.12.54-1.el8.x86_64.rpm 
            /bin/bash
            /bin/sh
            /usr/bin/getconf
            /usr/bin/perl
            attr
            kmod-lustre-client = 2.12.54
            kmod-lustre-client-tests = 2.12.54
            libc.so.6()(64bit)
            libc.so.6(GLIBC_2.14)(64bit)
            libc.so.6(GLIBC_2.2.5)(64bit)
            libc.so.6(GLIBC_2.28)(64bit)
            libc.so.6(GLIBC_2.3)(64bit)
            libc.so.6(GLIBC_2.3.4)(64bit)
            libc.so.6(GLIBC_2.4)(64bit)
            libkeyutils.so.1()(64bit)
            liblustreapi.so.1()(64bit)
            libpthread.so.0()(64bit)
            libpthread.so.0(GLIBC_2.2.5)(64bit)
            libtool
            lsof
            lustre-client = 2.12.54
            lustre-iokit
            perl
            perl(FileHandle)
            perl(Getopt::Std)
            perl(IO::Handle)
            perl(POSIX)
            perl(Socket)
            perl(strict)
            perl(vars)
            rpmlib(CompressedFileNames) <= 3.0.4-1
            rpmlib(FileDigests) <= 4.6.0-1
            rpmlib(PayloadFilesHavePrefix) <= 4.0-1
            rpmlib(PayloadIsXz) <= 5.2-1
            rsync
            rtld(GNU_HASH)
            

            Can you also share the output of "rpm --qpR" on the lustre-client-tests rpm file and the output of "rpm -qa | grep mpi"?

            the dependency on python by lustre-iokit is there and can be easily fixed.

            dongyang Dongyang Li added a comment - - edited Jian, Can you share how did you built the rpms? I just built the client rpms and lustre-client-tests doesn't have dependency on libmpi, and I could not find where do we insert the dependency on libmpi in the spec: [root@rhel8 lustre-release]# rpm -qpR ./lustre-client-tests-2.12.54-1.el8.x86_64.rpm /bin/bash /bin/sh /usr/bin/getconf /usr/bin/perl attr kmod-lustre-client = 2.12.54 kmod-lustre-client-tests = 2.12.54 libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.28)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) libkeyutils.so.1()(64bit) liblustreapi.so.1()(64bit) libpthread.so.0()(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit) libtool lsof lustre-client = 2.12.54 lustre-iokit perl perl(FileHandle) perl(Getopt::Std) perl(IO::Handle) perl(POSIX) perl(Socket) perl(strict) perl(vars) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1 rsync rtld(GNU_HASH) Can you also share the output of "rpm --qpR" on the lustre-client-tests rpm file and the output of "rpm -qa | grep mpi"? the dependency on python by lustre-iokit is there and can be easily fixed.
            pjones Peter Jones added a comment -

            Dongyang is looking into this

            pjones Peter Jones added a comment - Dongyang is looking into this

            People

              dongyang Dongyang Li
              yujian Jian Yu
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: