cassandra-chef-cookbook icon indicating copy to clipboard operation
cassandra-chef-cookbook copied to clipboard

Cannot install dsc22 on Ubuntu 16.04 due to missing python-support package

Open matkam opened this issue 8 years ago • 11 comments

Attempting to run the default cookbook on Ubuntu 16.04:

 * apt_package[cassandra] action install (up to date) 
  * apt_package[dsc22] action install 
 
    ================================================================================ 
    Error executing action `install` on resource 'apt_package[dsc22]' 
    ================================================================================ 
 
    Mixlib::ShellOut::ShellCommandFailed 
    ------------------------------------ 
    Expected process to exit with [0], but received '100' 
    ---- Begin output of apt-get -q -y --force-yes -o Dpkg::Options::="--force-confold" install dsc22=2.2.7-1 ---- 
    STDOUT: Reading package lists... 
    Building dependency tree... 
    Reading state information... 
    Some packages could not be installed. This may mean that you have 
    requested an impossible situation or if you are using the unstable 
    distribution that some required packages have not yet been created 
    or been moved out of Incoming. 
    The following information may help to resolve the situation: 
 
    The following packages have unmet dependencies: 
     dsc22 : Depends: python-support (>= 0.90.0) but it is not installable 
    STDERR: E: Unable to correct problems, you have held broken packages. 
    ---- End output of apt-get -q -y --force-yes -o Dpkg::Options::="--force-confold" install dsc22=2.2.7-1 ---- 
    Ran apt-get -q -y --force-yes -o Dpkg::Options::="--force-confold" install dsc22=2.2.7-1 returned 100 
 
    Cookbook Trace: 
    --------------- 
    /var/chef/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/runner.rb:78:in `run_action' 
    /var/chef/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/runner.rb:106:in `block (2 levels) in converge' 
    /var/chef/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/runner.rb:106:in `each' 
    /var/chef/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/runner.rb:106:in `block in converge' 
    /var/chef/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/runner.rb:105:in `converge' 
 
    Resource Declaration: 
    --------------------- 
    # In /var/chef/cache/cookbooks/cassandra-dse/recipes/datastax.rb 
 
     96:   package node['cassandra']['package_name'] do 
     97:     options '--force-yes -o Dpkg::Options::="--force-confold"' 
     98:     if node['cassandra']['release'].to_s != "" 
     99:       version "#{node['cassandra']['version']}-#{node['cassandra']['release']}" 
    100:     else 
    101:       version node['cassandra']['version'] 
    102:     end 
    103:     # giving C* some time to start up 
 
    Compiled Resource: 
    ------------------ 
    # Declared in /var/chef/cache/cookbooks/cassandra-dse/recipes/datastax.rb:96:in `from_file' 
 
    apt_package("dsc22") do 
      package_name "dsc22" 
      action [:install] 
      retries 0 
      retry_delay 2 
      default_guard_interpreter :default 
      declared_type :package 
      cookbook_name "cassandra-dse" 
      recipe_name "datastax" 
      version "2.2.7-1" 
      options "--force-yes -o Dpkg::Options::=\"--force-confold\"" 
    end 
 
    Platform: 
    --------- 
    x86_64-linux 

matkam avatar Jan 13 '17 19:01 matkam

Workaround is to manually install the package and ignoring the missing dependency:

apt-get download dsc22
sudo dpkg --force-depends -i dsc22_2.2.7-1_all.deb

But it causes problems if you try to install anything afterwards

matkam avatar Jan 13 '17 19:01 matkam

same issue here, quite annoying.

dead3t3rn1ty avatar Mar 30 '17 16:03 dead3t3rn1ty

Are there specific suggestions as to what should be changed in this cookbook to avoid this?

michaelklishin avatar Mar 30 '17 16:03 michaelklishin

@michaelklishin it appears Ubuntu 16.04 dropped python-support package from its repositories, but dsc22 is still requiring it. The dsc22 package needs to change to an or statement for required dependencies python-support || dh-python

For this cookbook to support Ubuntu 16.04 and use the current dsc22 version it could always download the deb package and install it before trying dsc22. You would just need a stable location of the package download or a configurable one.

Something like this should work:

recipes/datastax.rb

remote_file 'python-support' do
  path "#{Chef::Config['file_cache_path']}/python-support_1.0.15_all.deb"
  source 'http://launchpadlibrarian.net/109052632/python-support_1.0.15_all.deb'
  action :nothing
end

dpkg_package 'python-support' do
  source "#{Chef::Config['file_cache_path']}/python-support_1.0.15_all.deb"
  notifies :create, 'remote_file[python-support]', :before
  not_if { node['platform_version'].to_f < 16.04 }
end

Shall I submit a PR with the above code? Including Ubuntu 16.04 as a platform in the kitchen file...

nictrix avatar Aug 30 '17 05:08 nictrix

Interestingly, the cassandra packages dropped the requirement for python-support after 2.2.5:

2.2.8 - adduser (0 (null)) python (2 2.7) cassandra-tools (0 (null)) ntp (16 (null)) time-daemon (0 (null)) apache-cassandra1 (0 (null)) apache-cassandra1 (0 (null)) 
2.2.7 - adduser (0 (null)) python (2 2.7) cassandra-tools (0 (null)) ntp (16 (null)) time-daemon (0 (null)) apache-cassandra1 (0 (null)) apache-cassandra1 (0 (null)) 
2.2.6 - adduser (0 (null)) python (2 2.7) cassandra-tools (0 (null)) ntp (16 (null)) time-daemon (0 (null)) apache-cassandra1 (0 (null)) apache-cassandra1 (0 (null)) 
2.2.5 - adduser (0 (null)) python (2 2.7) python-support (2 0.90.0) cassandra-tools (0 (null)) ntp (16 (null)) time-daemon (0 (null)) apache-cassandra1 (0 (null)) apache-cassandra1 (0 (null)) 
2.2.4 - adduser (0 (null)) python (2 2.7) python-support (2 0.90.0) cassandra-tools (0 (null)) ntp (16 (null)) time-daemon (0 (null)) apache-cassandra1 (0 (null)) apache-cassandra1 (0 (null)) 

but the dsc packages continue to require them:

Dependencies: 
2.2.8-1 - cassandra (5 2.2.8) python (2 2.5) python-support (2 0.90.0) 
2.2.7-1 - cassandra (5 2.2.7) python (2 2.5) python-support (2 0.90.0) 
2.2.6-1 - cassandra (5 2.2.6) python (2 2.5) python-support (2 0.90.0) 
2.2.5-1 - cassandra (5 2.2.5) python (2 2.5) python-support (2 0.90.0) 
2.2.4-1 - cassandra (5 2.2.4) python (2 2.5) python-support (2 0.90.0) 

You might be able to get around this problem by going straight to the cassandra package and not installing dsc at all.

sethrosenblum avatar Sep 01 '17 20:09 sethrosenblum

I was able to work around this problem using these attribute changes:

   'cassandra' => {
-    'package_name' => 'dsc30',
-    'version' => '3.0.9'
+    'package_name' => 'cassandra',
+    'version' => '3.0.9',
+    'release' => ''
   }

This should work for these version ranges: cassandra 2.1 >= 2.1.14 cassandra 2.2 >= 2.2.6 cassandra 3.0 >= 3.0.6

sethrosenblum avatar Sep 19 '17 18:09 sethrosenblum

@sethrosenblum is this something that must be document or should we change attribute defaults?

michaelklishin avatar Sep 19 '17 18:09 michaelklishin

Seeing as datastax is no longer supporting or updating the dsc packages, it might be time to rethink this whole section: https://github.com/michaelklishin/cassandra-chef-cookbook/blob/master/recipes/datastax.rb#L76-L109

That way we could discard the idea of installing the dscXX packages, and instead install just the cassandra packages, possibly from the apache repo itself, which is being kept up to date: http://dl.bintray.com/apache/cassandra/

All of that sounds like a big overhaul and potentially a breaking change.

sethrosenblum avatar Sep 19 '17 18:09 sethrosenblum

@sethrosenblum I'm fine documenting your findings, shipping what we have in master as a 4.5.0 and accepting a breaking PR for 5.0. WDYT?

We also have Chef 13 work planned which will likely be breaking but oh well, most long lived projects support at least two release branches/series and maybe it's time for this cookbook to do just that. So going to 6.x fairly quickly is OK.

michaelklishin avatar Sep 19 '17 18:09 michaelklishin

@sethrosenblum I'm open to any PRs you may have in mind around this area.

michaelklishin avatar Dec 25 '17 10:12 michaelklishin

Sure, I'll be getting back to this over the next few weeks.

sethrosenblum avatar Jan 10 '18 20:01 sethrosenblum