[chef] Re: Rubygems Issue affecting some ChefDK Users


Chronological Thread 
  • From: AJ Christensen < >
  • To: " " < >
  • Subject: [chef] Re: Rubygems Issue affecting some ChefDK Users
  • Date: Sat, 30 Aug 2014 09:09:00 +1200

All I read was "spew vitriol at them" brb firing up the Hate Furnace OF DOOM!

loljk

Nice work Dan.

--aj

On Sat, Aug 30, 2014 at 6:46 AM, Daniel DeLeo 
< >
 wrote:
> Hi Chefs,
>
> I’d like to alert those of you that use ChefDK to an issue we discovered 
> after yesterday’s release of ChefDK 0.2.1. If you don’t use ChefDK, you 
> might still want to pay attention since the root of the problem is caused 
> by a change in rubygems 2.2.
>
> This issue will affect any users who’ve installed gems with C extensions 
> into ChefDK’s ruby, but will be most severe for those who started using 
> ChefDK before 0.1.0.
>
> The issue is that rubygems, starting with 2.2, has changed the on-disk 
> layout of gems so that gems can be shared between multiple ruby versions to 
> save disk space. As a consequence, the place where compiled C extensions 
> are located had to change since compiled extensions cannot be shared 
> between different Ruby versions (based on ABI level). To account for this, 
> rubygems 2.2.0 attempts to lazily rebuild gem extensions in the new 
> location after rubygems is upgraded. This causes two problems for ChefDK 
> users:
>
> 1. If you used ChefDK prior to 0.1.0, and you installed gems with C 
> extensions, you will have root-owned gems installed to ChefDK’s ruby. 
> Rubygems will not be able to rebuild the gem without root permissions, so 
> it will emit an error like Error loading RubyGems plugin 
> "/opt/chefdk/embedded/etc…” Permission denied @ dir_s_mkdir
> 2. If you have only used ChefDK 0.1.0 and above, and you installed gems 
> with C extensions, those gems’ files will be owned by your user and located 
> in ~/.chefdk/gem. Rubygems should be able to auto-update these gems, but 
> some users have reported errors with the process.
>
> If you’re affected by case #1, your best bet is to completely uninstall 
> ChefDK, remove any leftovers from /opt/chefdk, and re-install. You’ll need 
> to re-run `chef gem install` for any gems that were installed to the 
> embedded ruby’s gem directory. You may also be able to `sudo gem pristine 
> GEM_NAME` these gems, but the changes that sudo typically makes to your 
> environment variables means this might not work without some 
> troubleshooting.
>
> If you’re affected by case #2, and the auto-update process fails for some 
> reason, the best way to go is to remove the ~/.chefdk/gem directory and 
> re-install any gems you had installed previously. You can also try to `chef 
> gem pristine GEM_NAME` these gems if you don’t want to re-install.
>
> I’ve closed the ChefDK issue related to this change since there isn’t 
> really any way for us to make this easier, unfortunately. But feel free to 
> comment on the issue if you’re having trouble with any of the 
> fixes/workarounds.
>
> Finally, I will note that I believe the Rubygems developers made a 
> reasonable effort to maintain compatibility and were caught unaware by some 
> of the edge cases (like ours) that surfaced after the feature was released, 
> even though the outcome is frustrating. Let’s not spew vitriol at them, 
> okay?
>
> Thanks,
>
> --
> Daniel DeLeo
>
> References:
>
> ChefDK bug report: https://github.com/opscode/chef-dk/issues/146
>
> Rubygems layout change PR for 2.2: 
> https://github.com/rubygems/rubygems/pull/596
> Rubygems bug when attempting to update root-owned gems: 
> https://github.com/rubygems/rubygems/issues/796
> Bundler bug report related to repo layout change: 
> https://github.com/bundler/bundler/issues/2847
> Rubygems bug report for things being broken by the 2.2 update: 
> https://github.com/rubygems/rubygems/issues/874
>
>



Archive powered by MHonArc 2.6.16.

§