Import RubyGems to Ruby 1.9

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32068] Re: Import RubyGems to Ruby 1.9”
on Mon, 15 Oct 2007 23:32:38 +0900, “NAKAMURA, Hiroshi”
[email protected] writes:

|e$B$G!“!V:$$k!W$O;d$N=q$-J}$,0-$+$C$?$G$9$9$$$^$;$s!#$G$b!“2U>r=q$-$,e(B5e$B$De(B
|e$B$”$C$FA4ItF1$8$h$&$J$3$H=q$$$F$”$k$N$G!"$h$[$I7y$J$s$@$m$&$J$H!#e(B

e$B7|G0$7$F$k$N$O3N$+$G$9$M!#e(B

|[ruby-core:12644]e$B$K$h$l$Pe(B
|
|| In total, RubyGems 0.9.4.5 requires 21 additional files on 1.9.
|| The following non-RubyGems files are loading with require ‘rubygems’:
||
|| rbconfig.rb
|| thread.rb
|| forwardable.rb
|| rational.rb
|| date/format.rb
|| time.rb
|
|e$B$@$=$&$G$9$+$i!"$+$J$j%$%1$F$k$s$8$c$J$$$+$J!#e(B

e$B$H$O$$$(!“F1$8%a!<%k$K$”$ke(B

RubyGems 0.9.4.5:
1.34MB for ruby18
3.26MB for ruby18 + require ‘rubygems’
3.85MB for ruby18 + require ‘rubygems’ + require ‘zentest’

e$B$H$$$&?t;z$r8+$k$H!“$d$C$QL5>r7o$Ke(Bone$B$O$G$-$=$&$K$J$$$G$9$M!#e(B
e$B$^!”$=$s$J$3$H$r<gD%$7$F$k?M$O$$$J$$$N$+$b$7$l$J$$$1$I!#e(B

|e$B$=$&$G$9$M!#$D$^$j$^$D$b$H$5$s$H$7$F$b!“e(BGem::Dependencye$B$d!”%P!<%8%g%s;Xe(B
|e$BDj$G$Ne(BGem.activatee$B$re(Brubye$B$KAH$_9~$`$N$O$A$g$C$H!"$H$$$&$3$H$G$7$g$&$+!#e(B

e$B$=$l$O$A$g$C$H?<FI$_$N$7$9$.$G!“;d$Oe(Brubygemse$B$N$”$kFCDj$N5!G=e(B
e$B$,MW$i$J$$$H$+!“%G%U%)%k%H$K$9$k$K$O$A$g$C$H!”$H$+$O;W$C$F$Je(B
e$B$$$N$G$9!#?4G[$7$F$$$k$N$O;~4VE*!&6u4VE*$J%3%9%H$@$1$G$9!#e(B
subsete$B$H=q$$$F$$$k$N$Oe(Bfullsete$B$G$Oe(B(e$B%3%9%H$,e(B)e$BBg$-$9$.$k$@$m$&$He(B
e$B$$$&?dB,$@$1!#e(B

e$B$,!“KbK!$,$”$k$o$1$G$O$J$$$s$G!“5!G=$r:o$i$:$K%3%9%H:o8:$7$me(B
e$B$J$s$FL5M}$r8@$&$D$b$j$O$”$j$^$;$s!#$^!"$A$g$C$H9)IW$9$l$P!"e(B
e$B8=:_e(Brequiree$B$7$F$k%i%$%V%i%j$N$$$/$D$+$O$9$0$K:o$l$=$&$@$1$I!#e(B
e$BFC$Ke(Bforwardablee$B$H$+!#e(B

                            e$B$^$D$b$He(B e$B$f$-$R$me(B /:|)

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32070] Re: Import RubyGems to Ruby 1.9”
on Mon, 15 Oct 2007 23:54:24 +0900, “NAKAMURA, Hiroshi”
[email protected] writes:

|> e$B$^!“$=$s$J$3$H$r<gD%$7$F$k?M$O$$$J$$$N$+$b$7$l$J$$$1$I!#e(B
|
|e$B$”$le(B? e$BEDCf$5$s$de(Bmpute$B$5$s$O<gD%$7$F$=$&$J5$$,!#e(B
|drbraine$B$b$G$-$l$P$=$&$7$?$$!"$s$8$c$J$$$+$Je(B? > e$BL5>r7o$Ke(Bon

e$B!V$*$^$8$J$$$OIT7rA4!W$G$7$?$C$1!#e(B

|> e$B$=$l$O$A$g$C$H?<FI$_$N$7$9$.$G!“;d$Oe(Brubygemse$B$N$”$kFCDj$N5!G=e(B
|> e$B$,MW$i$J$$$H$+!“%G%U%)%k%H$K$9$k$K$O$A$g$C$H!”$H$+$O;W$C$F$Je(B
|> e$B$$$N$G$9!#?4G[$7$F$$$k$N$O;~4VE*!&6u4VE*$J%3%9%H$@$1$G$9!#e(B
|> subsete$B$H=q$$$F$$$k$N$Oe(Bfullsete$B$G$Oe(B(e$B%3%9%H$,e(B)e$BBg$-$9$.$k$@$m$&$He(B
|> e$B$$$&?dB,$@$1!#e(B
|
|e$B$“$i!”<:Ni$7$^$7$?!#!Ve(B2-2e$B$+$J!W$H$$$&$3$H$J$N$G!“8=9Te(BRubyGemse$B$N5!G=A4Ite(B
|e$B$OF~$l$?$$$o$1$8$c$J$$!”$H$$$&$3$H$+$H;W$C$F$^$7$?!#e(B

e$B$(!<$H!Ve(Brubygemse$B$N5!G=A4It$rF~$l$J$1$l$PBLL!W$H;W$C$F$k$o$1e(B
e$B$G$O$J$$$H$$$&$3$H$G!#$^$.$i$o$7$$!#$,!";d$,5!G=$N<h<NA*Br$re(B
e$B7h$a$i$l$k$H;W$C$F$$$k$o$1$G$b$J$$$G$9!#%X%S!<%f!<%6$8$c$J$$e(B
e$B$7!#e(B

|e$B$G$O5!G=$K$D$$$F!"$^$D$b$H$5$s$O;d$,e(B[ruby-dev:32061]e$B$Ne(B1-1e$B$G=q$$$?7|G0$Ke(B
|e$B$D$$$F$O$I$&;W$o$l$^$9e(B? e$BFC$Ke(B1-1-2e$B$K$D$$$F!#e(B

1-1-2e$B$K$D$$$F$Oe(Brequiree$B$,%P!<%8%g%s$rMW5a$9$k$h$&$K$J$k$o$1$Ge(B
e$B$O$J$$e(B(e$B%P!<%8%g%s;XDj$7$?$1$l$Pe(Bgeme$B%a%=%C%I$r8F$Ve(B(e$B"be(Brubygems
e$B8GM-$N5!G=$rMQ$$$ke(B)e$B$7$+$J$$e(B)e$B$o$1$G$9$+$i!"?4G[$9$kI,MW$O$J$$e(B
e$B$N$G$O$J$$$+$H;W$$$^$9!#e(B

1-1-1e$B$K$D$$$F$O!“$h$/$o$+$j$^$;$s!#$d$^$@$5$s$”$?$j$+$i!“$3e(B
e$B$3$,LdBj$H$$$&OC$rJ9$-$?$$5$$,$7$^$9$,!”$J$s$@$+1sN8$7$F$$$ke(B
(or e$B$"$-$i$a$F$$$ke(B)e$B$h$&$J8}$V$j$KJ9$3$($k$s$G$9$,!#e(B

                      e$B$^$D$b$He(B e$B$f$-$R$me(B /:|)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Yukihiro M. wrote:

|| time.rb
e$B$H$$$&?t;z$r8+$k$H!"$d$C$QL5>r7o$Ke(Bone$B$O$G$-$=$&$K$J$$$G$9$M!#e(B
e$B$^!"$=$s$J$3$H$r<gD%$7$F$k?M$O$$$J$$$N$+$b$7$l$J$$$1$I!#e(B

e$B$"$le(B? e$BEDCf$5$s$de(Bmpute$B$5$s$O<gD%$7$F$=$&$J5$$,!#e(B
drbraine$B$b$G$-$l$P$=$&$7$?$$!"$s$8$c$J$$$+$Je(B? > e$BL5>r7o$Ke(Bon

|e$B$=$&$G$9$M!#$D$^$j$^$D$b$H$5$s$H$7$F$b!“e(BGem::Dependencye$B$d!”%P!<%8%g%s;Xe(B
|e$BDj$G$Ne(BGem.activatee$B$re(Brubye$B$KAH$_9~$`$N$O$A$g$C$H!"$H$$$&$3$H$G$7$g$&$+!#e(B

e$B$=$l$O$A$g$C$H?<FI$_$N$7$9$.$G!";d$Oe(Brubygemse$B$N$"$kFCDj$N5!G=e(B
e$B$,MW$i$J$$$H$+!"%G%U%)%k%H$K$9$k$K$O$A$g$C$H!"$H$+$O;W$C$F$Je(B
e$B$$$N$G$9!#?4G[$7$F$$$k$N$O;~4VE*!&6u4VE*$J%3%9%H$@$1$G$9!#e(B
subsete$B$H=q$$$F$$$k$N$Oe(Bfullsete$B$G$Oe(B(e$B%3%9%H$,e(B)e$BBg$-$9$.$k$@$m$&$He(B
e$B$$$&?dB,$@$1!#e(B

e$B$"$i!"<:Ni$7$^$7$?!#!Ve(B2-2e$B$+$J!W$H$$$&$3$H$J$N$G!“8=9Te(BRubyGemse$B$N5!G=A4Ite(B
e$B$OF~$l$?$$$o$1$8$c$J$$!”$H$$$&$3$H$+$H;W$C$F$^$7$?!#e(B

e$B$G$O5!G=$K$D$$$F!"$^$D$b$H$5$s$O;d$,e(B[ruby-dev:32061]e$B$Ne(B1-1e$B$G=q$$$?7|G0$Ke(B
e$B$D$$$F$O$I$&;W$o$l$^$9e(B? e$BFC$Ke(B1-1-2e$B$K$D$$$F!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRxN+/B9L2jg5EEGlAQLGVwf+M/yWvLsk8FhTmiWkboUyLSZLcLDhvlF9
oMQJCXg0MMlIE0s4Sg+fLiJzDXG4g5dZcDrh+FOf28DfKsLC14SPwxRvQ1O+4BwP
zZDbtaxdheIrDAIMpWuSrhQyuUiUyzs75UUjLhd7vjKpRC2Sk0Muut5lFfas1MDU
dXc+Niwa1C8vXCq3ZWfmNJidyJ7gT+BvJ2yfoejddj03BVvmaGEN/AeoPsDf8ZuE
pKuwKpqiNN1gt/69qDN6iCFmzJ7S2W8kWv+1cztO1QMVw/iO8LraeZqpaOer4Wuz
mjCsNVvKzombr4JOL3DV8OSsC2ha2kFpstmgq5WkoMwjMRFfTldR5g==
=vmal
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Yukihiro M. wrote:

|> e$B$^!"$=$s$J$3$H$r<gD%$7$F$k?M$O$$$J$$$N$+$b$7$l$J$$$1$I!#e(B
|
|e$B$"$le(B? e$BEDCf$5$s$de(Bmpute$B$5$s$O<gD%$7$F$=$&$J5$$,!#e(B
|drbraine$B$b$G$-$l$P$=$&$7$?$$!"$s$8$c$J$$$+$Je(B? > e$BL5>r7o$Ke(Bon

e$B!V$*$^$8$J$$$OIT7rA4!W$G$7$?$C$1!#e(B

e$B$O$$!#e(B

e$BEDCf$5$s$Oe(Bdefault enablee$B$H$9$Y$7!"$H$$$&0U8+$G!"e(Bfull
sete$B$+e(Bsubsete$B$+$K$D$$e(B
e$B$F$O%3%a%s%H$,=P$F$J$$$O$:!#e(B

mpute$B$5$s$Oe(Bfull sete$B$Ne(Bdefault
enablee$B$K$9$Y$7$H8@$C$F$$$k!#e(B

drbraine$B$O!“e(Bfull sete$B$Ne(Bdefault
enablee$B$,9%$^$7$$!”$G$b0JA0$Oe(Bdefault disable
e$B$,$$$$$H8@$C$F$?!#e(Bsubsete$B$KBP$9$k0U8+$O$^$@$o$+$i$J$$!#e(B

e$B$G$O$J$$$H$$$&$3$H$G!#$^$.$i$o$7$$!#$,!";d$,5!G=$N<h<NA*Br$re(B
e$B7h$a$i$l$k$H;W$C$F$$$k$o$1$G$b$J$$$G$9!#%X%S!<%f!<%6$8$c$J$$e(B
e$B$7!#e(B

e$B$O$$!#EA$o$C$F$k$H;W$$$^$9$7!"$"$s$^$j$3$NJU$N8@MU?,$K$3$@$o$kI,MW$b$"$je(B
e$B$^$;$s$N$G!“e(BOKe$B$G$9!#$?$@$A$g$C$H!“e(B1-1-2e$B$K$D$$$F$^$@G’<1$N0c$$$,$”$k$+$be(B
e$B$7$l$J$$$N$G!”$b$&$A$g$C$H"-!#e(B

|e$B$G$O5!G=$K$D$$$F!"$^$D$b$H$5$s$O;d$,e(B[ruby-dev:32061]e$B$Ne(B1-1e$B$G=q$$$?7|G0$Ke(B
|e$B$D$$$F$O$I$&;W$o$l$^$9e(B? e$BFC$Ke(B1-1-2e$B$K$D$$$F!#e(B

1-1-2e$B$K$D$$$F$Oe(Brequiree$B$,%P!<%8%g%s$rMW5a$9$k$h$&$K$J$k$o$1$Ge(B
e$B$O$J$$e(B(e$B%P!<%8%g%s;XDj$7$?$1$l$Pe(Bgeme$B%a%=%C%I$r8F$Ve(B(e$B"be(Brubygems
e$B8GM-$N5!G=$rMQ$$$ke(B)e$B$7$+$J$$e(B)e$B$o$1$G$9$+$i!"?4G[$9$kI,MW$O$J$$e(B
e$B$N$G$O$J$$$+$H;W$$$^$9!#e(B

e$B$3$l$O!“e(BKernel.geme$B%a%=%C%I$O%G%U%)%k%H$G$ODI2C$5$l$:!“e(B"rubygems”
feature
e$B$re(Bloade$B$7$J$$$H;H$($J$$$H$$$&>uBV$rA[Dj$5$l$F$^$9e(B?
e$B$3$NJU$,%/%j%”$K$J$le(B
e$B$P!“e(Bdrbraine$B$K!”!V$G!"$3$Ne(Bsubsete$BMW7o$I$&;W$&e(B?e$B!W$HJ9$1$k$H;W$$$^$9!#e(B

A. geme$B%a%=%C%I$b%G%U%)%k%H$G;H$($ke(B:
e$B%G%U%)%k%H$Ge(Bgeme$B%a%=%C%I$,;H$($k$N$J$i!"$d$O$je(BRubye$B8@8l;EMM$N0lIt$H9M$(e(B
e$B$i$l$A$c$&$+$b$7$l$J$$$7!"e(Bradicale$B2a$.$k$s$8$c$J$$$+$J$!!#e(B

B. geme$B%a%=%C%I$Oe(Brubygems featuree$B$re(Bloade$B$7$F$+$ie(B:
e$B%G%U%)%k%H$G$OL@<(E*$J%P!<%8%g%s;XDj$O$G$-$J$$>uBV$@$1$I!"%Q%C%1!<%8Fbe(B
e$B$Ne(Bgemspece$B$K$h$C$F;XDj$5$l$?!“0MB8@he(Bgeme$B$K$D$$$F$O!”;XDj$5$l$?%P!<%8%g%se(B
e$B!J:G?7$H$O8B$i$J$$!K$,e(Brequiree$B$GFI$_9~$^$l$k$N$G!"CfESH>C<$@$J$!!#e(B

e$Be$Oe(BKernel.requiree$B$be(BKernel.geme$B$b7k6I!"e(BGem.activatee$B$r8F$s$G$^$9$+$ie(B
e$B$M!#$h$/$G$-$F$^$9$h!#$$$m$$$mC!$+$l$F=PMh>e$,$C$?$b$N$@$H$$$&46$8$,$9$k!#e(B

1-1-1e$B$K$D$$$F$O!"$h$/$o$+$j$^$;$s!#$d$^$@$5$s$"$?$j$+$i!"$3e(B
e$B$3$,LdBj$H$$$&OC$rJ9$-$?$$5$$,$7$^$9$,!"$J$s$@$+1sN8$7$F$$$ke(B
(or e$B$"$-$i$a$F$$$ke(B)e$B$h$&$J8}$V$j$KJ9$3$($k$s$G$9$,!#e(B

e$B;d$bJ9$-$?$$!#8D?ME*$K$"$^$jMxMQ7P83$,$J$$$N$G!"$o$+$C$F$J$$$s$G$9$h$M!#e(B
e$B!Ve(Bdebe$B$GF~$l$?$b$N$r%f!<%6$,e(Bgeme$B%3%^%s%I$G:o=|$7$?;~$KIT@09g$,=P$F%/%l!<%`e(B
e$B$,M=A[$5$l$k!W$H$+$J$s$H$+$@$C$?$h$&$J!#e(B

1-1-1e$B$O%Q%C%1!<%8%s%0$HG[I[$K4X$9$k$3$H!"$D$^$je(Brequiree$B$de(Bgeme$B%a%=%C%I$G$Je(B
e$B$/!"e(Bgeme$B%3%^%s%I$K4X$9$kOC$J$N$G!"e(Brubygemse$B$Ne(Bdefault
enable/disablee$B$H$OD>e(B
e$B@%j%s%/$7$J$$$+$b$7$l$^$;$s!#$G$be(Bdefault
enablee$B$K$J$C$Fe(BRubye$B$N;EMM$K$J$le(B
e$B$P!“e(Bgeme$B%3%^%s%I$r;H$&%f!<%6$N?t$bA}$($k$G$7$g$&$+$i!”%G%#%9%H%j%S%e!<%?e(B
e$B$5$s$X$N1F6A$bBg$-$$$H;W$$$^$9!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRxRH1B9L2jg5EEGlAQIadgf6A4E7CqpsplLZqb4rLS/N0udSzcgNoE/w
ulxsuSu3ZnuR458Jc9BwPrH9KBHbk1JbBuK1g5mJTAwo55EWed49VUvNsbwq86Zh
i4HaJWpOU/Oa4HkSLCbMgjSi/LHyf9PQHueQ7MOI0oxNQ68lXuLzM6ASrHJiin9I
Hx52b+rUIL9x9HkF8FK/q4euQQ/OYAD1QytHW7VXHxIUPI4crEwetV1b1B+mOCbp
cmJbTke/jEeGzG7MZ2nb6NjlNrGTATwh10JMLCD6LzS/b7hPmEXoWhOIsKH6wR29
6BgSIeFCPkULcHRSvkc6kdIQfLNe5Rvux+aifuFvTlV9mvsy4973VA==
=m0jY
-----END PGP SIGNATURE-----

In message [email protected]
on Tue, 16 Oct 2007 14:09:13 +0900,
“NAKAMURA, Hiroshi” [email protected] wrote:

1-1-1e$B$K$D$$$F$O!“$h$/$o$+$j$^$;$s!#$d$^$@$5$s$”$?$j$+$i!“$3e(B
e$B$3$,LdBj$H$$$&OC$rJ9$-$?$$5$$,$7$^$9$,!”$J$s$@$+1sN8$7$F$$$ke(B
(or e$B$"$-$i$a$F$$$ke(B)e$B$h$&$J8}$V$j$KJ9$3$($k$s$G$9$,!#e(B

e$B;d$bJ9$-$?$$!#8D?ME*$K$“$^$jMxMQ7P83$,$J$$$N$G!”$o$+$C$F$J$$$s$G$9$h$M!#e(B
e$B!Ve(Bdebe$B$GF~$l$?$b$N$r%f!<%6$,e(Bgeme$B%3%^%s%I$G:o=|$7$?;~$KIT@09g$,=P$F%/%l!<%e(B e$B$,M=A[$5$l$k!W$H$+$J$s$H$+$@$C$?$h$&$J!#e(B e$B@$$NCf$N%Q%C%1!<%8!&%7%9%F%$O!"e(B

o e$BMxMQ;~$KJQ99$9$k$G$“$m$&@Dj%U%!%$%ke(B
o e$BMxMQ0J9
$KDI2C!&JQ99$G$”$m$&%G!<%?%U%!%$%ke(B

e$B0J30$NItJ,$O!"<+A0$G%U%!%$%k$d%G%#%l%/%H%j9=B$$N4IM}$r$7$F$$$^$9!#%$%se(B
e$B%9%H!<%k$5$l$?%U%!%$%k$K$D$$$F$b!"B?$/$N>l9g$Oe(B(MD5e$BEy$Ge(B)e$BFbMF$K$D$$$F$be(B
e$B4IM}$7$F$$$k$G$7$g$&!#e(B

e$B$3$l$i$N>pJs$K$h$C$F!“%Q%C%1!<%8$NDI2C;~$K$OFbMF$,2~JQ$5$l$F$$$J$$$3$He(B
e$B$r3NG’$7$?$j!”%Q%C%1!<%8$N:o=|$N$H$-$O$=$l$K4p$E$$$FITMW$J%U%!%$%k$r:oe(B
e$B=|!“ITMW$J%G%#%l%/%H%j$r:o=|!”$H$$$C$?$3$H$r9T$&$o$1$G$9!#e(B

e$B$G!“$=$&$$$C$?4IM}$,$5$l$F$$$k$H$3$m$K!”%Q%C%1!<%8!&%7%9%F%$HL54X78$Ke(B e$B%U%!%$%k$rDI2C$5$l$?$j!"JQ99$5$l$?$j$9$k$H%Q%C%1!<%8!&%7%9%F%$+$i8+$Fe(B
e$B!VIT@09g!W$,5/$-$?>uBV$H$J$k$o$1$G$9!#e(B

e$B%Q%C%1!<%8!&%7%9%F%$H!"e(Bgeme$B$K$h$k%i%$%V%i%j$d%"%W%j%1!<%7%g%s$NDI2C!&JQe(B e$B99!&:o=|$,E}9g$G$-$l$P$h$$$N$G$9$,!"$3$l$O$3$l$G$J$+$J$+Fq$7$$LL$,$"$je(B e$B$^$9!#%Q%C%1!<%8!&%7%9%F%B&$NET9g$G!“e(B(#!e$B9T$N=$@5$H$$$C$?e(B)e$BJQ99$r3]$1$?e(B
e$B$$>l9g$b$”$C$?$j$7$^$9$7!#e(B

1-1-1e$B$O%Q%C%1!<%8%s%0$HG[I[$K4X$9$k$3$H!"$D$^$je(Brequiree$B$de(Bgeme$B%a%=%C%I$G$Je(B
e$B$/!"e(Bgeme$B%3%^%s%I$K4X$9$kOC$J$N$G!"e(Brubygemse$B$Ne(Bdefault enable/disablee$B$H$OD>e(B
e$B@%j%s%/$7$J$$$+$b$7$l$^$;$s!#$G$be(Bdefault enablee$B$K$J$C$Fe(BRubye$B$N;EMM$K$J$le(B
e$B$P!“e(Bgeme$B%3%^%s%I$r;H$&%f!<%6$N?t$bA}$($k$G$7$g$&$+$i!”%G%#%9%H%j%S%e!<%?e(B
e$B$5$s$X$N1F6A$bBg$-$$$H;W$$$^$9!#e(B
e$B$`$7$m!"e(B

geme$B%3%^%s%I$r;H$C$F%i%$%V%i%j$d%"%W%j%1!<%7%g%s$r%$%s%9%H!<%k$G$-$ke(B
e$B$HCN$C$F$k!#e(B

e$B%Q%C%1!<%8!&%7%9%F%`$r;H$C$F%i%$%V%i%j$d%"%W%j%1!<%7%g%s$r%$%s%9%H!<e(B
e$B%k$G$-$k$HCN$C$F$k!#e(B

e$B$N!“N>J}$K3:Ev$9$k%f!<%6$,:.Mp$9$k$H$$$C$?1F6A$,$”$k$8$c$J$$$G$7$g$&$+!#e(B

e$B31$H$$$$$^$9!#e(B

1.9e$B$b%Q%C%1!<%8%s%0%7%9%F%`$be(BRubyGemse$B$bAG?M$G$9!#e(B

e$B$$$^$5$i$J$K8@$C$F$s$@$h!"$C$F46$8$G?=$7Lu$J$$$N$G$9$,65$($F2<$5$$!#e(B
geme$B$J$I%Q%C%1!<%8%s%0%7%9%F%`$r;H$&$D$b$j$,$J$$?Me(B(e$B$D$^$j;de(B)e$B$Ke(B
e$B$H$C$F$b!"$J$K$+$N1F6A$,=P$k$N$G$7$g$&$+e(B?

requiree$B$,<h$jBX$($i$l$k!"$HJ9$/$H$A$g$C$H$I$-$I$-$7$^$9!#e(B

e$B$H$3$m$G!"3’$5$s$Oe(BRubyGemse$B$r$,$C$D$j;H$C$F$k$s$G$7$g$&$+e(B?

e$B$3$l$O$-$C$H;d$N%3%s%T%e!<%?%j%F%i%7!<$,$J$$$+$i$@$H;W$&$N$G$9$,!"e(B
e$B;d$N<j85$N4D6-e(B
(2e$BBf$Ne(BOSXe$B!"e(BcoLinuxe$B$Ne(Bdebiane$B!"e(BRedhade$B7O$N$J$K$+e(B

  • e$B<+J,$Ge(B
    e$B%S%k%I$7$?e(BRuby)
    e$B$G$O!"e(BRubyGemse$B$,B?$/$N>l9g$&$4$-$^$;$s!#e(B

e$BF0$$$F$k?M$b$$$k$h$&$J$N$G;d$,0-$$$s$@$H;W$$$^$9$,!#e(B

e$BC/$+$N:n$i$l$?%i%$%V%i%j$r;H$C$F$_$?$$$J!"$H;W$C$F$b%$%s%9%H!<%kJ}K!$,e(B
geme$B$7$+=q$$$F$J$$$H$H$F$b0%$7$$5$;}$A$K$J$j$^$9!#e(B

e$B$G$-$l$Pe(BRubyGemse$B0J30$GAGKQ$K%$%s%9%H!<%k$9$k<jCJ$,$"$C$F!“e(B
e$B$5$i$Ke(BRubyGemse$B%U%!%s$N?M$N$?$a$NG[N8$,$”$k$h$&$J%i%$%V%i%j$,e(B
e$BA}$($k$H$&$l$7$$$G$9!#e(B

e$B$s$G!"$=$&M6F3$9$k$h$&$Je(Bruby-1.9e$B$@$HNI$$$N$K$J$"!"$H;W$$$^$9!#e(B

e$B$"$k$$$O!“I8=`E:IU$5$l$k$H$$$&$3$H$O!VAGKQ$J%$%s%9%H!<%k!W$,e(Bgeme$B$K$J$ke(B
e$B$H$$$&$3$H$r0UL#$9$k$N$@$+$i!”$=$s$J?4G[$OI,MW$J$$$h!*$C$F$3$H$+$J$"!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32085] Re: Import RubyGems to Ruby 1.9”
on Wed, 17 Oct 2007 07:36:16 +0900, Masatoshi SEKI
[email protected] writes:

|e$B$$$^$5$i$J$K8@$C$F$s$@$h!“$C$F46$8$G?=$7Lu$J$$$N$G$9$,65$($F2<$5$$!#e(B
|geme$B$J$I%Q%C%1!<%8%s%0%7%9%F%`$r;H$&$D$b$j$,$J$$?Me(B(e$B$D$^$j;de(B)e$B$Ke(B
|e$B$H$C$F$b!”$J$K$+$N1F6A$,=P$k$N$G$7$g$&$+e(B?

e$B$G$-$k$@$11F6A$,=P$J$$$h$&$K$7$?$$$H;W$C$F$$$^$9!#e(B

|requiree$B$,<h$jBX$($i$l$k!"$HJ9$/$H$A$g$C$H$I$-$I$-$7$^$9!#e(B

loadpathe$B$ND4@0$@$1$K8BDj$7$?$$$H$3$m$G$9!#<B:]$O$b$&$A$g$C$He(B
e$B$$$m$$$m$7$=$&$G$9$,!“I=LLE*$K$O8+$($J$$$H$$$$$J$”!#e(B

|e$B$3$l$O$-$C$H;d$N%3%s%T%e!<%?%j%F%i%7!<$,$J$$$+$i$@$H;W$&$N$G$9$,!"e(B
|e$B;d$N<j85$N4D6-e(B (2e$BBf$Ne(BOSXe$B!"e(BcoLinuxe$B$Ne(Bdebiane$B!"e(BRedhade$B7O$N$J$K$+e(B + e$B<+J,$Ge(B
|e$B%S%k%I$7$?e(BRuby) e$B$G$O!"e(BRubyGemse$B$,B?$/$N>l9g$&$4$-$^$;$s!#e(B
|# e$BF0$$$F$k?M$b$$$k$h$&$J$N$G;d$,0-$$$s$@$H;W$$$^$9$,!#e(B

e$B%P%0%l%]!<%H$9$k$Y$-$J$s$8$c$J$$$G$7$g$&$+!#1Q8l$GD>@$,M}A[e(B
e$B$G$9$,!"F|K\8l$G=P$7$F$b$i$C$F$b$J$s$H$+$J$k$H;W$$$^$9!#$9$/e(B
e$B$J$/$H$b!VB?$/$N>l9gF0$-$^$;$s!W$N$^$^$ONI$/$J$$$H;W$$$^$9!#e(B

|e$B$G$-$l$Pe(BRubyGemse$B0J30$GAGKQ$K%$%s%9%H!<%k$9$k<jCJ$,$“$C$F!“e(B
|e$B$5$i$Ke(BRubyGemse$B%U%!%s$N?M$N$?$a$NG[N8$,$”$k$h$&$J%i%$%V%i%j$,e(B
|e$BA}$($k$H$&$l$7$$$G$9!#e(B
|
|e$B$s$G!”$=$&M6F3$9$k$h$&$Je(Bruby-1.9e$B$@$HNI$$$N$K$J$“!”$H;W$$$^$9!#e(B

e$B$7$+$7!"$=$l$G$O%i%$%V%i%j:n<T$NIiC4$,A}$($k$o$1$G!#Fq$7$$$3e(B
e$B$H$G$9!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:32079] Re: Import RubyGems to Ruby 1.9”
on Tue, 16 Oct 2007 14:09:13 +0900, “NAKAMURA, Hiroshi”
[email protected] writes:

|> 1-1-2e$B$K$D$$$F$Oe(Brequiree$B$,%P!<%8%g%s$rMW5a$9$k$h$&$K$J$k$o$1$Ge(B
|> e$B$O$J$$e(B(e$B%P!<%8%g%s;XDj$7$?$1$l$Pe(Bgeme$B%a%=%C%I$r8F$Ve(B(e$B"be(Brubygems
|> e$B8GM-$N5!G=$rMQ$$$ke(B)e$B$7$+$J$$e(B)e$B$o$1$G$9$+$i!“?4G[$9$kI,MW$O$J$$e(B
|> e$B$N$G$O$J$$$+$H;W$$$^$9!#e(B
|
|e$B$3$l$O!“e(BKernel.geme$B%a%=%C%I$O%G%U%)%k%H$G$ODI2C$5$l$:!“e(B"rubygems” feature
|e$B$re(Bloade$B$7$J$$$H;H$($J$$$H$$$&>uBV$rA[Dj$5$l$F$^$9e(B? e$B$3$NJU$,%/%j%”$K$J$le(B
|e$B$P!“e(Bdrbraine$B$K!”!V$G!”$3$Ne(Bsubsete$BMW7o$I$&;W$&e(B?e$B!W$HJ9$1$k$H;W$$$^$9!#e(B
|
|A. geme$B%a%=%C%I$b%G%U%)%k%H$G;H$($ke(B:
| e$B%G%U%)%k%H$Ge(Bgeme$B%a%=%C%I$,;H$($k$N$J$i!"$d$O$je(BRubye$B8@8l;EMM$N0lIt$H9M$(e(B
| e$B$i$l$A$c$&$+$b$7$l$J$$$7!“e(Bradicale$B2a$.$k$s$8$c$J$$$+$J$!!#e(B
|
|B. geme$B%a%=%C%I$Oe(Brubygems featuree$B$re(Bloade$B$7$F$+$ie(B:
| e$B%G%U%)%k%H$G$OL@<(E*$J%P!<%8%g%s;XDj$O$G$-$J$$>uBV$@$1$I!”%Q%C%1!<%8Fbe(B
| e$B$Ne(Bgemspece$B$K$h$C$F;XDj$5$l$?!“0MB8@he(Bgeme$B$K$D$$$F$O!”;XDj$5$l$?%P!<%8%g%se(B
| e$B!J:G?7$H$O8B$i$J$$!K$,e(Brequiree$B$GFI$_9~$^$l$k$N$G!"CfESH>C<$@$J$!!#e(B
|
|e$Be$Oe(BKernel.requiree$B$be(BKernel.geme$B$b7k6I!"e(BGem.activatee$B$r8F$s$G$^$9$+$ie(B
|e$B$M!#$h$/$G$-$F$^$9$h!#$$$m$$$mC!$+$l$F=PMh>e$,$C$?$b$N$@$H$$$&46$8$,$9$k!#e(B

e$B8D?ME*$K$O$$$-$J$je(BKernel.geme$B%a%=%C%I$,8F$Y$k$N$ONI$/$J$$$H;We(B
e$B$$$^$9!#e(BGeme$B%/%i%9e(B(e$B%b%8%e!<%k$@$C$1e(B)e$B$,Dj5A$5$l$A$c$&$N$b$[$se(B
e$B$H$&$O5$$KF~$i$J$$!#e(B

|e$B;d$bJ9$-$?$$!#8D?ME*$K$“$^$jMxMQ7P83$,$J$$$N$G!”$o$+$C$F$J$$$s$G$9$h$M!#e(B
|e$B!Ve(Bdebe$B$GF~$l$?$b$N$r%f!<%6$,e(Bgeme$B%3%^%s%I$G:o=|$7$?;~$KIT@09g$,=P$F%/%l!<%`e(B
|e$B$,M=A[$5$l$k!W$H$+$J$s$H$+$@$C$?$h$&$J!#e(B

e$B$J$k$[$I!#e(B

|1-1-1e$B$O%Q%C%1!<%8%s%0$HG[I[$K4X$9$k$3$H!"$D$^$je(Brequiree$B$de(Bgeme$B%a%=%C%I$G$Je(B
|e$B$/!"e(Bgeme$B%3%^%s%I$K4X$9$kOC$J$N$G!"e(Brubygemse$B$Ne(Bdefault enable/disablee$B$H$OD>e(B
|e$B@%j%s%/$7$J$$$+$b$7$l$^$;$s!#$G$be(Bdefault enablee$B$K$J$C$Fe(BRubye$B$N;EMM$K$J$le(B
|e$B$P!“e(Bgeme$B%3%^%s%I$r;H$&%f!<%6$N?t$bA}$($k$G$7$g$&$+$i!”%G%#%9%H%j%S%e!<%?e(B
|e$B$5$s$X$N1F6A$bBg$-$$$H;W$$$^$9!#e(B

e$B$G$7$g$&$M$(!#$b$&>/$76qBNE*$KJ9$-$?$$$J$"!#e(B

 Rubygems は、基本的に他のパッケージシステムから包みやすい作り
だと思います。具体的には以下のような性質からです。

  • gem は prefix 等に依存しない。#!行の改変機能も備えている。

  • gem の install はファイルの展開と配置のみで、ファイルの改変や
    上書き等が発生しない。uninstall は install されたファイルの削除
    のみ。(æŠœãå·®ã—ãŒå¯¾ç§°ã§ã€é †ç•ªã«ã‚‚ä¾ã‚‰ãªã„)

  • これにより、たとえば gem コマンドを使わずにパッケージシステムで
    ファイルを展開・削除することも可能。

 一方、問題もいくつかあります。

  • ユーザが勝手に gem ã‚’ install/update 等するとパッケージシステãƒ
    との整合性が崩れる。

  • ファイルにパッチを当てるのが少々難儀。gem のインストール後に
    改変するのでは gem pristine で戻ってしまうし、 gem を展開して
    改変後に再パッケージしてインストール、というのは将来的に署名が
    å°Žå…¥ã•ã‚ŒãŸå ´åˆã«ã©ã†ã‹ã¨ã„ã†å•é¡ŒãŒã‚ã‚‹ã€‚

 ということで、パッケージシステムが管理下に置く ruby については
ユーザが gem コマンドを使うことは避けてくれ、とユーザ責任にして
しまえばいいんじゃないでしょうか。

 FreeBSD ports のスタンスはそんな感じです。すでに rubygem-* と
いうパッケージが山のようにあって、特にギミックなしでありのままに
管理しています。

 まあ、 FreeBSD ports 自体がパッケージ管理システムというよりは
インストール支援という位置づけなので適当なんですが。(prefix の
デフォルトは今も変わらず /usr/local)

 明に暗に禁止する方法はいろいろあると思います。警告を出すように
gem コマンドに手を入れるとか、通常PATHãŒé€šã£ã¦ã„ãªã„å ´æ‰€ã«å…¥ã‚Œã¦
パッケージシステムからのみ呼び出すとか。


/
/__ __ Akinori.org / MUSHA.org
/ ) ) ) ) / FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp

“Different eyes see different things,
Different hearts beat on different strings –
But there are times for you and me when all such things agree”

In message [email protected]
on Wed, 17 Oct 2007 20:05:14 +0900,
“Akinori MUSHA” [email protected] wrote:

e$B!!e(BRubygems e$B$O!"4pK\E*$KB>$N%Q%C%1!<%8%7%9%F%`$+$iJq$_$d$9$$:n$je(B
e$B$@$H;W$$$^$9!#6qBNE*$K$O0J2<$N$h$&$J@-<A$+$i$G$9!#e(B
e$B;d$Oe(Bgeme$B$G%$%s%9%H!<%k$5$l$k$H$-$N3F=hM}CJ3,$r40A4$KM}2r$7$F$$$^$;$s!#e(B

pkgsrce$B$NJ}$G$O!“e(B”.gem"e$B$H$$$&%5%U%#%C%/%9$N%U%!%$%k$O4{CN$N%"!<%+%$%V!&e(B
e$B%U%!%$%k$H$7$FE83+$G$-$k$h$&$K$J$C$F$$$^$9!#e(B( .tar.gz e$B$de(B
.zip e$B$H0l=o!#e(B)

e$BC"$7!“E83+$9$k$@$1$G!”$=$l0J9_$N=hM}$re(Bgeme$B%3%^%s%I$KMj$C$F$$$k%1!<%9$Oe(B
e$B$J$+$C$?$H;W$$$^$9!#e(B

  • gem e$B$Oe(B prefix e$BEy$K0MB8$7$J$$!#e(B#!e$B9T$N2~JQ5!G=$bHw$($F$$$k!#e(B
    e$B$*$)!"$=$&$@$C$?$N$+!#e(B
  • gem e$B$Ne(B install e$B$O%U%!%$%k$NE83+$HG[CV$N$$G!"%U%!%$%k$N2~JQ$de(B
    e$B>e=q$-Ey$,H/@8$7$J$$!#e(Buninstall e$B$Oe(B install e$B$5$l$?%U%!%$%k$N:o=|e(B
    e$B$N$
    !#e(B(e$BH4$-:9$7$,BP>N$G!"=gHV$K$b0M$i$J$$e(B)

  • e$B$3$l$K$h$j!"$?$H$($Pe(B gem e$B%3%^%s%I$r;H$o$:$K%Q%C%1!<%8%7%9%F%`$Ge(B
    e$B%U%!%$%k$rE83+!&:o=|$9$k$3$H$b2DG=!#e(B
    e$B$J$k$[$I!#e(B

e$B!!0lJ}!“LdBj$b$$$/$D$+$”$j$^$9!#e(B

  • e$B%f!<%6$,>!<j$Ke(B gem e$B$re(B install/update e$BEy$9$k$H%Q%C%1!<%8%7%9%F%`e(B
    e$B$H$N@09g@-$,Jx$l$k!#e(B

  • e$B%U%!%$%k$K%Q%C%A$rEv$F$k$N$,>/!9Fq57!#e(Bgem e$B$N%$%s%9%H!<%k8e$Ke(B
    e$B2~JQ$9$k$N$G$Oe(B gem pristine e$B$GLa$C$F$7$^$&$7!“e(B gem e$B$rE83+$7$Fe(B
    e$B2~JQ8e$K:F%Q%C%1!<%8$7$F%$%s%9%H!<%k!”$H$$$&$N$O>-MhE*$K=pL>$,e(B
    e$BF3F~$5$l$?>l9g$K$I$&$+$H$$$&LdBj$,$"$k!#e(B
    e$B$3$l$OF,DK$$$G$9$M$'!#e(B

pkgsrce$BJ}LL$G$Oe(Bstaging
installe$B$H8@$C$F!“:n6HMQ$N%G%#%l%/%H%j0J2<$K0lC6e(B
e$B%$%s%9%H!<%k$7$F!”$=$3$+$i%Q%C%1!<%8$r:n@.$9$k$H$$$&J}K!$r<h$k$3$H$b$Ge(B
e$B$-$k$h$&$JJ}K!$,?J$a$i$l$F$$$^$9!#e(BOpenBSDe$B$Ne(Bportse$B$b!";w$?$h$&$JJ}K!$r<h$Ce(B
e$B$F$$$?$H;W$$$^$9!#e(B

e$BMW$Oe(Bgeme$B$@$1$GJD$8$:$K!“%U%!%$%k$NE83+!”%$%s%9%H!<%k$H$$$C$?CJ3,Kh$K;He(B
e$B$($F$$$k8B$j$O!"%Q%C%1!<%8!&%7%9%F%`$NJ}$G2?$H$+$G$-$k$N$G$O$J$$$G$7$ge(B
e$B$&$+!#e(B

e$B!!e(BFreeBSD ports e$B$N%9%?%s%9$O$=$s$J46$8$G$9!#$9$G$Ke(B rubygem-* e$B$He(B
e$B$$$&%Q%C%1!<%8$,;3$N$h$&$K$"$C$F!“FC$K%.%_%C%/$J$7$G$”$j$N$^$^$Ke(B
e$B4IM}$7$F$$$^$9!#e(B
e$B8e$G;29M$K$5$;$FLc$$$^$9!#e(B:-)

At Wed, 17 Oct 2007 20:05:14 +0900,
I wrote:

 明に暗に禁止する方法はいろいろあると思います。警告を出すように
gem コマンドに手を入れるとか、通常PATHãŒé€šã£ã¦ã„ãªã„å ´æ‰€ã«å…¥ã‚Œã¦
パッケージシステムからのみ呼び出すとか。

 よりまっとうなのは、ユーザ用に site_ruby 相当の別レポジトリを
用意してあげることですね。それなら折り合いが付くでしょうか。


/
/__ __ Akinori.org / MUSHA.org
/ ) ) ) ) / FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp

“Different eyes see different things,
Different hearts beat on different strings –
But there are times for you and me when all such things agree”

At Wed, 17 Oct 2007 22:04:23 +0900,
Takahiro K. wrote:

pkgsrc方面ではstaging installと言って、作業用のディレクトリ以下に一旦
インストールして、そこからパッケージを作成するという方法を取ることもで
きるような方法が進められています。OpenBSDのportsも、似たような方法を取っ
ていたと思います。

 rpm や deb は fakeroot だし、OpenBSD ports も fork してまもなく
そうしましたね。

 そうしないとクロスビルドへの道も開けませんしね。FreeBSD ports は
まだだなあ。

要はgemだけで閉じずに、ファイルの展開、インストールといった段階毎に使
えている限りは、パッケージ・システムの方で何とかできるのではないでしょ
うか。

 伝え聞くところによると、主な問題というのは拡張ライブラリを含む
gem のビルドらしいです。この議論の中で実例が提示されれば、これが
解決するまではダメだよ、というハードルにできると思います。

 FreeBSD ports のスタンスはそんな感じです。すでに rubygem-* と
いうパッケージが山のようにあって、特にギミックなしでありのままに
管理しています。
後で参考にさせて貰います。:slight_smile:

 大して参考になるものはないと思いますよ。単純に、インストールは
gem install で行い、削除はファイル削除で行っています。


/
/__ __ Akinori.org / MUSHA.org
/ ) ) ) ) / FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp

“Different eyes see different things,
Different hearts beat on different strings –
But there are times for you and me when all such things agree”

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

e$B$I$J$?$+!“e(Brubygemse$B$HB>%Q%C%1!<%8%s%0%7%9%F%$H$NAj@-$K4X$9$kLdBjE@$K$D$$e(B e$B$F$^$H$a$i$l$^$;$s$+!#e(B^^; ruby-coree$B$H$$$&$+!"e(BRubyGemse$B%A!<%$K>R2p$9$k$He(B
e$B$$$$$H;W$$$^$9!#$3$3$^$G$N5DO@$G!”!V$3$&$$$&$H$3$m$OLdBj$@$1$I!"%Q%C%1!<e(B
e$B%8%s%0$N:n$j$+$?$G$J$s$H$+$J$ke(B/e$B$9$k!W$H$$$&9`L$,$$$/$D$+>R2p$5$l$F$^$9e(B
e$B$h$M!#e(B

e$B;D$k%H%T%C%/$O31$5$s$N!VB?$/$N>l9g$&$4$-$^$;$s$H$F$b0%$7$$5$;}$A$K$J$j$^e(B
e$B$9!W$+$J!#$^$D$b$H$5$s$+$i8@$o$l$F$k$h$&$K!"LdBj$,$o$+$i$J$-$c8!F$$N$7$he(B
e$B$&$b$J$$$s$G$A$c$s$H@bL@$7$F$/$@$5$$!#$=$l$,e(B

| e$B$G$-$l$Pe(BRubyGemse$B0J30$GAGKQ$K%$%s%9%H!<%k$9$k<jCJ$,$"$C$F!“e(B
| e$B$5$i$Ke(BRubyGemse$B%U%!%s$N?M$N$?$a$NG[N8$,$”$k$h$&$J%i%$%V%i%j$,e(B
| e$BA}$($k$H$&$l$7$$$G$9!#e(B

e$B$K$D$J$,$k$s$G$O!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRxiwqR9L2jg5EEGlAQKxxQf+LFZJpE5LEeG3B1gesI6OUVl09XijFheZ
gSN1tEeYzX0/+alSoIo7U+hDMZNytYg6lwy6MzDEeUwFRge3S/fl7EZqi2NL01X/
st3kR2ZsWdYRLaz7LLZCtuZPfTLV2Kbh81sQnXelwg9jiCofCcb35bgALhkVJ2/b
Du84IyBzSxeSphR5meOYKtmcCBwpnlFcCg7Dvg00DYzEq/n7RLAEfbhiwXk/SUQ2
Oy1ZksrphmfXcaqSfEHcCactKI02Y295ho2sHEuUbOktbdGdYYc4DfGDYuJ5R4oM
mQfTXGvUcfOeGacR16NsMZTzEpAZqoMTa6qyNwNoMcLUQxUYLAS3XQ==
=GdMF
-----END PGP SIGNATURE-----

e$B2!ED$G$9!#e(B
e$B@^3QEPO?$7$?$N$Ge(B ROM e$B$G$O2?$@$H;W$$Ej9F$5$;$FD:$-$^$9!#e(B

e$BIaCJe(B Fedora / RHEL e$B$G%Y%s%@!<HGe(B ruby e$B$r;HMQ$7$F$*$j!"e(B
e$B<c43e(B cygwin e$B$G$be(B ruby e$B$7$F$$$^$9!#e(B

e$B;d$O!VE:IU$7$Fe(B disablee$B!W$X0lI<$H$$$&N)>l$G$9!#e(B
e$B%i%$%H%f!<%6!<$Ge(B Rails
e$B$r;H$&>l9g$7$+%$%s%9%H!<%k$7$F$*$i$:!“e(B
e$B%P%$%J%j%b%8%e!<%k$r4^$`%Q%C%1!<%8$Oe(B gem
e$B%$%s%9%H!<%k$7$J$+$C$?$j$7$^$9!#e(B
RubyGems e$B$X4|BT$9$k$3$H$Oe(B wget e$B”*e(B make install
e$B9TDx$N4JJX2=$G$9!#e(B
e$B%P!<%8%g%s0MB8$N2r7h$O4|BT$7$F$$$^$;$s!#e(B

e$B%P!<%8%g%s0MB8$N2r7h$K$O4|BT$7$F$$$J$$$N$G!"e(B
e$B!V%P!<%8%g%s0MB8$r2r7h$G$-$J$$e(B subset e$B$N$_$re(B
enablee$B!W$G$b9,$;$G$9$,!"e(B
e$B$=$l$G$Oe(B gem e$B$N0lMc$,e$(D?xe$B$,$l$F$7$^$&$N$G$7$g$&!#e(B
e$B$?$@$7!"e(B
e$B%P!<%8%g%s0MB8$O%G%W%m%$7W2h$rN)$F$?CJ3,$GGS=|$5$l$k!J$Y$-!K$b$N$H9M$($^$9$N$G!"e(B
e$B$=$N5!G=$O3+H/:n6H<T$N:n6H@-$N8~>e$K$7$+4sM?$7$J$$$N$G$O!)$H;W$C$F$7$^$$$^$9!#e(B

e$B!t:#F|$K$*$$$F$O?M?tHf$,e(B developer > user
e$B$J$N$+$bCN$l$^$;$s$1$l$I!#e(B

e$B!!e(Brpm e$B$de(B deb e$B$Oe(B fakeroot e$B$@$7!"e(BOpenBSD ports e$B$be(B fork e$B$7$F$^$b$J$/e(B
e$B$=$&$7$^$7$?$M!#e(B

rpm e$B$Oe(B DESTDIR e$B;XDj$Ne(B make install
[email protected]*!W$rF@$F$$$^$9$M!#e(B

e$B!!EA$(J9$/$H$3$m$K$h$k$H!"<g$JLdBj$H$$$&$N$O3HD%%i%$%V%i%j$r4^$`e(B
gem e$B$N%S%k%I$i$7$$$G$9!#$3$N5DO@$NCf$G<BNc$,Ds<($5$l$l$P!"$3$l$,e(B
e$B2r7h$9$k$^$G$O%@%a$@$h!"$H$$$&%O!<%I%k$K$G$-$k$H;W$$$^$9!#e(B

e$B$=$l$O!"e(B
e$B%P%$%J%j%b%8%e!<%k$N%3%s%Q%$%k$Ke(B gcc e$B$J$II,MW$G!"e(B
e$B$=$N%$%s%9%H!<%k$Oe(B gem e$B$K$O=PMh$J$$$+$i!"e(B
e$B$H$$$&$3$H$G$7$g$&$+!)e(B

e$BA0=R$NDL$je(B Rails e$B$G$7$+e(B gem
e$B$K$@$OC$K$J$i$J$$$N$G$9$,!"e(B
e$B;d$Oe(B ruby-mysql e$B$N%$%s%9%H!<%k$K$Oe(B gem
e$B$r;HMQ$7$F$
$j$^$;$s!#e(B
e$BFC$K%G%W%m%$@h$r9M$($k$H<j=g$K!Ve(Bgcc
e$B$r%$%s%9%H!<%k!W$H$$$&$N$OCn?b$J$s$G$9!#e(B
e$B9,$$e(B RHEL e$B$K$O=`%Y%s%@!<%Q%C%1!<%8$Ke(B ruby-mysql
e$B$,B8:_$9$k$N$G!"e(B
e$BLdBj$O2sHr$G$-$F$$$^$9!#e(B

e$B$H!"8@$$$^$9$+!"e(B
e$B%Q%C%1!<%8%7%9%F%`$C$F%P%$%J%j!J%S%k%[email protected]*!K$rMF0W$K:FG[I[$9$k$?$a$N$b$N!"e(B
e$B$8$c$J$$$G$7$g$&$+!#e(B
gem e$B$Oe(B make install e$B$r4JC1$K$9$k$b$N!#e(B
e$BAjMF$l$J$/$FNI$$$N$G$O$J$$$+$H;W$$$^$9!#e(B

e$B31$H$$$$$^$9!#e(B

On 2007/10/19, at 22:27, NAKAMURA, Hiroshi wrote:

e$B;D$k%H%T%C%/$O31$5$s$N!VB?$/$N>l9g$&$4$-$^$;$s$H$F$b0%$7$$5$;}$A$K$J$j$^e(B
e$B$9!W$+$J!#$^$D$b$H$5$s$+$i8@$o$l$F$k$h$&$K!"LdBj$,$o$+$i$J$-$c8!F$$N$7$he(B
e$B$&$b$J$$$s$G$A$c$s$H@bL@$7$F$/$@$5$$!#$=$l$,e(B

e$B5-O?$r$H$C$F$"$C$?$N$O$?$H$($P$3$&$$$&$d$D$G$9$,!"e(B

e$B;d$N4D6-$,$_$J$5$s$H$I$&0c$&$N$+!“$A$c$s$H@bL@$G$-$k<+?.$,$”$j$^$;$s!#e(B
NaHie$B$5$s$,e(Btwittere$B$G=q$$$F$$$?DL$j!“AG?M$Ne(BFUDe$B$H;W$o$l$F$b;EJ}$”$j$^$;$s$M!#e(B
e$B$*A{$,$;$7$F?=$7Lu$"$j$^$;$s$G$7$?!#e(B

| e$B$G$-$l$Pe(BRubyGemse$B0J30$GAGKQ$K%$%s%9%H!<%k$9$k<jCJ$,$"$C$F!“e(B
| e$B$5$i$Ke(BRubyGemse$B%U%!%s$N?M$N$?$a$NG[N8$,$”$k$h$&$J%i%$%V%i%j$,e(B
| e$BA}$($k$H$&$l$7$$$G$9!#e(B

e$B$K$D$J$,$k$s$G$O!#e(B

e$B$^$D$b$H$5$s$,e(B

|geme$B$J$I%Q%C%1!<%8%s%0%7%9%F%`$r;H$&$D$b$j$,$J$$?Me(B(e$B$D$^$j;de(B)e$B$Ke(B
|e$B$H$C$F$b!"$J$K$+$N1F6A$,=P$k$N$G$7$g$&$+e(B?

e$B$G$-$k$@$11F6A$,=P$J$$$h$&$K$7$?$$$H;W$C$F$$$^$9!#e(B

e$B$H$*$C$7$c$C$F$$$k$N$G!"$H$/$K2r7h$G$-$J$/$F$b$+$^$$$^$;$s!#e(B

e$B2!ED$G$9!#e(B

e$B;d$N4D6-$,$_$J$5$s$H$I$&0c$&$N$+!"$A$c$s$H@bL@$G$-$k<+?.$,$"$j$^$;$s!#e(B

e$B#1E@5$$K$J$k$3$H$,$"$j$^$9!#e(B

e$B<+J,$Ge(B ruby e$B$re(B make e$B$9$k$H!“e(B
e$BE:IU%i%$%V%i%j$,%9%k!<$5$l$k;v$r8+Mn$H$9>l9g$,$”$j$^$9!#e(B
e$BE:IU%i%$%V%i%j$,%i%C%W$9$kBP>]$N%P%$%J%j%i%$%V%i%j$,B8:_$7$J$+$C$?$j!"e(B
e$B2;$bL5$/%9%k!<$5$l$^$9$,FC$K%(%i!<$K$J$i$J$$$G$9!#e(B

e$B$=$l$G%i%$%V%i%jITB-$K$J$C$F$$$k$N$G$OL5$$$G$7$g$&$+!)e(B

e$B$3$NE:IU%i%$%V%i%j$N%9%-%C%W>u67$r#1%3%^%s%I$G3NG’$9$k$h$&$JJ}K!$C$F!"e(B
e$B2?$+L5$$$G$7$g$&$+!)!d@hC#$N3’$5$se(B

e$B!te(Bmake help e$B$K:$C$F$?$i%4%a%s%J%5%$!#e(B

e$B$"$k$$$O!"%9%^!<%H$8$c$J$$$s$G$9$,!"e(B
e$B%U%k%;%C%He(B make
e$B=PMh$?$H>ZL@$G$-$k%U%!%$%k%j%9%H$HHf3S$7$F$bF1$8$G$7$g$&$+!#e(B
e$B$?$V$se(B Cygwin
e$BHG$N%P%$%J%jG[I[$5$l$F$$$kE[$O%U%k%;%C%H$H;W$$$^$9!#e(B

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

e$B!Ve(Bwget e$B"*e(B make install
e$B9TDx$N4JJX2=$G$9!W$H$$$&$H$3$m$+$i!“2!ED$5$s$O%Q%Ce(B
e$B%1!<%8%s%0$NOC$r$5$l$F$$$k$N$@$H;W$$$^$9$,!”$3$N%a!<%k$O%Q%C%1!<%8%s%0$Ne(B
e$BOC$G$O$J$/!"%P!<%8%g%s;XDje(Bfeature
loadinge$B$K$D$$$F$N>pJsDs6!$G$9!#e(B

[email protected] wrote:

RubyGems e$B$X4|BT$9$k$3$H$Oe(B wget e$B"*e(B make install e$B9TDx$N4JJX2=$G$9!#e(B
e$B%P!<%8%g%s0MB8$N2r7h$O4|BT$7$F$$$^$;$s!#e(B

e$B%P!<%8%g%s0MB8$N2r7h$K$O4|BT$7$F$$$J$$$N$G!"e(B
e$B!V%P!<%8%g%s0MB8$r2r7h$G$-$J$$e(B subset e$B$N$_$re(B enablee$B!W$G$b9,$;$G$9$,!"e(B
e$B$=$l$G$Oe(B gem e$B$N0lMc$,e(B?e$B$,$l$F$7$^$&$N$G$7$g$&!#e(B
e$B$?$@$7!"e(B
e$B%P!<%8%g%s0MB8$O%G%W%m%$7W2h$rN)$F$?CJ3,$GGS=|$5$l$k!J$Y$-!K$b$N$H9M$($^$9$N$G!"e(B
e$B$=$N5!G=$O3+H/:n6H<T$N:n6H@-$N8~>e$K$7$+4sM?$7$J$$$N$G$O!)$H;W$C$F$7$^$$$^$9!#e(B

e$B%P!<%8%g%s0MB82r7h$J$s$G$9$,!“e(BRailse$B$O$3$l$r:GBg8B$K3hMQ$7$F$^$9!#e(B1.2.5e$BMQe(B
e$B%”%W%j$He(B1.2.3e$BMQ%"%W%j$G!"E,@Z$K0MB8@h%i%$%V%i%j72!Je(BActione$B$J$s$H$+$de(B
Activee$B$J$s$H$+!K$r;H$$J,$1$i$l$k$N$be(BRubyGemse$B$N$*$+$2!#e(B

Railse$B$N$=$N5!G=$r3h$+$9$Y$-$+$I$&$+$OJLLdBj$G$9$,!“e(BRailse$B%A!<%`$Oe(BRubyGems
e$B$N%P!<%8%g%s0MB85!G=$,I,MW$@$H;W$C$F$$$k!”$H$$$&$3$H$G!#!J<B$OB>$8$c3hMQe(B
e$BNc$r8+$?$3$H$J$$$s$@$1$I!Ke(B

e$B$J$I$H!“e(BRailse$B$O%A%e!<%H%j%”%k$7$+$d$C$?$3$H$,$J$$%d%D$,8@$&!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRxiyJB9L2jg5EEGlAQJ35Qf+IecH6jwjX2K3VQy+gblH6ttVujE3v5YP
3MKexBnPNdOl3le2vjSgSSJVLz0JJDMMt82AlUBj5vLaOM4O30liBQSmO8clDLk3
zGc8ZnZTL5IkLZEmdFlmToSqhs3XeioJyYmQDTb/YjJ5BZo+YDxoYuyFDpPReFME
BfZtn1gCAx2Xa2x4fA9snO23bsSYl4TwArOb5rIRmGxi06v6W+UUktQdcMyexOhQ
gnRczbDy1FEpztb9lBklWAi3vzXYF4bg1rxlfxduXGkfXbyJaR4QQcbLIT0c/jb7
udQOhmGi6guAg3FqmuOVPRCXKcsz0xSQNAcQ3kPYxfULNoP/m6PzQg==
=osLn
-----END PGP SIGNATURE-----

e$B$J$+$@$G$9!#e(B

At Sat, 20 Oct 2007 10:42:07 +0900,
[email protected] wrote in [ruby-dev:32098]:

e$B$3$NE:IU%i%$%V%i%j$N%9%-%C%W>u67$r#1%3%^%s%I$G3NG’$9$k$h$&$JJ}K!$C$F!"e(B
e$B2?$+L5$$$G$7$g$&$+!)!d@hC#$N3’$5$se(B

ad hoce$B$G$9$,!“e(BGNU grepe$B$,$”$l$Pe(B

$ grep -L --include=Makefile ^TARGET -r ext/
ext/door/Makefile
ext/Win32API/Makefile
ext/win32ole/Makefile

rubye$B$G$d$k$J$ie(B

$ ruby -e ‘Dir.glob(“ext/**/Makefile”){|m|puts m if
open(m){|f|f.grep(/^TARGET/){break}}}’
ext/door/Makefile
ext/Win32API/Makefile
ext/win32ole/Makefile

e$B!te(Bmake help e$B$K:$C$F$?$i%4%a%s%J%5%$!#e(B

e$B$J$K$+$"$C$?$[$&$,$$$$$G$7$g$&$+!#e(B

e$B2!ED$G$9!#e(B

Railse$B$N$=$N5!G=$r3h$+$9$Y$-$+$I$&$+$OJLLdBj$G$9$,!“e(BRailse$B%A!<%`$Oe(BRubyGems
e$B$N%P!<%8%g%s0MB85!G=$,I,MW$@$H;W$C$F$$$k!”$H$$$&$3$H$G!#!J<B$OB>$8$c3hMQe(B
e$BNc$r8+$?$3$H$J$$$s$@$1$I!Ke(B

e$B$^$:4pK%9%?%s%9$H$7$Fe(B Rails
e$B$d%"%8%c%$%k$rH]Dj$9$k$D$b$j$OL5$$$G$9!#e(B
e$B$"$He(B Rails e$B$N3+H/$N<BBV$O$h$/H=$C$F$$$^$;$s!#e(B

e$BA02s$N!V3+H/<T!W$O@5$Ke(B Rails e$B3+H/<T$rA[Dj$7$F$$$?$j$7$^$9!#e(B
e$B%"%8%c%$%k$K2<AX$N?6$kIq$$$rJQ$($F$$$F!"e(B
e$BJ#?t%P!<%8%g%s$rF1;~$KF10l4D6-$G%a%s%F$7$h$&$H$7$?$i!"e(B
RubyGems e$BE*$Je(B dynamic link e$B5!9=$OI,MW$G$7$g$&!#e(B

e$B8D?ME*$K$O!"$b$O$de(B Xen e$B$+$iN%$l$i$l$:!"e(B
e$B$$$/$i$G$bI,MW$JAH$_9g$o$;$N?t$@$1e(B VM e$BMQ0U$9$l$P$$$$!"e(B
e$B$H$$$&463P$G5o$j$^$7$F!"e(B
ruby e$B$K%P!<%8%g%s0MB85!G=$,L5$/$F$bF1MM$N%a%s%F$O=PMh$ke(B
e$B$H$9$iA[A|$7$F$$$^$9!#e(B

e$B2!ED$G$9!#e(B

e$B$$$$$H;W$$$^$9!#$3$3$^$G$N5DO@$G!"!V$3$&$$$&$H$3$m$OLdBj$@$1$I!"%Q%C%1!<e(B
e$B%8%s%0$N:n$j$+$?$G$J$s$H$+$J$ke(B/e$B$9$k!W$H$$$&9`L$,$$$/$D$+>R2p$5$l$F$^$9e(B
e$B$h$M!#e(B

e$BK>$^$l$k%^%H%a$G$J$/$F?=$7Lu$J$$$N$G$9$,!"e(B
gem e$B%5%V%3%^%s%I$GM-L>$I$3$m$N%Q%C%1!<%8$r@8@.=PMh$l$Pe(B
e$B>yJb$H$7$F$O==J,$8$c$J$$$G$7$g$&$+!)e(B

pkg e$B7O$G$O4{$KB8:_$9$k$h$&$G$9$7!"e(B
rpm
e$B$N@8@.$bMF0W$H8+@Q$b$C$F$$$^[email protected]*$,MF0W$KNs5s$G$-$^$9$N$G!K!#e(B

e$BB?>/$^$I$m$C$3$7$$$G$9$,!"e(B
e$BCf4V%Q%C%1!<%8$r@8@.$7$F4{B8%Q%C%1!<%8%c$K%$%s%9%H!<%k0Q>y$9$l$P!"e(B
gem install e$B$7$?%U%!%$%k$J$IB8:_$7$J$/$J$j$^$9!#e(B

e$B99$K%Q%C%1!<%8$r:FG[I[$9$k%3%_%e%K%F%#$,e(B rubyforge
e$B$J$I$K=PMh$l$P!“e(B
e$BMxJX@-$b8~>e$7$^$9!#e(B
e$B$b$A$m$s4{B8%Q%C%1!<%8$,$”$l$Pe(B gem e$B$Oe(B .gem
e$B$G$J$/$=$l$r<h$C$F$-$F$/$l$F!#e(B

e$B!t1d$Ye(B make e$B2s?t$,8:$l$Pe(B CO2 e$B:o8:$K!&!&!&e(B

e$B$?$@!"$3$NLdBj$OA0Ds$H$7$F!"e(B
e$B<B:]E*$K%Q%C%1!<%8%s%0%7%9%F%`$,2;$r>e$2$k%1!<%9!"e(B
e$B$,Ns5s$5$l$k$3$H$,9%$^$7$$$H;W$$$^$9$,!“e(B
e$BK\Ev$K$=$s$J%1!<%9$,$”$k$N$G$7$g$&$+!)e(B

e$B5!G=M=A[$+$i$/$k2DG=@-$NNc<($O8+$+$1$?5$$,$7$^$9$,!"e(B
e$B<BNc$O5s$,$C$F$$$J$$$N$G$O$J$$$G$7$g$&$+!#e(B

e$B6/$$$F8@$($P!";d$NCN$k8B$j!“e(B
Cygwin e$B$G%$%s%9%H!<%i$,D|$a$k;v$O$”$j$^$9!#e(B
NTFS e$B$Oe(B admin
e$B$G$b%"%/%;%9=PMh$J$$%Q!<%_%C%7%g%s$r@_Dj$G$-$F!"e(B
Cygwin e$B$N%G%U%)%k%H$G$O%f!<%6!<$,:n$C$?%U%!%$%k$O$=$&$J$j$^$9!#e(B
e$B$7$+$7e(B Cygwin e$B$ONc$($Pe(B C:\cygwin
e$B$G@$3&$,JD$8$F$$$^$9$+$i!“e(B
e$B:F%;%C%H%”%C%W$b05E]E*$K4JC1$G$9!#e(B

e$B$J$K$7$me(B make install e$B$K$"$^$jm4m0$,L5$$;d$K$O!"e(B
e$B%Q%C%1!<%8%c$N%a%s%F%J$N5$;}$A$O2r$i$J$$$G$7$g$&$,!“e(B
e$BDx!9$GNI$$$N$K!&!&!&H]!”==J,$KNI$/5!G=$7$F$/$l$F$$$k!"e(B
e$B$H;W$$$^$9$1$l$I!#e(B
e$B$^$5$+e(B /
e$B0J2<$NA4MF$r4IM}$7?T$/$=$&$H$O9M$($F$$$J$$$G$7$g$&$1$l$I!#e(B

e$BFC$K:r:#$Ne(B Linux
e$B$O$I$l$b%$%s%9%H!<%k$,4JC1$G=jMW;~4V$bHf3SEC;$/!“e(B
e$B:$$C$?$i:F%;%C%H%”%C%W$rm4m0$&I,MW$bL5$$5$$,$7$^$9!#e(B
e$B5U$Ke(B Windows
e$B$O%$%s%9%H!<%k$bCY$$>e$K%U%!%$%k4IM}$b$h$/$o$+$i$:!“e(B
temp
e$B$H8@$$$D$DCf$N%U%!%$%k$r>C$9$H%”%s%$%s%9%H!<%i$,5/F0$G$-$J$/$J$C$?$j!#e(B
e$B!V;d$Ne(B PC e$B$G$=$3$^$G5v$7$?3P$($OL5$$!
!W$H8@$$$?$/$J$k!#e(B

e$B$9$_$^$;$sM>CL$,D9$/$J$j$^$7$?!#e(B