# (just) retrieve and unpack a gem

**URL:** <https://www.ruby-forum.com/t/just-retrieve-and-unpack-a-gem/172065>\
**Category:** Ruby\
**Created:** [July 14, 2009, 3:38am UTC](https://www.ruby-forum.com/t/just-retrieve-and-unpack-a-gem/172065 "2009-07-14T03:38:35Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![iceburgh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/c4cdca/32.png) [@iceburgh](https://www.ruby-forum.com/u/iceburgh)\
**Post date:** [July 14, 2009, 3:38am UTC](https://www.ruby-forum.com/t/just-retrieve-and-unpack-a-gem/172065/1 "2009-07-14T03:38:35Z")

</div>

I need to retrieve and unpack a large number of gems, without  
either (a) affecting my local gem installation or (b) getting  
involved with dependencies. “gem fetch” will retrieve random  
gems, but “gem unpack” is a bit more picky.

According to [http://docs.rubygems.org/read/chapter/10#page34:](http://docs.rubygems.org/read/chapter/10#page34:)

You can only unpack gems that you have installed, …

I can hack the gem command to get the results I want, but it  
seems like there should be a way to do this. Clues, anyone?

## -r

[http://www.cfcl.com/rdm](http://www.cfcl.com/rdm) Rich M.  
[http://www.cfcl.com/rdm/resume](http://www.cfcl.com/rdm/resume) removed\_email\_address@domain.invalid  
[http://www.cfcl.com/rdm/weblog](http://www.cfcl.com/rdm/weblog) +1 650-873-7841

Technical editing and writing, programming, and web development

---

<div class="post-metadata">

**Author:** ![iceburgh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/c4cdca/32.png) [@iceburgh](https://www.ruby-forum.com/u/iceburgh)\
**Post date:** [July 14, 2009, 3:45am UTC](https://www.ruby-forum.com/t/just-retrieve-and-unpack-a-gem/172065/2 "2009-07-14T03:45:36Z")

</div>

Rich M. a écrit :

> seems like there should be a way to do this. Clues, anyone?
> 
> -r

Do it like this

cd /tmp  
GEM\_HOME=$PWD GEM\_PATH=$PWD gem install PACKAGE  
So look in cache directory. All gem is there.  
Just do gem unpack GEM and done !  
System is protected ! You can do it as user to be sure of that.

---

<div class="post-metadata">

**Author:** ![iceburgh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/c4cdca/32.png) [@iceburgh](https://www.ruby-forum.com/u/iceburgh)\
**Post date:** [July 14, 2009, 3:53am UTC](https://www.ruby-forum.com/t/just-retrieve-and-unpack-a-gem/172065/3 "2009-07-14T03:53:38Z")

</div>

Rich M. wrote:

> I need to retrieve and unpack a large number of gems, without  
> either (a) affecting my local gem installation or (b) getting  
> involved with dependencies. “gem fetch” will retrieve random  
> gems, but “gem unpack” is a bit more picky.
> 
> According to [http://docs.rubygems.org/read/chapter/10#page34:](http://docs.rubygems.org/read/chapter/10#page34:)
> 
> You can only unpack gems that you have installed, …

Oh no–you can unpack arbitrary gems [I think that’s the only ones you can].  
gem fetch gem\_name  
gem unpack gem\_name.version.gem  
Cheers.  
=r

---

<div class="post-metadata">

**Author:** ![iceburgh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/c4cdca/32.png) [@iceburgh](https://www.ruby-forum.com/u/iceburgh)\
**Post date:** [July 14, 2009, 3:59am UTC](https://www.ruby-forum.com/t/just-retrieve-and-unpack-a-gem/172065/4 "2009-07-14T03:59:03Z")

</div>

Joel VanderWerf a écrit :

> geistteufel wrote:
> 
> > cd /tmp  
> > GEM\_HOME=$PWD GEM\_PATH=$PWD gem install PACKAGE  
> > So look in cache directory. All gem is there.  
> > Just do gem unpack GEM and done !  
> > System is protected ! You can do it as user to be sure of that.
> 
> Won’t that still install bin stuff? For example, gem install rake.

You can do like this :

gem fetch rake  
ls rake\*.gem

et pour l’unpack  
gem unpack rake\*.gem

=\> nothing install 🙂

---

<div class="post-metadata">

**Author:** ![iceburgh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/c4cdca/32.png) [@iceburgh](https://www.ruby-forum.com/u/iceburgh)\
**Post date:** [July 14, 2009, 3:55am UTC](https://www.ruby-forum.com/t/just-retrieve-and-unpack-a-gem/172065/5 "2009-07-14T03:55:32Z")

</div>

geistteufel wrote:

> cd /tmp  
> GEM\_HOME=$PWD GEM\_PATH=$PWD gem install PACKAGE  
> So look in cache directory. All gem is there.  
> Just do gem unpack GEM and done !  
> System is protected ! You can do it as user to be sure of that.

Won’t that still install bin stuff? For example, gem install rake.

---

<div class="post-metadata">

**Author:** ![iceburgh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/c4cdca/32.png) [@iceburgh](https://www.ruby-forum.com/u/iceburgh)\
**Post date:** [July 14, 2009, 4:02am UTC](https://www.ruby-forum.com/t/just-retrieve-and-unpack-a-gem/172065/6 "2009-07-14T04:02:58Z")

</div>

Roger P. wrote:

> gem unpack gem\_name.version.gem

That is really close, but it gets a nastygram:

$ gem unpack rails.2.3.2.gem  
ERROR: While executing gem … (Gem::Exception)  
Cannot load gem at [rails.2.3.2.gem] in …/rails

However, this seems to work just fine:

$ gem unpack rails-2.3.2.gem  
Unpacked gem: ‘…/rails/rails-2.3.2’

Thanks!

-r

---

<div class="post-metadata">

**Author:** ![iceburgh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/c4cdca/32.png) [@iceburgh](https://www.ruby-forum.com/u/iceburgh)\
**Post date:** [July 22, 2009, 3:56am UTC](https://www.ruby-forum.com/t/just-retrieve-and-unpack-a-gem/172065/7 "2009-07-22T03:56:31Z")

</div>

On Jul 13, 2009, at 18:37, Rich M. wrote:

> You can only unpack gems that you have installed, …

There’s probably a feature request for that, but I’ve not bothered to  
implement it.

It would be a nice feature to have, though, so I welcome a patch if  
you have more time than me.

---

<div class="post-metadata">

**Author:** ![iceburgh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/c4cdca/32.png) [@iceburgh](https://www.ruby-forum.com/u/iceburgh)\
**Post date:** [July 14, 2009, 4:11am UTC](https://www.ruby-forum.com/t/just-retrieve-and-unpack-a-gem/172065/8 "2009-07-14T04:11:20Z")

</div>

Rich M. a Ã©crit :

> However, this seems to work just fine:
> 
> $ gem unpack rails-2.3.2.gem  
> Unpacked gem: ‘…/rails/rails-2.3.2’
> 
> Thanks!
> 
> -r

no prob !
