Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
matkam opened this issue Jan 13, 2017 · 11 comments
Open

Comments

@matkam
Copy link

matkam commented Jan 13, 2017

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
Copy link
Author

matkam commented Jan 13, 2017

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

@dead3t3rn1ty
Copy link

dead3t3rn1ty commented Mar 30, 2017

same issue here, quite annoying.

@michaelklishin
Copy link
Owner

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

@nictrix
Copy link

nictrix commented Aug 30, 2017

@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...

@sethrosenblum sethrosenblum changed the title Cannot install dse22 on Ubuntu 16.04 due to missing python-support package Cannot install dsc22 on Ubuntu 16.04 due to missing python-support package Sep 1, 2017
@sethrosenblum
Copy link
Collaborator

sethrosenblum commented Sep 1, 2017

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
Copy link
Collaborator

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

@michaelklishin
Copy link
Owner

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

@sethrosenblum
Copy link
Collaborator

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.

@michaelklishin
Copy link
Owner

@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
Copy link
Owner

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

@sethrosenblum
Copy link
Collaborator

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants