-
Notifications
You must be signed in to change notification settings - Fork 59
Description
The dependency-resolver for the apt tools don't make it easy to install old versions of metapackages (as documented at http://docs.datastax.com/en/datastax_enterprise/4.6/datastax_enterprise/install/installPrevious.html).
sudo apt-get install -y dse-full=4.6.1-1 fails if 4.6.1-1 isn't the latest version available in the repository. apt-get tries to install the latest version of deps, even though dse-full requires it's deps to version-match itself exactly.
The workaround is to specify all the deps and versions in a single apt-get install call, like so:
sudo apt-get install -y dse-full=4.6.1-1 dse=4.6.1-1 dse-demos=4.6.1-1 dse-hive=4.6.1-1 dse-libcassandra=4.6.1-1 dse-libhadoop=4.6.1-1 dse-libhive=4.6.1-1 dse-libpig=4.6.1-1 dse-pig=4.6.1-1 dse-liblog4j=4.6.1-1 dse-libsolr=4.6.1-1 dse-libsqoop=4.6.1-1 dse-libtomcat=4.6.1-1 dse-libmahout=4.6.1-1 dse-libhadoop-native=4.6.1-1
We currently hardcode the package list in the ami code:
Line 419 in b868fe1
| install_list = 'sudo apt-get install -y dse-full={0} dse={0} dse-demos={0} dse-hive={0} dse-libcassandra={0} dse-libhadoop={0} dse-libhive={0} dse-libpig={0} dse-pig={0}' |
It would be better to run apt-cache depends dse-full=version or apt-cache show dse-full=version and parse the dependencies out of that output rather than hard-code it and have to update every version and add custom logic if the package-list changes.