[LU-5834] Lustre installation fails if lustre client already install Created: 31/Oct/14  Updated: 13/Jul/17  Resolved: 01/May/17

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: None
Fix Version/s: Lustre 2.10.0

Type: Bug Priority: Minor
Reporter: Mathieu Drapeau (Inactive) Assignee: Andreas Dilger
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Related
is related to LU-7228 lustre rpm should provide lustre-client Resolved
Severity: 3
Rank (Obsolete): 16357

 Description   

When installing lustre server RPMs on a host that previously had lustre client RPMs, the installation of the lustre server RPMs should remove all lustre-client RPM components before proceeding.

==============================================================================================================================================================================================================
 Package                 Arch            Version                                                             Repository                                                                                  Size
==============================================================================================================================================================================================================
Installing:
 dkms                    noarch          2.2.0.3-28.git.7c3e7c5.el6                                          /dkms-2.2.0.3-28.git.7c3e7c5.el6.noarch                                                    222 k
 libnvpair1              x86_64          0.6.3-1.1.el6                                                       /libnvpair1-0.6.3-1.1.el6.x86_64                                                           231 k
 libuutil1               x86_64          0.6.3-1.1.el6                                                       /libuutil1-0.6.3-1.1.el6.x86_64                                                            223 k
 libzfs2                 x86_64          0.6.3-1.1.el6                                                       /libzfs2-0.6.3-1.1.el6.x86_64                                                              829 k
 libzpool2               x86_64          0.6.3-1.1.el6                                                       /libzpool2-0.6.3-1.1.el6.x86_64                                                            3.7 M
 lustre                  x86_64          2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3          /lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64                   14 M
 lustre-dkms             noarch          2.5.25-1.el6                                                        /lustre-dkms-2.5.25-1.el6.noarch                                                            29 M
 lustre-osd-zfs          x86_64          2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3          /lustre-osd-zfs-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64          484 k
 spl                     x86_64          0.6.3-1.1.el6                                                       /spl-0.6.3-1.1.el6.x86_64                                                                   48 k
 spl-dkms                noarch          0.6.3-1.1.el6                                                       /spl-dkms-0.6.3-1.1.el6.noarch                                                             2.8 M
 zfs                     x86_64          0.6.3-1.1.el6                                                       /zfs-0.6.3-1.1.el6.x86_64                                                                  765 k
 zfs-dkms                noarch          0.6.3-1.1.el6                                                       /zfs-dkms-0.6.3-1.1.el6.noarch                                                              11 M
 zfs-dracut              x86_64          0.6.3-1.1.el6                                                       /zfs-dracut-0.6.3-1.1.el6.x86_64                                                            13 k

Transaction Summary
==============================================================================================================================================================================================================
Install      13 Package(s)

Total size: 63 M
Installed size: 63 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test


Transaction Check Error:
  file /sbin/mount.lustre from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/bin/lfs from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/bin/req_layout from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/lib64/libcfsutil.a from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/lib64/liblustre.a from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/lib64/liblustre.so from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/lib64/liblustreapi.a from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/lib64/liblustreapi.so from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/lib64/libptlctl.a from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/lib64/lustre/snmp/lustresnmp.so from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/debugctl from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/l_getidentity from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/lctl from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/lhsmtool_posix from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/ll_decode_filter_fid from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/ll_recover_lost_found_objs from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/llog_reader from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/llverdev from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/llverfs from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/loadgen from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/lr_reader from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/lshowmount from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/lst from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/lstclient from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/ltrack_stats from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/lustre_rsync from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/ptlctl from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/routerstat from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/wirecheck from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64
  file /usr/sbin/wiretest from install of lustre-2.5.25-2.6.32_431.29.2.el6_lustre.ga637590.x86_64_g1acbec3.x86_64 conflicts with file from package lustre-client-2.5.26-2.6.32_431.29.2.el6.x86_64.x86_64

Error Summary
-------------



 Comments   
Comment by Gerrit Updater [ 13/May/16 ]

Andreas Dilger (andreas.dilger@intel.com) uploaded a new patch: http://review.whamcloud.com/20162
Subject: LU-5834 build: obsolete lustre-client if installing server
Project: fs/lustre-release
Branch: master
Current Patch Set: 1
Commit: 27f89fa50f360ec8fd04f8d02a0d15fddd335f88

Comment by Gerrit Updater [ 01/May/17 ]

Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/20162/
Subject: LU-5834 build: obsolete lustre-client if installing server
Project: fs/lustre-release
Branch: master
Current Patch Set:
Commit: 7532409b3a0760a74e0bbaa86ecb3a0a2d0d011d

Comment by Peter Jones [ 01/May/17 ]

Landed for 2.10

Comment by Brian Murrell (Inactive) [ 13/Jul/17 ]

While it's ironic that it was a member of the HYD team that originally requested this change, I wonder if it's really the behaviour we (the royal we, not the HYD we) desire.

It seems like a good idea on the face of it, but it has undesirable side-effects in certain use cases.

If one has both the server and client repositories configured and enabled on a node and one tries to install lustre-client one gets this behaviour:

# yum install -y --exclude kernel-debug lustre-client kmod-lustre-client-2.10.0_RC1
Loaded plugins: fastestmirror
Package lustre-client is obsoleted by lustre-dkms, trying to install lustre-dkms-2.10.0-1.el7.noarch instead
Resolving Dependencies
--> Running transaction check
---> Package kmod-lustre-client.x86_64 0:2.10.0_RC1-1.01.el7.centos will be installed
---> Package lustre-dkms.noarch 0:2.10.0-1.el7 will be installed
--> Processing Dependency: zfs-dkms >= 0.6.1 for package: lustre-dkms-2.10.0-1.el7.noarch
--> Processing Dependency: spl-dkms >= 0.6.1 for package: lustre-dkms-2.10.0-1.el7.noarch
--> Processing Dependency: dkms >= 2.2.0.3-28.git.7c3e7c5 for package: lustre-dkms-2.10.0-1.el7.noarch
--> Processing Dependency: lustre-osd-zfs-mount for package: lustre-dkms-2.10.0-1.el7.noarch
--> Processing Dependency: kernel-devel for package: lustre-dkms-2.10.0-1.el7.noarch
--> Processing Dependency: gcc for package: lustre-dkms-2.10.0-1.el7.noarch
--> Processing Dependency: /usr/bin/expect for package: lustre-dkms-2.10.0-1.el7.noarch
--> Running transaction check
---> Package dkms.noarch 0:2.3-5.20170523git8c3065c.el7 will be installed
---> Package expect.x86_64 0:5.45-14.el7_1 will be installed
--> Processing Dependency: libtcl8.5.so()(64bit) for package: expect-5.45-14.el7_1.x86_64
---> Package gcc.x86_64 0:4.8.5-11.el7 will be installed
--> Processing Dependency: cpp = 4.8.5-11.el7 for package: gcc-4.8.5-11.el7.x86_64
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.5-11.el7.x86_64
--> Processing Dependency: libmpfr.so.4()(64bit) for package: gcc-4.8.5-11.el7.x86_64
--> Processing Dependency: libmpc.so.3()(64bit) for package: gcc-4.8.5-11.el7.x86_64
---> Package kernel-devel.x86_64 0:3.10.0-514.26.2.el7 will be installed
---> Package lustre-osd-zfs-mount.x86_64 0:2.10.0-1.el7 will be installed
--> Processing Dependency: libzfs.so.2()(64bit) for package: lustre-osd-zfs-mount-2.10.0-1.el7.x86_64
---> Package spl-dkms.noarch 0:0.6.5.9-1.el7 will be installed
---> Package zfs-dkms.noarch 0:0.6.5.9-1.el7 will be installed
--> Running transaction check
---> Package cpp.x86_64 0:4.8.5-11.el7 will be installed
---> Package glibc-devel.x86_64 0:2.17-157.el7_3.4 will be installed
--> Processing Dependency: glibc-headers = 2.17-157.el7_3.4 for package: glibc-devel-2.17-157.el7_3.4.x86_64
--> Processing Dependency: glibc = 2.17-157.el7_3.4 for package: glibc-devel-2.17-157.el7_3.4.x86_64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.17-157.el7_3.4.x86_64
---> Package libmpc.x86_64 0:1.0.1-3.el7 will be installed
---> Package libzfs2.x86_64 0:0.6.5.9-1.el7 will be installed
--> Processing Dependency: libzpool.so.2()(64bit) for package: libzfs2-0.6.5.9-1.el7.x86_64
--> Processing Dependency: libuutil.so.1()(64bit) for package: libzfs2-0.6.5.9-1.el7.x86_64
--> Processing Dependency: libnvpair.so.1()(64bit) for package: libzfs2-0.6.5.9-1.el7.x86_64
---> Package mpfr.x86_64 0:3.1.1-4.el7 will be installed
---> Package tcl.x86_64 1:8.5.13-8.el7 will be installed
--> Running transaction check
---> Package glibc.x86_64 0:2.17-157.el7_3.1 will be updated
--> Processing Dependency: glibc = 2.17-157.el7_3.1 for package: glibc-common-2.17-157.el7_3.1.x86_64
---> Package glibc.x86_64 0:2.17-157.el7_3.4 will be an update
---> Package glibc-headers.x86_64 0:2.17-157.el7_3.4 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.17-157.el7_3.4.x86_64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.17-157.el7_3.4.x86_64
---> Package libnvpair1.x86_64 0:0.6.5.9-1.el7 will be installed
---> Package libuutil1.x86_64 0:0.6.5.9-1.el7 will be installed
---> Package libzpool2.x86_64 0:0.6.5.9-1.el7 will be installed
--> Running transaction check
---> Package glibc-common.x86_64 0:2.17-157.el7_3.1 will be updated
---> Package glibc-common.x86_64 0:2.17-157.el7_3.4 will be an update
---> Package kernel-headers.x86_64 0:3.10.0-514.26.2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================
 Package                         Arch              Version                                   Repository                                 Size
