Commits

Shlomi Fish committed 67b89ea

Got rid of some broken links.

Comments (0)

Files changed (7)

 upload_beta: all
 	(cd dest && $(RSYNC) -a --inplace * perl-begin@hexten.net:htdocs/__Beta-Quop/)
 
+upload_local: all
+	(cd dest && $(RSYNC) -a --inplace * /var/www/html/shlomif/perl-begin/)
+
 test:
 	prove Tests/*.t
 
     open my $out_fh, ">", "p4n.mak";
 
     my @targets;
-    foreach my $part_idx (1 .. 4)
+    foreach my $part_idx (1 .. 5)
     {
          # find all the .pm files in @INC
          my @files =

src/topics/cpan/life-with-cpan/debug/index.html

+<?xml version="1.0" encoding='utf-8' ?>
+<!doctype
+    html public "-//w3c//dtd xhtml 1.1//en"
+    "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">
+<html xml:lang="en-US">
+<head>
+<title>NovoSial.org: Debugging Perl Distribution Build Problems</title>
+<meta name="keywords" content="sial.org, unix, openssl, ssh"/>
+<meta name="msvalidate.01" content="4D4AA5634CCCC8B90DD61AC8A12D742B" />
+<meta http-equiv="content-type" content="text/html; charset=utf-8"/><meta name="generator" content="XML::ApplyXSLT, libxml, and Perl"/>
+<link rel="stylesheet" type="text/css" href="../default.css"/><meta name="MSSmartTagsPreventParsing" content="TRUE"/>
+</head>
+<body>
+
+    <div class="header"><h1>Debugging Perl Distribution Build Problems</h1></div>
+
+    <div class='mainBody'>
+      <div class="subsection"><a href="#s2">Missing Libraries</a> | <a href="#s3">Verbose Testing</a> | <a href="#s4">Interactive Modules</a> | <a href="#s5">Bypass tests with <tt class="cmd">force install</tt></a> | <a href="#s6">Fixing Bugs</a></div><div class="bodymain"><p class="info">Perl distributions from the <a href="http://www.cpan.org/">Comprehensive Perl Archive Network (CPAN)</a> may fail to build for a variety of reasons. Inspect the output, and run the tests in verbose mode. The <a href="http://search.cpan.org/perldoc/CPAN" title="Documentation on the CPAN Perl module"><tt class="perl-module">CPAN</tt></a> module configuration or <a href="http://novosial.org/perl/life-with-cpan/ftp-problems/">network problems</a> may prevent modules from being downloaded. See <a href="../index.html">Life with CPAN for more information</a>.</p><p class="info">Compiling Perl modules requires <tt class="cmd">make</tt> and other development utilities. Ensure these are installed on the build system. Installation of these tools will vary by operating system, either requiring ports or packages to be installed (<tt class="cmd">apt-get install build-essential</tt> on Debian Linux), or a <a href="http://developer.apple.com/tools/xcode/">development kit</a> from the vendor.</p><p class="info">Knowledge of how to build and <a href="http://novosial.org/debug/unix/">debug software on Unix</a> is required. Consult the vendor supplied developer documentation, if any, along with the <tt class="file">README</tt> file provided with the module.</p><p class="info">If the install has previously failed, <a href="http://search.cpan.org/perldoc/CPAN" title="Documentation on the CPAN Perl module"><tt class="perl-module">CPAN</tt></a> may cache this result. In the <tt class="code">cpan</tt> shell, run <tt class="cmd">clean Module::Name</tt>, or otherwise cleanup the <tt class="file">~/.cpan/build</tt> directory to start over, especially if the build logs need to be saved with <a href="http://www.FreeBSD.org/cgi/man.cgi?query=script&sektion=1" title="FreeBSD man page search for script, section 1"><tt xmlns:xlink="http://www.w3.org/1999/xlink" class="man">script(1)</tt></a> or <a href="http://www.FreeBSD.org/cgi/man.cgi?query=tee&sektion=1" title="FreeBSD man page search for tee, section 1"><tt xmlns:xlink="http://www.w3.org/1999/xlink" class="man">tee(1)</tt></a> for easier inspection:</p><p class="data-shell">$ <kbd>rm -rf ~/.cpan/build</kbd><br/>$ <kbd>cpan XML::LibXSLT 2&gt;&amp;1 | tee build.log</kbd><br/>?</p><p class="info">If a bug is found, contact the module author with a patch or bug report. Include as much relevant detail as possible, such as the output from <tt class="cmd">perl -V</tt>, the operating system, and so forth.</p><h3><a name="s1.1">Getting Help</a></h3><p class="info">If the error message is beyond your abilities, <a href="http://perl.net.au/wiki/Freenode_Sharp_Perl_FAQ">request help</a> only with the appropriate build logs. The complete build logs from a clean build are required for others to help with the build problem. Use <a href="http://www.FreeBSD.org/cgi/man.cgi?query=script&sektion=1" title="FreeBSD man page search for script, section 1"><tt xmlns:xlink="http://www.w3.org/1999/xlink" class="man">script(1)</tt></a> to record the build session (or copy and paste the complete logs) and be sure to edit out any passwords or other site-specific details from the build log. However, include as much data as possible.</p><p class="info">To restart from scratch, remove the <a href="http://search.cpan.org/perldoc/CPAN" title="Documentation on the CPAN Perl module"><tt class="perl-module">CPAN</tt></a> <tt class="file">build</tt> directory. This will either be set in the user-specific <tt class="file">~/.cpan/CPAN/MyConfig.pm</tt> file, or the <tt class="file">CPAN/Config.pm</tt> file somewhere under <a href="http://search.cpan.org/perldoc/perlvar"><tt class="code">@INC</tt></a> for <tt class="code">root</tt>:</p><p class="data-shell">$ <kbd>grep build_dir ~/.cpan/CPAN/MyConfig.pm</kbd><br/>  'build_dir' =&gt; q[<em class="em">/home/user/.cpan/build</em>],<br/>$ <kbd>perl -MCPAN::Config -le 'print $INC{"CPAN/Config.pm"}' \<br/>  | xargs grep build_dir</kbd><br/>  'build_dir' =&gt; q[<em class="em">/var/root/.cpan/build</em>],</p><p class="info">Then rebuild the module, saving the complete build logs.</p><h2><a name="s2">Missing Libraries</a></h2><p class="info">Perl modules that rely on C libraries may issue misleading errors if the required library and header files are not installed, or if an incompatible version of the library is installed. ?Probably harmless? missing library warnings are usually not harmless at all, for example when installing <a href="http://search.cpan.org/perldoc/XML::LibXML::Common" title="Documentation on the XML::LibXML::Common Perl module"><tt class="perl-module">XML::LibXML::Common</tt></a>. For the missing <tt class="code">-lxml2</tt> warning to be satisfied, a file such as <tt class="file-glob">libxml2.*</tt> must first be installed on the system. Library files may use <tt class="file-glob">*.a</tt>, <tt class="file-glob">*.so</tt>, or <tt class="file-glob">*.dylib</tt> extensions, depending on the platform. Either build the source manually for <a href="http://xmlsoft.org/">Libxml2</a>, or install it from a vendor supplied port or package system.</p><p class="data">Note (probably harmless): No library found for -lxml2</p><p class="info">Another common error will be for missing header files (e.g. <tt class="file">expat.h</tt>) which again points to missing development libraries (e.g. <tt class="code">libexpat</tt>). Libraries installed to custom locations, such as under a special software ports tree, may require setting <tt class="code">LD_LIBRARY_PATH</tt> and other environment variables to properly locate the library and header files.</p><h2><a name="s3">Verbose Testing</a></h2><p class="info">Verbose testing may provide more detail on why a <tt class="cmd">make test</tt> run fails. This can be done with the <tt class="code">look</tt> command under the <a href="http://search.cpan.org/perldoc/CPAN" title="Documentation on the CPAN Perl module"><tt class="perl-module">CPAN</tt></a> shell plus the subsequent Unix shell commands shown below. Be sure to inspect the test scripts under the <tt class="file">t</tt> directory to compare the error message with the code that generated the message.</p><p class="data-shell">cpan&gt; <kbd>install HTML::Mason</kbd><br/>Running install for module HTML::Mason<br/>Running make for D/DR/DROLSKY/HTML-Mason-1.23.tar.gz<br/>?<br/>t/02a-filter..........ok                                                     <br/>t/04-misc.............FAILED tests 9-10                                      <br/>        Failed 2/11 tests, 81.82% okay<br/>t/05-request..........ok                                                     <br/>?<br/>Failed Test Stat Wstat Total Fail  Failed  List of Failed<br/>---------------------------------------------------------------------------<br/>t/04-misc.t               11    2  18.18%  9-10<br/>2 tests skipped.<br/>Failed 1/23 test scripts, 95.65% okay. 2/376 subtests failed, 99.47% okay.<br/>*** Error code 35<br/><br/>Stop in /var/spool/cpan/build/HTML-Mason-1.23.<br/>  /usr/bin/make test -- NOT OK<br/>Running make install<br/>  make test had returned bad status, won't install without force<br/><br/>cpan&gt; <br/>cpan&gt; <kbd>look HTML::Mason</kbd><br/>Running look for module HTML::Mason<br/><br/>Trying to open a subshell in the build directory...<br/>Working directory is /var/spool/cpan/build/HTML-Mason-1.23<br/># <kbd>make test TEST_VERBOSE=1 TEST_FILE=t/04-misc.t | tee test.log</kbd><br/>?</p><p class="info">Consider also installing <a href="http://search.cpan.org/perldoc/Test::Harness" title="Documentation on the Test::Harness Perl module"><tt class="perl-module">Test::Harness</tt></a>, as this includes the <tt class="cmd">prove</tt> command:</p><p class="data-shell">$ <kbd>make</kbd><br/>?<br/>$ <kbd>prove -b -v t/04-misc.t | tee test.log</kbd></p><h2><a name="s4">Interactive Modules</a></h2><p class="info">Poorly written modules may attempt to prompt the user for input during the build or testing process. This introduces a fragile captive user interface that may be difficult or impossible to automate. The <a href="http://search.cpan.org/perldoc/ExtUtils::MakeMaker" title="Documentation on the ExtUtils::MakeMaker Perl module"><tt class="perl-module">ExtUtils::MakeMaker</tt></a> supplied <tt class="code">prompt</tt> subroutine may be disabled by closing standard input, or setting the <tt class="code">PERL_MM_USE_DEFAULT=1</tt> environment variable. Then inspect the test scripts to see what environment variables they expect. For example, <a href="http://search.cpan.org/perldoc/WWW::Curl" title="Documentation on the WWW::Curl Perl module"><tt class="perl-module">WWW::Curl</tt></a> 3.02 will hang while building on <a href="http://www.apple.com/macosx/">Mac OS X</a> (as of version 10.4.9) unless the following environment variables are set:</p><p class="data-shell">$ <kbd>env PERL_MM_USE_DEFAULT=1 \<br/>   CURL_TEST_URL=http://example.org/ \<br/>   make test</kbd></p><h3><a name="s4.1">Process Tracing Method</a></h3><p class="info">The cause of the hang can be determined using a process tracing utility, such as <a href="http://www.FreeBSD.org/cgi/man.cgi?query=ktrace&sektion=1&manpath=darwin" title="FreeBSD man page search for ktrace, section 1 on darwin"><tt xmlns:xlink="http://www.w3.org/1999/xlink" class="man">ktrace(1)</tt></a>. <a href="http://novosial.org/debug/unix/">Unix Debugging Tips</a> contains more information on debugging systems with <tt class="cmd">ktrace</tt> or <tt class="cmd">strace</tt>.</p><p class="data-shell">$ <kbd>perl Makefile.PL</kbd><br/>Found curl.h in /usr/include/curl/curl.h<br/>Building curlopt-constants.c for your libcurl version<br/>Building Easy.pm constants for your libcurl version<br/>Checking if your kit is complete...<br/>Looks good<br/>Writing Makefile for WWW::Curl<br/>$ <kbd>make</kbd><br/>?<br/>$ <kbd>ktrace -di make test</kbd><br/>PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" <span class="rbr">?</span><br/>"test_harness(0, 'blib/lib', 'blib/arch')" t/*.t<br/>t/00constants.............ok<br/>t/01basic.................</p><p class="info">On Mac OS X, use the <a href="http://www.FreeBSD.org/cgi/man.cgi?query=kdump&sektion=1&manpath=darwin" title="FreeBSD man page search for kdump, section 1 on darwin"><tt xmlns:xlink="http://www.w3.org/1999/xlink" class="man">kdump(1)</tt></a> utility to inspect the <tt class="file">ktrace.out</tt> file for the hung process shown above:</p><p class="data-shell">$ <kbd>kdump -f ktrace.out | tail</kbd><br/>  1804 perl     RET   write 34/0x22<br/>  1800 perl     GIO   fd 15 read 34 bytes<br/>       "# Please enter an URL to fetch [] "<br/>  1800 perl     RET   read 34/0x22<br/>  1800 perl     CALL  read(0xf,0x185ce00,0x1000)<br/>  1804 perl     CALL  fstat(0,0xbfffc1a8)<br/>  1804 perl     RET   fstat 0<br/>  1804 perl     CALL  ioctl(0,0x4004667a ,0xbfffc128)<br/>  1804 perl     RET   ioctl 0<br/>  1804 perl     CALL  read(0,0x37000,0x20000)</p><p class="info">This indicates the script wants a URL, but for some reason the fragile prompt is broken. Inspecting the <tt class="file">t/01basic.t</tt> script reveals the <tt class="code">CURL_TEST_URL</tt> environment variable should be set.</p><h2><a name="s5">Bypass tests with <tt class="cmd">force install</tt></a></h2><p class="info">Errors during the <tt class="cmd">make test</tt> phase can be skipped using <tt class="cmd">force install</tt> under the CPAN shell. This should only be done if the module is being installed for testing, or if the tests are known to not work, and the module is therefore safe for production use. Note that <tt class="cmd">force install</tt> only forces the module, not any of the module dependencies. If the dependencies have any problems, investigate and fix those before attempting to install the module.</p><p class="data-shell">cpan&gt; <kbd>force install HTML::Mason</kbd></p><p class="info"><em class="em">If you <tt class="cmd">force install</tt> broken code to a production system, shame on you!</em> Development systems can suffer the dangers of random module installs. Test and production systems should instead use a local package or software depot that contains the tested, working version of the module. This localized software can then be reproduced as needed onto new production systems. Code from CPAN may not be reproducible, as the author could upload a new, incompatible module version, or delete the entire module without warning (though old versions of the module may be available on <a href="http://backpan.cpan.org/">backpan</a>).</p><p class="info">To avoid installing modules into system areas, consult <a href="../non-root/index.html">using CPAN with a non-root account</a>.</p><h2><a name="s6">Fixing Bugs</a></h2><p class="info">If possible, fix the bug. Test scripts could need tweaks, or support for an environment variable that toggles tests that could easily fail. Consider <a href="http://www.simplicidade.org/notes/archives/2009/03/easy_yak_shavin.html">git-cpan-init</a>, which offers a quick means to download CPAN modules into <tt class="cmd">git</tt> repositories, and equally easy means to submit tickets to <a href="https://rt.cpan.org/">CPAN RT</a>.</p></div>
+    </div>
+
+		<div class="footer"><a href="../"><img style="border: 0; float: right; margin-top: 1em; margin-right: 1em; margin-bottom: 5em" src="http://novosial.org/NovosialLogo.gif" width="64" height="64" alt="NovoSial Icon"/></a>
+<p>This document is released into the public domain. Version 1.3.</p></div>
+  </body>
+</html>

src/topics/cpan/life-with-cpan/index.html

 <?xml version="1.0" encoding='utf-8' ?>
-<!DOCTYPE
-    html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
-    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<!doctype
+    html public "-//w3c//dtd xhtml 1.1//en"
+    "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">
 <html xml:lang="en-US"><head>
 <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
         <title>Life with CPAN</title><link rel="stylesheet"

src/topics/cpan/life-with-cpan/macosx/index.html

+<?xml version="1.0" encoding='utf-8' ?>
+<!doctype
+    html public "-//w3c//dtd xhtml 1.1//en"
+    "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">
+<html xml:lang="en-US">
+<head>
+<title>NovoSial.org: CPAN on Mac OS X</title>
+<meta name="keywords" content="sial.org, unix, openssl, ssh"/>
+<meta name="msvalidate.01" content="4D4AA5634CCCC8B90DD61AC8A12D742B" />
+<meta http-equiv="content-type" content="text/html; charset=utf-8"/><meta name="generator" content="XML::ApplyXSLT, libxml, and Perl"/>
+<link rel="stylesheet" type="text/css" href="../default.css"/><meta name="MSSmartTagsPreventParsing" content="TRUE"/>
+
+
+</head>
+<body>
+
+    <div class="header"><h1>CPAN on Mac OS X</h1></div>
+
+    <div class='mainBody'>
+      <div class="subsection"><a href="#s2">Upgrade System Perl?</a> | <a href="#s3">Case Folding Filesystem</a> | <a href="#s4">Panther (10.3) and <tt class="file">/man</tt></a></div><div class="bodymain"><p class="info">The <a href="http://www.cpan.org/">Comprehensive Perl Archive Network (CPAN)</a> is a collection of <a href="http://www.perl.org/">Perl</a> modules and scripts distributed among a large number of mirror sites.  <a href="http://search.cpan.org/perldoc/CPAN" title="Documentation on the CPAN Perl module"><tt class="perl-module">CPAN</tt></a> is also the name of a <tt class="cmd">perl</tt> module which provides an interface to install modules from <acronym title="Comprehensive Perl Archive Network">CPAN</acronym>. These notes document problems with <a href="http://search.cpan.org/perldoc/CPAN" title="Documentation on the CPAN Perl module"><tt class="perl-module">CPAN</tt></a> on <a href="http://www.apple.com/macosx/">Mac OS X</a>. See also the main <a href="../index.html">Life with <acronym title="Comprehensive Perl Archive Network">CPAN</acronym></a> documentation.</p><p class="info">Xcode (via <a href="http://developer.apple.com/technologies/tools/">Developer Tools</a> must be installed (installing Xcode also installs the <a href="http://novosial.org/perl/perldoc/">Perl documentation</a> on Mac OS X). Another option is to run another Unix, such as <a href="http://www.debian.org/">Debian</a>, under a <a href="http://www.virtualbox.org/">virtual machine</a>, and install whatever modules are required for development into the sandbox system.</p><h2><a name="s2">Upgrade System Perl?</a></h2><p class="info">I advise against upgrading the system <tt class="cmd">perl</tt>, and against installing Perl modules into the system <tt class="code">@INC</tt> directories. If a different version of <tt class="cmd">perl</tt> is required, install it from <a href="http://www.macports.org/">MacPorts</a> (<a href="http://search.cpan.org/perldoc/App::perlbrew" title="Documentation on the App::perlbrew Perl module"><tt class="perl-module">App::perlbrew</tt></a> is another option, though does not support the installation of C libraries like MacPorts does). Changing the system <tt class="cmd">perl</tt> may break any scripts that rely on a particular version of software installed; Apple updates could also break the <tt class="cmd">perl</tt> or new modules improperly installed into the system area. Keep the vendor space separate from any local or site changes where possible. Administrative access is not necessary to install modules, as these can be <a href="../non-root/index.html">installed into local directories</a> via <a href="http://search.cpan.org/perldoc/local::lib" title="Documentation on the local::lib Perl module"><tt class="perl-module">local::lib</tt></a>. An administrator would need to install Xcode, if that is not available. <a href="http://novosial.org/perl/life-with-cpan/depot/">Perl Software Depots</a> goes into more detail on the management of software installs.</p><p class="info">As of Mac OS X 10.6, the OS ships with multiple versions of <tt class="cmd">perl</tt> installed. Peruse the <a href="http://www.FreeBSD.org/cgi/man.cgi?query=perl&sektion=1" title="FreeBSD man page search for perl, section 1"><tt xmlns:xlink="http://www.w3.org/1999/xlink" class="man">perl(1)</tt></a> manual page on Mac OS X for more details on how to switch between the two, if necessary.</p><p class="data-shell">$ <kbd>sw_vers</kbd><br/>ProductName:	Mac OS X<br/>ProductVersion:	10.6.3<br/>BuildVersion:	10D573<br/>$ <kbd>perl -e 'system "ls $_/perl5*" for split /:/, $ENV{PATH}' 2&gt;/dev/null</kbd><br/>/usr/bin/perl5.10.0	/usr/bin/perl5.8.9</p><p class="info">If a custom version of Perl is installed, either the <tt class="code">PATH</tt> environment variable must list that <tt class="cmd">perl</tt> first, or the shebang line must be updated to always use the custom <tt class="cmd">perl</tt>. I strongly advise against using symlinks to overwrite vendor versions of <tt class="cmd">perl</tt>, as this again could cause unexpected problems should Apple release a patch that changes something; also, <tt class="cmd">perl</tt> is just one of many commands associated with Perl, so a symlink of just <tt class="file">/opt/local/bin/perl</tt> to <tt class="file">/usr/bin/perl</tt> will still cause <tt class="file">/usr/bin/cpan</tt> to be used, resulting in modules installed for who knows what Perl.</p><p class="data-shell">$ <kbd>which perl</kbd><br/>/opt/local/bin/perl<br/>$ <kbd>type -a perl</kbd><br/>perl is /opt/local/bin/perl<br/>perl is /usr/bin/perl<br/>$ <kbd>head -1 ~/bin/xmltidy</kbd><br/>#!/opt/local/bin/perl</p><p class="info">Consult the documentation for the shell used on how to configure the <tt class="code">PATH</tt> environment variable. Note that the <tt class="code">PATH</tt> and other environment variables may need to be set in the <tt class="file">environment.plist</tt> file for non-terminal programs such as <tt class="gui">BBEdit</tt>.</p><h2><a name="s3">Case Folding Filesystem</a></h2><p class="info">The default filesystem on Mac OS X (HFS+) folds case, unlike traditional Unix filesystems. Unix software that assumes <tt class="file">HEAD</tt> and <tt class="file">head</tt> are two different things on Mac OS X will end badly. For example, the <a href="http://search.cpan.org/perldoc/LWP::UserAgent" title="Documentation on the LWP::UserAgent Perl module"><tt class="perl-module">LWP::UserAgent</tt></a> module installs <tt class="file">/usr/bin/HEAD</tt>, which clobbers the existing <tt class="file">/usr/bin/head</tt> utility.  Solutions to this include not installing the <tt class="cmd">HEAD</tt> and similar shortcuts, or ensuring these utilities are installed under <tt class="file">/usr/local/bin</tt> instead.  One way is to update the <tt class="code">perl Makefile.PL</tt> arguments to install third-party utilities into a different directory than <tt class="file">/usr/bin</tt>.</p><p class="data-shell">cpan&gt; <kbd>o conf makepl_arg "INSTALLBIN=/usr/local/bin INSTALLSCRIPT=/usr/local/bin"</kbd><br/>cpan&gt; <kbd>o conf commit</kbd></p><p class="info">Due to the rise in popularity of Mac OS X, most of these issues have been worked around in popular modules, such as <a href="http://search.cpan.org/perldoc/LWP::UserAgent" title="Documentation on the LWP::UserAgent Perl module"><tt class="perl-module">LWP::UserAgent</tt></a>. However, older, or less frequently used modules may still contain code that assumes filesystem case sensitivity.</p><h2><a name="s4">Panther (10.3) and <tt class="file">/man</tt></a></h2><p class="info">Perl 5.8.1 on Mac OS X 10.3 shipped with broken settings that cause some modules installed from <acronym title="Comprehensive Perl Archive Network">CPAN</acronym> to install their manuals under the <tt class="file">/man</tt> directory.  This directory pollutes the root namespace, and is outside the places manuals are searched for by <a href="http://www.FreeBSD.org/cgi/man.cgi?query=man&sektion=1" title="FreeBSD man page search for man, section 1"><tt xmlns:xlink="http://www.w3.org/1999/xlink" class="man">man(1)</tt></a>.</p><p class="info">To fix this problem, update the <tt class="code">makepl_arg</tt> to set <tt class="code">INSTALLSITEMAN1DIR</tt> and <tt class="code">INSTALLSITEMAN3DIR</tt> manually.</p><p class="data-shell">$ <kbd>grep makepl_arg /System/Library/Perl/5.8.1/CPAN/Config.pm</kbd><br/>  'makepl_arg' =&gt; q[INSTALLSITEMAN1DIR=/usr/share/man/man1 <span class="rbr">?</span><br/>INSTALLSITEMAN3DIR=/usr/share/man/man3],</p></div>
+    </div>
+
+		<div class="footer"><a href="../index.html"><img style="border: 0; float: right; margin-top: 1em; margin-right: 1em; margin-bottom: 5em" src="http://novosial.org/NovosialLogo.gif" width="64" height="64" alt="NovoSial Icon"/></a>
+<p>This document is released into the public domain. Version 1.3.</p></div>
+  </body>
+</html>

src/topics/cpan/life-with-cpan/non-root/index.html

 name="MSSmartTagsPreventParsing" content="TRUE" /></head><body>
 <div class="header"><div
 class="navlinks"><a
-href="/../">Parent
+href="../">Parent
 Page</a></div><h1 id="s">Using CPAN with a non-root
 account</h1></div><div class="subsection"><a
 href="#s2">Configuration</a>
  special applications that run as non-privileged accounts: simply adjust the
  installation paths to suit the software depot in question.</p><p
  class="info">Consult <a
- href="/../">Life
+ href="../">Life
  with CPAN</a> for more information about the <a
  href="http://www.cpan.org/">Comprehensive
  Perl Archive Network (CPAN)</a>. Consider also <a
  title="Documentation on the local::lib Perl module"><tt
  class="perl-module">local::lib</tt></a> to bootsrap custom Perl module
  installation directories.</p><h2 id="s2">Configuration</h2><ol
- class="enum"><li><p>Download the sample <a
- href="/../MyConfig.pm"><tt
- class="file">MyConfig.pm</tt></a>, and move it to <tt
+ class="enum"><li><p>Download the sample
+ <tt
+ class="file">MyConfig.pm</tt>, and move it to <tt
  class="file">~/.cpan/CPAN/MyConfig.pm</tt>.</p><p class="data-shell">$
  <kbd>mkdir -p ~/.cpan/CPAN</kbd><br />$ <kbd>mv MyConfig.pm
-     ~/.cpan/CPAN</kbd></p></li><li><p>Customize the <a
- href="/../MyConfig.pm"><tt
- class="file">MyConfig.pm</tt></a> file.<br />&nbsp;</p><ol class="enum">
+     ~/.cpan/CPAN</kbd></p></li><li><p>Customize the
+ <tt
+ class="file">MyConfig.pm</tt> file.<br />&nbsp;</p><ol class="enum">
  <li>Change all occurences of <tt class="code">HOMEDIRFIX</tt> to
  your home directory, for example <tt
  class="file">/home/username</tt>.<br />&nbsp;</li><li>Review the <tt
  title="Documentation on the CPAN Perl module"><tt
  class="perl-module">CPAN</tt></a> will attempt to remove “shadowing” versions
  of the module installed for the site <tt class="cmd">perl</tt>, leading to
- error messages involving <tt class="code">forceunlink</tt>.</p></li><li><p>Test <a
- href="/../MyConfig.pm"><tt
- class="file">MyConfig.pm</tt></a> for problems.</p><p class="data-shell">$
+ error messages involving <tt class="code">forceunlink</tt>.</p></li><li><p>Test <tt
+ class="file">MyConfig.pm</tt> for problems.</p><p class="data-shell">$
  <kbd>perl -c MyConfig.pm</kbd><br />MyConfig.pm syntax OK</p></li></ol></li><li>See below
  for the required <tt class="code">PERL5LIB</tt> settings to customize <tt
  class="code">@INC</tt>, if installing modules that depend on previously

src/topics/files-and-directories/index.html.wml

 <p>
 Perl has strong support for handling files and directories, which are the
 bread-and-butter of dealing with the disk and the filesystem. Many modules
-on <a href="$(ROOT)/cpan/">CPAN (= the Comprehensive Perl Archive Network)</a>
+on <a href="$(ROOT)/topics/cpan/">CPAN (= the Comprehensive Perl Archive Network)</a>
 aim to facilitate the task even further.
 </p>