install-cluster.sh failed (missing dependency)
Environment
Description
Conclusion
Activity
Michael Gardner December 2, 2014 at 4:57 PM
From the review process, we have modified how we deal with clearing the expect buffer. `expect -re $` will clear everything in the entire data stream before we move on to the next send/expect block. The code is now on candidate-5.2.0 instead of master as of the tag changes last week, so a new pull request is up.
Michael Gardner December 2, 2014 at 3:55 PM
github history errors from rebase
Michael Gardner November 20, 2014 at 2:17 PM
@Xiaoming Wang And I have discussed how we want to deal with clearing the buffer in the expect scripts. We're both touching the same file at the moment (his changes will be fixing a bug targeting 5.2) We're going to go with a sleep 1; expect -re .*; approach. His Jira that touches the code is https://hpccsystems.atlassian.net/browse/HPCC-12585
Michael Gardner November 11, 2014 at 3:30 PM
I've changed up the way I was doing the spec file. Now we can just use cpack to generate it like normal and I've been able to inject the definitions we need (for the filters to work properly) when CPack goes to configure the file. I've tested it on 6 and 7. Working now on making sure it works on 5.
Michael Gardner November 5, 2014 at 9:14 PM
So we can now resolve dependencies for both rpm and deb packages. For rpm's this was handled by supplying our own spec file template under cmake_modules/hpccsystems-platform.spec. The spec file contains %defines to override the standard behaviour of rmpbuilds require and provides functionality. This allows us to strip libRembed.so from the list of files to be checked against for their linked shared objects. This means libR.so, libRcpp.so and libRInside.so never get added to the 'requires' metadata in the rpm. Because of this we can now utilize yum to install the locally provided rpm's, and it will handle all the dependency resolution (with the exception of R.)
With debian packages, the actual package manager is much simpler than redhats implementation. The requires list is exactly what we provide it under cmake_modules/dependencies. dpkg will go ahead and install whatever we give it, but leave it in an unconfigured state until all the dependencies are met. We then fix the dependencies (and trigger the configuration of the hpccsystems-platform package) by doing a `apt-get install -f -y` which will find all the dependencies we provided from it's database, and install them for us. One issue with dpkg is that it is inherently stupid. It doesn't really handle version control so we have to do that by hand. I think I have found a way to successfully do this today and will be testing it more thoroughly, such that we can only install (through install-cluster.sh) newer packages, and not the same packages or downgraded packages.
install-cluster.sh for a multi-node cluster install failed when one host was missing dependency.
Possible opportunity for enhancement, if script detects a missing dependency.
Possible to resolve without failing?