=============================================================================================================================================
Installing:
 kmod-lustre-client              x86_64            2.10.0_RC1-1.01.el7.centos                managerforlustre-lustre-client            2.1 M
 lustre-dkms                     noarch            2.10.0-1.el7                              lustre                                     13 M
Installing for dependencies:
 cpp                             x86_64            4.8.5-11.el7                              base                                      5.9 M
 dkms                            noarch            2.3-5.20170523git8c3065c.el7              epel                                       78 k
 expect                          x86_64            5.45-14.el7_1                             base                                      262 k
 gcc                             x86_64            4.8.5-11.el7                              base                                       16 M
 glibc-devel                     x86_64            2.17-157.el7_3.4                          updates                                   1.1 M
 glibc-headers                   x86_64            2.17-157.el7_3.4                          updates                                   669 k
 kernel-devel                    x86_64            3.10.0-514.26.2.el7                       updates                                    13 M
 kernel-headers                  x86_64            3.10.0-514.26.2.el7                       updates                                   4.8 M
 libmpc                          x86_64            1.0.1-3.el7                               base                                       51 k
 libnvpair1                      x86_64            0.6.5.9-1.el7                             lustre                                     37 k
 libuutil1                       x86_64            0.6.5.9-1.el7                             lustre                                     42 k
 libzfs2                         x86_64            0.6.5.9-1.el7                             lustre                                    124 k
 libzpool2                       x86_64            0.6.5.9-1.el7                             lustre                                    424 k
 lustre-osd-zfs-mount            x86_64            2.10.0-1.el7                              lustre                                     10 k
 mpfr                            x86_64            3.1.1-4.el7                               base                                      203 k
 spl-dkms                        noarch            0.6.5.9-1.el7                             lustre                                    423 k
 tcl                             x86_64            1:8.5.13-8.el7                            base                                      1.9 M
 zfs-dkms                        noarch            0.6.5.9-1.el7                             lustre                                    1.9 M
Updating for dependencies:
 glibc                           x86_64            2.17-157.el7_3.4                          updates                                   3.6 M
 glibc-common                    x86_64            2.17-157.el7_3.4                          updates                                    11 M

Transaction Summary
=============================================================================================================================================
Install  2 Packages (+18 Dependent packages)
Upgrade             (  2 Dependent packages)




This is clearly not what we want to happen.  As you can see, the lustre-client package which is what we really wanted is obsoleted by lustre-dkms

If we do a little bit of cajoling, we can get what we want:

# yum install -y --exclude kernel-debug,lustre-dkms lustre-client kmod-lustre-client-2.10.0_RC1
 Loaded plugins: fastestmirror
 Repository managerforlustre-lustre-client is listed more than once in the configuration
 Loading mirror speeds from cached hostfile
 * epel: mirror.cs.pitt.edu
 Package chroma-agent-management-3.1.1.0-4897.85.g9c482a2.jenkins__.el7.noarch already installed and latest version
 Package chroma-agent-3.1.1.0-4897.85.g9c482a2.jenkins__.el7.noarch already installed and latest version
 Resolving Dependencies
 --> Running transaction check
 ---> Package kmod-lustre-client.x86_64 0:2.10.0_RC1-1.01.el7.centos will be installed
 ---> Package lustre-client.x86_64 0:2.10.0_RC1-1.01.el7.centos will be installed
 --> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================
 Package Arch Version Repository Size
 =============================================================================================================================================
 Installing:
 kmod-lustre-client x86_64 2.10.0_RC1-1.01.el7.centos managerforlustre-lustre-client 2.1 M
 lustre-client x86_64 2.10.0_RC1-1.01.el7.centos managerforlustre-lustre-client 454 k

Transaction Summary
 =============================================================================================================================================
 Install 2 Packages



But this really does not feel like the element of least surprise.

A lesser surprise to me would be for the installation of the client to just fail with an error that it conflicts with the server such that the admin realises he needs to remove the server first and then install the client.

I've opened LU-9770 to revisit this change.

Generated at Sat Feb 10 01:54:56 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.