Package conflict on SLES 12 SP1 and SP2 nodes while doing installation, deployment, or upgrade using installation toolkit

While doing installation, deployment, or upgrade using the installation toolkit on SLES 12 SP1 and SP2 nodes, you might encounter package conflict issues.

If the error message you are getting due to package conflict is similar to Symptom 1, try Workaround 1. If the error message you are getting due to package conflict is similar to Symptom 2, try Workaround 2.

Symptom 1:
[ FATAL ] node1.example.com  gpfs.smb-1:4.5.5_gpfs_15-1.sles12.x86_64 (ces_smb) 
[ FATAL ] node1.example.com  conflicts with file from package
[ FATAL ] node1.example.com  samba-winbind-4.4.2-29.4.x86_64
Workaround 1:
  1. Remove samba-winbind packages from all protocol nodes.
  2. Rerun the installation toolkit from the last failure point.

Symptom 2:

The error message might be similar to the following:
[ FATAL ] nodex.example.com File /usr/lib64/libnss_winbind.so.2
[ FATAL ] node2.example.com   from install of
[ FATAL ] node2.example.com   samba-winbind-4.4.2-31.1.x86_64 (FTP3-SUSE-12-2-Updates)
[ FATAL ] node2.example.com   conflicts with file from package
[ FATAL ] node2.example.com   gpfs.smb-1:4.5.5_gpfs_15-1.sles12.x86_64
Workaround 2:
  1. Back up the zypper.rb file.
    cp /opt/chef/embedded/apps/chef/lib/chef/provider/package/zypper.rb  /tmp/
  2. Edit the zypper.rb file.
    vim /opt/chef/embedded/apps/chef/lib/chef/provider/package/zypper.rb
  3. Modify the install_package function code to add the --no-recommends parameter using the following code snippet.
    def install_package(name, version)
              zypper_package("install --auto-agree-with-licenses --no-recommends", name, version)
        end
  4. Save the changes in the zypper.rb file.
  5. Copy the changed zypper.rb file on every failure node or do the same code changes on every node.
  6. Rerun the installation toolkit from the last failure point.
Note: You can also try using these workarounds in scenarios with similar package conflict issues.