[LU-12395] Failed dependencies while installing lustre-client-tests and lustre-iokit rpms on RHEL 8.0 client Created: 06/Jun/19 Updated: 10/Mar/20 Resolved: 10/Jul/19 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | Lustre 2.13.0, Lustre 2.12.3 |
| Type: | Bug | Priority: | Critical |
| Reporter: | Jian Yu | Assignee: | Dongyang Li |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||||||||||
| Severity: | 3 | ||||||||||||||||
| Rank (Obsolete): | 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. |
| Comments |
| Comment by Peter Jones [ 06/Jun/19 ] |
|
Dongyang is looking into this |
| Comment by Dongyang Li [ 06/Jun/19 ] |
|
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. |
| Comment by Jian Yu [ 06/Jun/19 ] |
|
Hi Dongyang, # 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 |
| Comment by Gerrit Updater [ 07/Jun/19 ] |
|
Li Dongyang (dongyangli@ddn.com) uploaded a new patch: https://review.whamcloud.com/35094 |
| Comment by Dongyang Li [ 07/Jun/19 ] |
|
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. |
| Comment by Andreas Dilger [ 12/Jun/19 ] |
|
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. |
| Comment by Dongyang Li [ 12/Jun/19 ] |
|
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 |
| Comment by Gerrit Updater [ 16/Jun/19 ] |
|
Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35094/ |
| Comment by Peter Jones [ 16/Jun/19 ] |
|
Landed for 2.13 |
| Comment by Gerrit Updater [ 17/Jun/19 ] |
|
Jian Yu (yujian@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35251 |
| Comment by Minh Diep [ 21/Jun/19 ] |
|
this issue has not completed. we still need to split the lustre-client-tests rpm |
| Comment by Gerrit Updater [ 25/Jun/19 ] |
|
Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35251/ |
| Comment by Gerrit Updater [ 28/Jun/19 ] |
|
Minh Diep (mdiep@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35374 |
| Comment by Gerrit Updater [ 10/Jul/19 ] |
|
Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35374/ |
| Comment by Peter Jones [ 10/Jul/19 ] |
|
Now I think this is complete for 2.13 |
| Comment by Gerrit Updater [ 11/Jul/19 ] |
|
Minh Diep (mdiep@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35473 |
| Comment by Gerrit Updater [ 16/Jul/19 ] |
|
Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35473/ |