<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Elliot Loves Perl &#187; upgrading</title>
	<atom:link href="http://elliotlovesperl.com/tag/upgrading/feed/" rel="self" type="application/rss+xml" />
	<link>http://elliotlovesperl.com</link>
	<description>A boy and his language</description>
	<lastBuildDate>Wed, 17 Feb 2010 12:43:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='elliotlovesperl.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/7899c71f1e2dd5c5fa1b1ec047ffdf34?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>Elliot Loves Perl &#187; upgrading</title>
		<link>http://elliotlovesperl.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://elliotlovesperl.com/osd.xml" title="Elliot Loves Perl" />
	<atom:link rel='hub' href='http://elliotlovesperl.com/?pushpress=hub'/>
		<item>
		<title>One thing I&#8217;ve never understood about the perl core: binary compatibility.</title>
		<link>http://elliotlovesperl.com/2009/07/01/one-thing-ive-never-understood-about-the-perl-core-binary-compatibility/</link>
		<comments>http://elliotlovesperl.com/2009/07/01/one-thing-ive-never-understood-about-the-perl-core-binary-compatibility/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 02:12:24 +0000</pubDate>
		<dc:creator>elliotlovesperl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[upgrading]]></category>

		<guid isPermaLink="false">http://elliotlovesperl.wordpress.com/?p=134</guid>
		<description><![CDATA[So, I was reading chromatic&#8217;s latest, wherein he links to a p5p post which mentions the whole bit about @INC including multiple point releases in it, which makes having them around expensive. In case you didn&#8217;t know it, you can install perl point releases in the same directory and the default @INC will include all [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elliotlovesperl.com&amp;blog=7775865&amp;post=134&amp;subd=elliotlovesperl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So, I was reading <a href="http://www.modernperlbooks.com/mt/2009/07/fearpm.html">chromatic&#8217;s latest</a>, wherein he links to a <a href="http://groups.google.com/group/perl.perl5.porters/msg/e234c986c6d04661">p5p post</a> which mentions the whole bit about <code>@INC</code> including multiple point releases in it, which makes having them around expensive.  In case you didn&#8217;t know it, you can install perl point releases in the same directory and the default <code>@INC</code> will include all the releases in descending order, meaning that you can use binary modules from prior point releases without recompiling them.</p>
<p>But why?</p>
<p>If you&#8217;re going to go to the trouble of compiling a new perl executable, how much more effort is it to recompile everything else in your install?  If you&#8217;re using continuous integration, don&#8217;t merely use it on your code, use it on the CPAN modules you use as well.</p>
<p>The whole idea of mixing point releases seems like it&#8217;s a nightmare waiting to happen.</p>
<p>Actually, why are you upgrading an existing perl installation at all?  What if there&#8217;s some code that can&#8217;t deal even with a point release upgrade?  You shouldn&#8217;t force that upgrade on others in your organization.  Put the point release into a different directory and lock it down.  Don&#8217;t use <code>site_perl</code>; install all of your modules into some private area and use <code>PERL5LIB</code>.  (Learn to use <code>INSTALL_BASE</code> with <code>ExtUtils::MakeMaker</code> and <code>install_base</code> with <code>Module::Build</code>.)</p>
<br /> Tagged: maintenance, upgrading <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elliotlovesperl.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elliotlovesperl.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elliotlovesperl.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elliotlovesperl.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elliotlovesperl.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elliotlovesperl.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elliotlovesperl.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elliotlovesperl.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elliotlovesperl.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elliotlovesperl.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elliotlovesperl.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elliotlovesperl.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elliotlovesperl.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elliotlovesperl.wordpress.com/134/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elliotlovesperl.com&amp;blog=7775865&amp;post=134&amp;subd=elliotlovesperl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elliotlovesperl.com/2009/07/01/one-thing-ive-never-understood-about-the-perl-core-binary-compatibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e2e2e6430cc24b91f3c25f25fba6d9e6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elliotlovesperl</media:title>
		</media:content>
	</item>
		<item>
		<title>Dealing with perl binary compatibility issues as a user of XS modules.</title>
		<link>http://elliotlovesperl.com/2009/05/25/dealing-with-perl-binary-compatibility-issues-as-a-user-of-xs-modules/</link>
		<comments>http://elliotlovesperl.com/2009/05/25/dealing-with-perl-binary-compatibility-issues-as-a-user-of-xs-modules/#comments</comments>
		<pubDate>Mon, 25 May 2009 22:46:37 +0000</pubDate>
		<dc:creator>elliotlovesperl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[modern perl]]></category>
		<category><![CDATA[upgrading]]></category>
		<category><![CDATA[xs]]></category>

		<guid isPermaLink="false">http://elliotlovesperl.wordpress.com/?p=100</guid>
		<description><![CDATA[chromatic discusses binary compatibility with the perl executable. I&#8217;m someone who only uses XS modules and hopes to never have to write one. Yet, unlike what seems to be the prevailing fear, I don&#8217;t worry about binary compatibility. I don&#8217;t worry about upgrades breaking things. I don&#8217;t worry that I&#8217;m going to have mismatches in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elliotlovesperl.com&amp;blog=7775865&amp;post=100&amp;subd=elliotlovesperl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>chromatic <a href="http://www.modernperlbooks.com/mt/2009/05/perl-5-and-binary-compatibility.html">discusses binary compatibility with the perl executable</a>.  I&#8217;m someone who only uses XS modules and hopes to never have to write one.  Yet, unlike what seems to be the prevailing fear, I don&#8217;t worry about binary compatibility.  I don&#8217;t worry about upgrades breaking things.  I don&#8217;t worry that I&#8217;m going to have mismatches in executables/libraries.</p>
<p>Why?  <a href="http://en.wikipedia.org/wiki/Continuous_integration">Continuous integration</a>.</p>
<p>Don&#8217;t just grab modules from the CPAN and install them somewhere never to be upgraded until you&#8217;re forced to at a huge amount of time and expense.  Regularly rebuild everything you use, preferably daily or hourly.</p>
<ol>
<li>Install a perl binary and then lock it down.  Don&#8217;t use site dirs.  Have the perl core be inviolate.</li>
<li>Instead, install to some other directory and point <code>PERL5LIB</code> at it.  Both CPAN and CPANPLUS allow you to configure what you want to be passed to the configuration program.  Pass a value for <code>INSTALL_BASE</code> to <code>Makefile.PL</code> and <code>install_base</code> to <code>Build.PL</code> that points to your directory.</li>
<li>Set up a build server to use CPAN or CPANPLUS to &#8220;install&#8221; and build everything.  Since your build machine will be rebuilding everything regularly, when you upgrade your perl binary or an XS module, any problems will be quickly identified.  Everything being rebuilt in one go means that all binary code will match up and you don&#8217;t have to worry about them getting out of sync.  Because installing a distribution causes all of that distribution&#8217;s tests to be run, you&#8217;ll know that that distribution works in <em>your environment</em>.</li>
</ol>
<p>(If you&#8217;re using taint mode and thus cannot use <code>PERL5LIB</code>, have your build machine build a custom perl executable along with everything else.)</p>
<p>Details for doing this belong in another post.  But the point is, if you regularly rebuild all of the CPAN code you use, you don&#8217;t need to worry about binary issues.</p>
<br /> Tagged: administration, continuous integration, modern perl, upgrading, xs <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elliotlovesperl.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elliotlovesperl.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elliotlovesperl.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elliotlovesperl.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elliotlovesperl.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elliotlovesperl.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elliotlovesperl.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elliotlovesperl.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elliotlovesperl.com&amp;blog=7775865&amp;post=100&amp;subd=elliotlovesperl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elliotlovesperl.com/2009/05/25/dealing-with-perl-binary-compatibility-issues-as-a-user-of-xs-modules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e2e2e6430cc24b91f3c25f25fba6d9e6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elliotlovesperl</media:title>
		</media:content>
	</item>
		<item>
		<title>Managing perl</title>
		<link>http://elliotlovesperl.com/2008/09/11/managing-perl/</link>
		<comments>http://elliotlovesperl.com/2008/09/11/managing-perl/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 17:22:15 +0000</pubDate>
		<dc:creator>elliotlovesperl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[Strawberry Perl]]></category>
		<category><![CDATA[upgrading]]></category>

		<guid isPermaLink="false">http://elliotlovesperl.com/?p=59</guid>
		<description><![CDATA[(The lowercase &#8220;p&#8221; perl is what I mean in the title.) There&#8217;s a great new page on the Perl 5 wiki about administering your perl installation. It includes quite a number of things I believe in. Some of the more significant bits: First and foremost thing I can say is if you depend heavily on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elliotlovesperl.com&amp;blog=7775865&amp;post=59&amp;subd=elliotlovesperl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>(The <a href="http://www.perlfoundation.org/perl5/index.cgi?perl_vs_perl">lowercase &#8220;p&#8221; perl</a> is what I mean in the title.)</p>
<p>There&#8217;s a <a href="http://www.perlfoundation.org/perl5/index.cgi?perl_best_admin_practices">great new page</a> on the Perl 5 wiki about administering your perl installation. It includes quite a number of things I believe in. Some of the more significant bits:</p>
<blockquote><p>
First and foremost thing I can say is if you depend heavily on Perl (or any single piece of technology) build it yourself. This will allow you finer control and faster upgrades than your OS vendor can. Windows is the exception, <a href="http://www.perlfoundation.org/perl5/index.cgi?strawberry_perl">Strawberry Perl</a> does a much better job packaging Perl and tweaking it for Windows than you can (and if you think you can better, please contribute to Strawberry).
</p></blockquote>
<p>This is <a href="http://blog.vipul.net/2008/08/24/redhat-perl-what-a-tragedy/">especially true</a> on Red Hat. Ignoring general management issues, you really ought to have a threaded and a non-threaded perl so that single-threaded code doesn&#8217;t pay the overhead for threads.</p>
<blockquote><p>
Fourth, <strong>keep up to date</strong>. This means keeping CPAN modules and perl itself at or near the latest versions. This will incur the occasional breakage as you encounter either intermittent bugs in new versions of CPAN modules, or API changes, or project code that accidentally depends on certain versions of CPAN modules. But it&#8217;s worth it, because the farther you fall behind the harder it becomes to catch up. As your perl gets older and older, fewer and fewer CPAN modules will work requiring more and more patching to get them working. As your CPAN modules get older, it will require a greater leap to bring them up to date, and more upgrades simultaneously. The sudden upgrade will cause many bugs to happen simultaneously making them take far more time and effort to track down then if they could be dealt with individually. Large upgrades require large effort, time and risks. Small upgrades require small effort, time and risks. The looming risk of a large upgrade will make developers settle for an older, buggier, less capable version and write a work around rather than risk the upgrade. This creates a hidden drag on your project and creates more and more complex code to maintain.
</p></blockquote>
<p>Another point: when you discover a bug in a CPAN module, there may be a fix for it, but if you&#8217;re very out of date with it, it may cause significant problems with other modules, making your upgrade of that one module really painful.</p>
<p>At Barclay&#8217;s, it took me 7 months to upgrade them from perl 5.6 to 5.8 and the latest version of other modules. Way too long.</p>
<p>If you&#8217;ve got good test coverage, you should be able to easily find any problems with upgrades.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/elliotlovesperl.wordpress.com/59/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/elliotlovesperl.wordpress.com/59/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/elliotlovesperl.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/elliotlovesperl.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/elliotlovesperl.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/elliotlovesperl.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/elliotlovesperl.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/elliotlovesperl.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/elliotlovesperl.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/elliotlovesperl.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/elliotlovesperl.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/elliotlovesperl.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/elliotlovesperl.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/elliotlovesperl.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/elliotlovesperl.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/elliotlovesperl.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=elliotlovesperl.com&amp;blog=7775865&amp;post=59&amp;subd=elliotlovesperl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://elliotlovesperl.com/2008/09/11/managing-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e2e2e6430cc24b91f3c25f25fba6d9e6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elliotlovesperl</media:title>
		</media:content>
	</item>
	</channel>
</rss>