title: Installing CGI, DBI and DBD::Oracle with Solaris 11 64-bit
body: <p>I tried to install <a href="http://p3rl.org/CGI" rel="nofollow">CGI</a>, <a href="http://p3rl.org/DBI" rel="nofollow">DBI</a> and <a href="http://p3rl.org/DBD%3a%3aOracle" rel="nofollow">DBD::Oracle</a> and drivers in a 64-bit Solaris environment, but to little avail. The number of errors I have encountered is mind-boggling and the number of workaround solutions I have tried - from changing environment variables, changing directory references, moving and copying files, changing compilers, etc. - is even worse. And the worst part is that there is very little documentation for installing said modules in the newest version of Solaris.</p>
  
  <p>Here are the initial steps we have been going through.</p>
  
  <ol>
  <li><p>First we go to <a href="http://search.cpan.org/" rel="nofollow">http://search.cpan.org/</a>. Then we download:</p>
  
  <ul>
  <li><a href="http://search.cpan.org/dist/CGI/" rel="nofollow">http://search.cpan.org/dist/CGI/</a></li>
  <li><a href="http://search.cpan.org/dist/DBI/" rel="nofollow">http://search.cpan.org/dist/DBI/</a></li>
  <li><a href="http://search.cpan.org/dist/DBD-Oracle/" rel="nofollow">http://search.cpan.org/dist/DBD-Oracle/</a></li>
  </ul></li>
  <li><p>Next we open up a terminal window, switch to root, then navigate to our "Downloads" folder.</p></li>
  <li><p>From here we decompress the previously downloaded files (no problems here):</p>
  
  <pre><code>gunzip -c CGI.pm-3.59.tar.gz |tar xvf -
  gunzip -c DBI-1.621.tar.gz |tar xvf -
  gunzip -c DBD-Oracle-1.44.tar.gz |tar xvf -
  </code></pre></li>
  <li><p>Then we archive the tar files in case we might need them later on.</p>
  
  <pre><code>mkdir archive_tar
  mv *.gz $HOME/Downloads/archive_tar
  </code></pre></li>
  <li><p>Here is where it gets slightly confusing, as we are not sure if these steps are completely necessary. Basically, we <em>believe</em> we need to set up the correct Perl (64-bit required for the newest Oracle, default Perl used is 32-bit).</p>
  
  <ol>
  <li>Type <code>which perl</code> in order to determine which current version of Perl you are using. It should indicate you are using the default version (or 32-bit).</li>
  <li>Verify that you have a 64-bit Perl installation available by doing the following: type <code>file /opt/oracle/rdbms/perl/bin/perl</code></li>
  <li>You should see <code>ELF 64-bit LSB executable AMD64 Version 1 [SSE2 SSE FXSR CMOV FPU], dynamically linked, not stripped&lt;</code>.</li>
  <li>Switch to using this version of Perl by adding it to the <code>PATH</code> variable: <code>export PATH=/opt/oracle/rdbms/perl/bin:$PATH</code></li>
  <li>Type <code>which perl</code>. Verify that this now shows the Perl located at <code>opt/oracle/rdbms/perl/bin/perl</code>.</li>
  <li><p>Type <code>perl -V</code>, if it shows errors, set the variables below:</p>
  
  <pre><code>export PERL5LIB=/opt/oracle/rdbms/perl/lib/5.10.0
  export PERLLIB=/opt/oracle/rdbms/perl/lib/5.10.0
  </code></pre></li>
  </ol></li>
  <li><p>Now we set up <code>cc</code> (the compiler) to work so that we can install CGI/DBI/DBD-Oracle.</p>
  
  <ol>
  <li>Type <code>cc --version</code> to verify that it says <code>cc</code> is not found.</li>
  <li>Open up a browser and navigate to <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.html" rel="nofollow">Solaris Studio</a>. Here you will find a package which contains Sun's compiler.</li>
  <li>Download "Tarfile on Solaris SPARC" for the Solaris 11 OS Platform.</li>
  <li>In your terminal window, decompress the above file by typing: <code>bzcat SolarisStudio12.3-solaris-sparc-bin.tar.bz2 | tar xf -</code></li>
  <li>Move the <code>.bz2</code> file to our previously created archive folder: <code>mv SolarisStudio12.3-solaris-sparc-bin.tar.bz2 $HOME/Downloads/archive_tar</code></li>
  <li>Now we want to add the new compiler to our path, we do this through: <code>export PATH=$PATH:/home/oracle/Downloads/SolarisStudio12.3-solaris-sparc-bin/solarisstudio12.3/bin</code></li>
  <li>Type <code>cc --version</code>, this command shouldn't do anything (possibly throw a few warnings), but it won't say <code>cc not found</code> anymore.</li>
  </ol></li>
  <li><p>Here we begin to install the modules and the driver, starting with the CGI module:</p>
  
  <ol>
  <li>Navigate to <code>$HOME/Downloads/CGI.pm-3.59</code></li>
  <li>Type <code>perl Makefile.PL</code></li>
  <li><p>We need to change the make file to point to the correct location.</p>
  
  <ol>
  <li>Type <code>vi Makefile</code></li>
  <li><code>:%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g</code></li>
  <li><code>:%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g</code></li>
  </ol></li>
  <li><p>Now type <code>make</code></p></li>
  <li>Then type <code>make install</code></li>
  <li>Next we move onto the DBI module. Navigate to <code>$HOME/Downloads/DBI-1.621</code>.</li>
  <li>Type <code>perl Makefile.PL</code></li>
  <li><p>Again, we need to change this make file to point to the correct location.</p>
  
  <ol>
  <li>Type <code>vi Makefile</code></li>
  <li><code>:%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g</code></li>
  <li><code>:%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g</code></li>
  </ol></li>
  <li><p>However, these change two lines that we don't want to change. So do a find for <code>MAKEMAKER</code> and <code>XSUBPPDIR</code> and set them back to the below values.</p>
  
  <pre><code>MAKEMAKER = /opt/oracle/rdbms/perl/lib/5.10.0/ExtUtils/MakeMaker.pm
  XSUBPPDIR = /opt/oracle/rdbms/perl/lib/5.10.0/ExtUtils
  </code></pre></li>
  <li><p>Now type <code>make</code></p></li>
  <li>Then type <code>make install</code></li>
  <li>Now navigate to <code>$HOME/Downloads/DBD-Oracle-1.44</code></li>
  <li>Type <code>perl Makefile.PL</code></li>
  </ol></li>
  </ol>
  
  <p>And that is basically where we get a fatal error at line 21, <code>use DBI 1.51;</code> in the Makefile, and tracing up the stack indicates that <code>@INC</code> cannot locate <code>DBI.pm</code>. That is why I tried to move the binary library file. I can't access the Solaris box at this moment so I can't re-post the exact error code, I should be able to include that probably Tuesday (the earliest I can get back to the machine). Does anyone have any ideas to this point though?</p>
  
  <h1>alternative route using CPAN shell</h1>
  
  <ol>
  <li><p>Open up a terminal window and install the following packages as the <code>root</code> user:</p>
  
  <pre><code>pkg install system/header
  pkg install gcc-45
  pkg install developer/build/gnu-make
  pkg install archiver/gnu-tar
  </code></pre></li>
  <li><p>Navigate to $oracle_home <code>cd $oracle_home</code> and:</p>
  
  <pre><code>mkdir /apps
  mkdir /apps/twiki-root
  mkdir /apps/twiki-root/perlmodules
  </code></pre></li>
  <li><p>Modify the <code>PERL5LIB</code> environment variable:</p>
  
  <ul>
  <li><code>export PERL5LIB=/apps/twiki-root/perlmodules</code></li>
  <li>Verify by typing: <code>echo $PERL5LIB</code></li>
  </ul></li>
  <li><p>Open up the CPAN shell and update it:</p>
  
  <pre><code>/usr/perl5/bin/perlgcc -MCPAN -e shell
  </code></pre>
  
  <p>If this is the first time, press <code>return</code> to accept auto-configuration.
  And now enter the following commands to modify the mirror location for CPAN:</p>
  
  <pre><code>o conf urllist shift
  o conf urllist
  o conf urllist unshift http://mirror.ox.ac.uk/sites/www.cpan.org/
  o conf urllist
  o conf commit
  install Bundle::CPAN
  reload cpan
  </code></pre></li>
  <li><p>Open up the <code>Config.pm</code> file and modify it as described below:</p>
  
  <pre><code>cd /usr/perl5/5.12/lib/CPAN/
  vi Config.pm
  </code></pre>
  
  <p>Modify these values:</p>
  
  <pre><code>'make' =&gt; q[/usr/sfw/bin/gmake],
  'make_install_make_command' =&gt; q[/usr/sfw/bin/gmake],
  'makepl_arg' =&gt; q[LIB=/apps/twiki-root/perlmodules PREFIX=/apps/twiki-root/perlmodules INSTALLMAN3DIR=/apps/twiki-root/perlmodules/man/man3],
  'mbuild_arg' =&gt; q[--install_base /apps/twiki-root/perlmodules],
  'mbuild_install_arg' =&gt; q[--install_base /apps/twiki-root/perlmodules],
  'mbuildpl_arg' =&gt; q[--install_base /apps/twiki-root/perlmodules],
  'prefs_dir' =&gt; q[~/.cpan/prefs],
  'tar' =&gt; q[/usr/sfw/bin/gtar],
  </code></pre>
  
  <p>Write/save to the file and quit → <code>:wq</code></p></li>
  <li><p>Make sure that your <code>gcc</code> is set:</p>
  
  <p>Verify by: <code>which gcc</code></p></li>
  <li><p>Now once again open up the CPAN shell and begin to install the DBI module.</p>
  
  <pre><code>/usr/perl5/bin/perlgcc -MCPAN -e shell
  install DBI
  </code></pre></li>
  </ol>
  
  <p>And this is where everything just goes to crap. Error:</p>
  
  <pre><code>Reading '/home/oracle/.cpan/Metadata'
  Database was generated on Sun, 03 Jun 2012 22:27:03 GMT
  Running install for module 'DBI'
  Running make for T/TI/TIMB/DBI-1.621.tar.gz
  Subroutine config redefined at /usr/perl5/5.12/lib/CPAN/LWP/UserAgent.pm line 12.
  Subroutine get_basic_credentials redefined at /usr/perl5/5.12/lib/CPAN/LWP/UserAgent.pm line 23.
  Subroutine no_proxy redefined at /usr/perl5/5.12/lib/CPAN/LWP/UserAgent.pm line 32.
  Subroutine mirror redefined at /usr/perl5/5.12/lib/CPAN/LWP/UserAgent.pm line 67.
  Fetching with HTTP::Tiny:
  http://mirror.ox.ac.uk/sites/www.cpan.org/authors/id/T/TI/TIMB/DBI-1.621.tar.gz
  Fetching with HTTP::Tiny:
  http://mirror.ox.ac.uk/sites/www.cpan.org/authors/id/T/TI/TIMB/CHECKSUMS
  Checksum for /home/oracle/.cpan/sources/authors/id/T/TI/TIMB/DBI-1.621.tar.gz ok
  Scanning cache /home/oracle/.cpan/build for sizes
  ............................................................................DONE
  
  CPAN.pm: Building T/TI/TIMB/DBI-1.621.tar.gz
  
  
  *** Your LANG environment variable is set to 'en_US.UTF-8'
  *** This may cause problems for some perl installations.
  *** If you get test failures, please try again with LANG unset.
  *** If that then works, please email dbi-dev@perl.org with details
  *** including the output of 'perl -V'
  
  Creating test wrappers for DBD::Gofer:
  t/zvg_01basics.t
  t/zvg_02dbidrv.t
  t/zvg_03handle.t
  t/zvg_04mods.t
  t/zvg_05concathash.t
  t/zvg_06attrs.t
  t/zvg_07kids.t
  t/zvg_08keeperr.t
  t/zvg_09trace.t
  t/zvg_10examp.t
  t/zvg_11fetch.t
  t/zvg_12quote.t
  t/zvg_13taint.t
  t/zvg_14utf8.t
  t/zvg_15array.t
  t/zvg_16destroy.t
  t/zvg_19fhtrace.t
  t/zvg_20meta.t
  t/zvg_30subclass.t
  t/zvg_31methcache.t
  t/zvg_35thrclone.t
  t/zvg_40profile.t
  t/zvg_41prof_dump.t
  t/zvg_42prof_data.t
  t/zvg_43prof_env.t
  t/zvg_48dbi_dbd_sqlengine.t
  t/zvg_49dbd_file.t
  t/zvg_50dbm_simple.t
  t/zvg_51dbm_file.t
  t/zvg_52dbm_complex.t
  t/zvg_60preparse.t
  t/zvg_65transact.t
  t/zvg_70callbacks.t
  t/zvg_72childhandles.t
  t/zvg_80proxy.t
  t/zvg_85gofer.t
  t/zvg_86gofer_fail.t
  t/zvg_87gofer_cache.t
  t/zvg_90sql_type_cast.t
  Creating test wrappers for DBI::SQL::Nano:
  t/zvn_48dbi_dbd_sqlengine.t
  t/zvn_49dbd_file.t
  t/zvn_50dbm_simple.t
  t/zvn_51dbm_file.t
  t/zvn_52dbm_complex.t
  t/zvn_85gofer.t
  Creating test wrappers for DBI::PurePerl:
  t/zvp_01basics.t
  t/zvp_02dbidrv.t
  t/zvp_03handle.t
  t/zvp_04mods.t
  t/zvp_05concathash.t
  t/zvp_06attrs.t
  t/zvp_07kids.t
  t/zvp_08keeperr.t
  t/zvp_09trace.t
  t/zvp_10examp.t
  t/zvp_11fetch.t
  t/zvp_12quote.t
  t/zvp_13taint.t
  t/zvp_14utf8.t
  t/zvp_15array.t
  t/zvp_16destroy.t
  t/zvp_19fhtrace.t
  t/zvp_20meta.t
  t/zvp_30subclass.t
  t/zvp_31methcache.t
  t/zvp_35thrclone.t
  t/zvp_40profile.t
  t/zvp_41prof_dump.t
  t/zvp_42prof_data.t
  t/zvp_43prof_env.t
  t/zvp_48dbi_dbd_sqlengine.t
  t/zvp_49dbd_file.t
  t/zvp_50dbm_simple.t
  t/zvp_51dbm_file.t
  t/zvp_52dbm_complex.t
  t/zvp_60preparse.t
  t/zvp_65transact.t
  t/zvp_70callbacks.t
  t/zvp_72childhandles.t
  t/zvp_80proxy.t
  t/zvp_85gofer.t
  t/zvp_86gofer_fail.t
  t/zvp_87gofer_cache.t
  t/zvp_90sql_type_cast.t
  Creating test wrappers for DBD::Gofer + DBI::SQL::Nano:
  t/zvxgn_48dbi_dbd_sqlengine.t
  t/zvxgn_49dbd_file.t
  t/zvxgn_50dbm_simple.t
  t/zvxgn_51dbm_file.t
  t/zvxgn_52dbm_complex.t
  t/zvxgn_85gofer.t
  Creating test wrappers for DBD::Gofer + DBI::PurePerl:
  t/zvxgp_01basics.t
  t/zvxgp_02dbidrv.t
  t/zvxgp_03handle.t
  t/zvxgp_04mods.t
  t/zvxgp_05concathash.t
  t/zvxgp_06attrs.t
  t/zvxgp_07kids.t
  t/zvxgp_08keeperr.t
  t/zvxgp_09trace.t
  t/zvxgp_10examp.t
  t/zvxgp_11fetch.t
  t/zvxgp_12quote.t
  t/zvxgp_13taint.t
  t/zvxgp_14utf8.t
  t/zvxgp_15array.t
  t/zvxgp_16destroy.t
  t/zvxgp_19fhtrace.t
  t/zvxgp_20meta.t
  t/zvxgp_30subclass.t
  t/zvxgp_31methcache.t
  t/zvxgp_35thrclone.t
  t/zvxgp_40profile.t
  t/zvxgp_41prof_dump.t
  t/zvxgp_42prof_data.t
  t/zvxgp_43prof_env.t
  t/zvxgp_48dbi_dbd_sqlengine.t
  t/zvxgp_49dbd_file.t
  t/zvxgp_50dbm_simple.t
  t/zvxgp_51dbm_file.t
  t/zvxgp_52dbm_complex.t
  t/zvxgp_60preparse.t
  t/zvxgp_65transact.t
  t/zvxgp_70callbacks.t
  t/zvxgp_72childhandles.t
  t/zvxgp_80proxy.t
  t/zvxgp_85gofer.t
  t/zvxgp_86gofer_fail.t
  t/zvxgp_87gofer_cache.t
  t/zvxgp_90sql_type_cast.t
  Creating test wrappers for DBI::SQL::Nano + DBI::PurePerl:
  t/zvxnp_48dbi_dbd_sqlengine.t
  t/zvxnp_49dbd_file.t
  t/zvxnp_50dbm_simple.t
  t/zvxnp_51dbm_file.t
  t/zvxnp_52dbm_complex.t
  t/zvxnp_85gofer.t
  Creating test wrappers for DBD::Gofer + DBI::SQL::Nano + DBI::PurePerl:
  t/zvxgnp_48dbi_dbd_sqlengine.t
  t/zvxgnp_49dbd_file.t
  t/zvxgnp_50dbm_simple.t
  t/zvxgnp_51dbm_file.t
  t/zvxgnp_52dbm_complex.t
  t/zvxgnp_85gofer.t
  Checking if your kit is complete...
  Looks good
  Have /usr/perl5/5.12/lib/Sun/Solaris/PerlGcc
  Want /usr/perl5/5.12/lib/i86pc-solaris-64int
  Your perl and your Config.pm seem to have different ideas about the
  architecture they are running on.
  Perl thinks: [PerlGcc]
  Config says: [i86pc-solaris-64int]
  This may or may not cause problems. Please check your installation of perl
  if you have problems building this extension.
  
      I see you're using perl 5.012003 on i86pc-solaris-64int, okay.
      Remember to actually *read* the README file!
      Use  'make' to build the software (dmake or nmake on Windows).
      Then 'make test' to execute self tests.
      Then 'make install' to install the DBI and then delete this working
      directory before unpacking and building any DBD::* drivers.
  
  Writing Makefile for DBI
  Writing MYMETA.yml and MYMETA.json
  /usr/perl5/5.12/bin/perl -MExtUtils::Command -e 'mkpath' -- blib/lib/DBI
  rm -f blib/lib/DBI/Changes.pm
  cp Changes blib/lib/DBI/Changes.pm
  cp Driver_xst.h blib/arch/auto/DBI/Driver_xst.h
  cp lib/DBI/Gofer/Response.pm blib/lib/DBI/Gofer/Response.pm
  cp lib/DBD/Proxy.pm blib/lib/DBD/Proxy.pm
  cp lib/DBI/Util/_accessor.pm blib/lib/DBI/Util/_accessor.pm
  cp lib/DBI/Gofer/Transport/Base.pm blib/lib/DBI/Gofer/Transport/Base.pm
  cp lib/DBD/DBM.pm blib/lib/DBD/DBM.pm
  cp DBIXS.h blib/arch/auto/DBI/DBIXS.h
  cp dbixs_rev.pl blib/lib/dbixs_rev.pl
  cp lib/DBI/Const/GetInfoType.pm blib/lib/DBI/Const/GetInfoType.pm
  cp lib/DBI/Gofer/Serializer/DataDumper.pm blib/lib/DBI/Gofer/Serializer/DataDumper.pm
  cp lib/DBI/DBD/Metadata.pm blib/lib/DBI/DBD/Metadata.pm
  cp lib/DBI/Const/GetInfo/ODBC.pm blib/lib/DBI/Const/GetInfo/ODBC.pm
  cp lib/DBD/Gofer/Transport/pipeone.pm blib/lib/DBD/Gofer/Transport/pipeone.pm
  cp lib/DBI/ProfileDumper/Apache.pm blib/lib/DBI/ProfileDumper/Apache.pm
  cp lib/DBD/File.pm blib/lib/DBD/File.pm
  cp Driver.xst blib/arch/auto/DBI/Driver.xst
  cp lib/DBD/File/Roadmap.pod blib/lib/DBD/File/Roadmap.pod
  cp lib/DBI/Util/CacheMemory.pm blib/lib/DBI/Util/CacheMemory.pm
  cp lib/DBI/ProfileSubs.pm blib/lib/DBI/ProfileSubs.pm
  cp lib/DBD/NullP.pm blib/lib/DBD/NullP.pm
  cp dbi_sql.h blib/arch/auto/DBI/dbi_sql.h
  cp lib/DBD/Gofer.pm blib/lib/DBD/Gofer.pm
  cp lib/DBD/File/HowTo.pod blib/lib/DBD/File/HowTo.pod
  cp dbd_xsh.h blib/arch/auto/DBI/dbd_xsh.h
  cp dbivport.h blib/arch/auto/DBI/dbivport.h
  cp lib/DBI/DBD/SqlEngine/HowTo.pod blib/lib/DBI/DBD/SqlEngine/HowTo.pod
  cp dbixs_rev.h blib/arch/auto/DBI/dbixs_rev.h
  cp lib/DBD/Gofer/Transport/corostream.pm blib/lib/DBD/Gofer/Transport/corostream.pm
  cp lib/DBD/Gofer/Transport/Base.pm blib/lib/DBD/Gofer/Transport/Base.pm
  cp lib/DBI/FAQ.pm blib/lib/DBI/FAQ.pm
  cp lib/DBD/Gofer/Policy/rush.pm blib/lib/DBD/Gofer/Policy/rush.pm
  cp lib/DBI/SQL/Nano.pm blib/lib/DBI/SQL/Nano.pm
  cp lib/DBI/Gofer/Request.pm blib/lib/DBI/Gofer/Request.pm
  cp lib/DBI/Const/GetInfo/ANSI.pm blib/lib/DBI/Const/GetInfo/ANSI.pm
  cp lib/DBD/Gofer/Transport/stream.pm blib/lib/DBD/Gofer/Transport/stream.pm
  cp lib/DBD/Gofer/Policy/classic.pm blib/lib/DBD/Gofer/Policy/classic.pm
  cp lib/DBI/Gofer/Transport/stream.pm blib/lib/DBI/Gofer/Transport/stream.pm
  cp lib/DBI/Const/GetInfoReturn.pm blib/lib/DBI/Const/GetInfoReturn.pm
  cp DBI.pm blib/lib/DBI.pm
  cp lib/DBI/Gofer/Serializer/Storable.pm blib/lib/DBI/Gofer/Serializer/Storable.pm
  cp lib/DBD/Gofer/Policy/Base.pm blib/lib/DBD/Gofer/Policy/Base.pm
  cp lib/DBD/Sponge.pm blib/lib/DBD/Sponge.pm
  cp lib/DBD/Gofer/Policy/pedantic.pm blib/lib/DBD/Gofer/Policy/pedantic.pm
  cp lib/DBI/Gofer/Transport/pipeone.pm blib/lib/DBI/Gofer/Transport/pipeone.pm
  cp lib/DBI/DBD/SqlEngine/Developers.pod blib/lib/DBI/DBD/SqlEngine/Developers.pod
  cp lib/DBI/W32ODBC.pm blib/lib/DBI/W32ODBC.pm
  cp lib/DBD/Gofer/Transport/null.pm blib/lib/DBD/Gofer/Transport/null.pm
  cp lib/Bundle/DBI.pm blib/lib/Bundle/DBI.pm
  cp lib/DBD/File/Developers.pod blib/lib/DBD/File/Developers.pod
  cp lib/DBI/Profile.pm blib/lib/DBI/Profile.pm
  cp lib/DBI/ProfileDumper.pm blib/lib/DBI/ProfileDumper.pm
  cp lib/DBI/Gofer/Serializer/Base.pm blib/lib/DBI/Gofer/Serializer/Base.pm
  cp lib/DBI/ProxyServer.pm blib/lib/DBI/ProxyServer.pm
  cp dbipport.h blib/arch/auto/DBI/dbipport.h
  cp lib/DBI/Gofer/Execute.pm blib/lib/DBI/Gofer/Execute.pm
  cp lib/DBI/DBD.pm blib/lib/DBI/DBD.pm
  cp lib/Win32/DBIODBC.pm blib/lib/Win32/DBIODBC.pm
  cp lib/DBI/DBD/SqlEngine.pm blib/lib/DBI/DBD/SqlEngine.pm
  cp lib/DBI/PurePerl.pm blib/lib/DBI/PurePerl.pm
  cp lib/DBD/ExampleP.pm blib/lib/DBD/ExampleP.pm
  cp lib/DBI/ProfileData.pm blib/lib/DBI/ProfileData.pm
  /usr/perl5/5.12/bin/perl -p -e "s/~DRIVER~/Perl/g" ./Driver.xst &gt; Perl.xsi
  /usr/perl5/5.12/bin/perl /usr/perl5/5.12/lib/ExtUtils/xsubpp  -typemap /usr/perl5/5.12/lib/ExtUtils/typemap -typemap typemap  Perl.xs &gt; Perl.xsc &amp;&amp; mv Perl.xsc Perl.c
  gcc -c   -DPTR_IS_LONG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -xO4   -DVERSION=\"1.621\" -DXS_VERSION=\"1.621\" -KPIC "-I/usr/perl5/5.12/lib/i86pc-solaris-64int/CORE"  -DDBI_NO_THREADS Perl.c
  gcc: unrecognized option '-KPIC'
  gcc: language O4 not recognized
  gcc: language O4 not recognized
  gcc: Perl.c: linker input file unused because linking not done
  /usr/perl5/5.12/bin/perl /usr/perl5/5.12/lib/ExtUtils/xsubpp  -typemap /usr/perl5/5.12/lib/ExtUtils/typemap -typemap typemap  DBI.xs &gt; DBI.xsc &amp;&amp; mv DBI.xsc DBI.c
  gcc -c   -DPTR_IS_LONG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -xO4   -DVERSION=\"1.621\" -DXS_VERSION=\"1.621\" -KPIC "-I/usr/perl5/5.12/lib/i86pc-solaris-64int/CORE"  -DDBI_NO_THREADS DBI.c
  gcc: unrecognized option '-KPIC'
  gcc: language O4 not recognized
  gcc: language O4 not recognized
  gcc: DBI.c: linker input file unused because linking not done
  Running Mkbootstrap for DBI ()
  chmod 644 DBI.bs
  rm -f blib/arch/auto/DBI/DBI.so
  cc  -G -L/usr/lib -L/usr/ccs/lib  -L/lib -L/usr/gnu/lib DBI.o  -o blib/arch/auto/DBI/DBI.so     \
              \
  
  gmake: cc: Command not found
  gmake: *** [blib/arch/auto/DBI/DBI.so] Error 127
  TIMB/DBI-1.621.tar.gz
  /usr/sfw/bin/gmake -- NOT OK
  Running make test
  Can't test without successful make
  Running make install
  Make had returned bad status, install seems impossible
  Failed during this command:
  TIMB/DBI-1.621.tar.gz                        : make NO
  </code></pre>
  
  <p>Sorry I took so long to edit this and put up the error, got a little busy along the way. Anyone have any ideas what this gigantic error means? I figure it's something related to the compiler, just not sure what.</p>
  
  <p><strong>NEW EDIT</strong></p>
  
  <p>So after I found the workaround, it went through the installation process (which took surprisingly long) and finally came out with this...</p>
  
  <pre><code>Test Summary Report
  -------------------
  ../cpan/CGI/t/tmpdir.t                                          (Wstat: 0 Tests: 9 Failed: 0)
    TODO passed:   3, 6, 8
  ../cpan/Socket/t/getnameinfo.t                                  (Wstat: 256 Tests: 14 Failed: 1)
    Failed test:  10
    Non-zero exit status: 1
  Files=2334, Tests=522101, 1212 wallclock secs (90.50 usr 58.34 sys + 533.70 cusr 288.26 csys = 970.80 CPU)
  Result: FAIL
  *** Error code 1
  make: Fatal error: Command failed for target `test_harness'
  Installed /home/oracle/perl5/perlbrew/build/perl-5.16.0 as perl-5.16.0 successfully. Run the following command to switch to it.
  
    perlbrew switch perl-5.16.0
  </code></pre>
  
  <p>Just based on that, I went ahead and did <code>/home/oracle/perl5/perlbrew/bin/perlbrew switch perl-5.16.0</code> but it returned, <code>perl-5.16.0 is not installed</code></p>
  
  <p><br> :/</p>
  
  <p>I just went ahead and tried to look for an instance of perl-5.16.0 and did...</p>
  
  <pre><code>root@dr-solaris11:~/perl5/perlbrew/build# cd /home/oracle/perl5/perlbrew/build/perl-5.16.0
  root@dr-solaris11:~/perl5/perlbrew/build/perl-5.16.0# ls
  Artistic                 MANIFEST                 README.cn
  AUTHORS                  mathoms.c                README.cygwin
  autodoc.pl               mathoms.o                README.dgux
  av.c                     META.yml                 README.dos
  av.h                     metaconfig.h             README.epoc
  av.o                     metaconfig.SH            README.freebsd
  beos                     mg_data.h                README.haiku
  bitcount.h               mg_names.c               README.hpux
  cflags                   mg_raw.h                 README.hurd
  cflags.SH                mg_vtable.h              README.irix
  Changes                  mg.c                     README.jp
  charclass_invlists.h     mg.h                     README.ko
  config_h.SH              mg.o                     README.linux
  config.h                 minimod.pl               README.macos
  config.over              miniperl                 README.macosx
  config.sh                miniperlmain.c           README.micro
  configpm                 miniperlmain.o           README.mpeix
  Configure                mkppport                 README.netware
  configure.com            mkppport.lst             README.openbsd
  configure.gnu            mpeix                    README.os2
  cop.h                    mro.c                    README.os390
  Copying                  mro.o                    README.os400
  cpan                     myconfig                 README.plan9
  Cross                    myconfig.SH              README.qnx
  cv.h                     mydtrace.h               README.riscos
  cygwin                   NetWare                  README.solaris
  deb.c                    nostdio.h                README.symbian
  deb.o                    numeric.c                README.tru64
  dist                     numeric.o                README.tw
  djgpp                    op_reg_common.h          README.uts
  doio.c                   op.c                     README.vmesa
  doio.o                   op.h                     README.vms
  doop.c                   op.o                     README.vos
  doop.o                   opcode.h                 README.win32
  dosish.h                 opmini.c                 realclean.sh
  dquote_static.c          opmini.o                 reentr.c
  dump.c                   opnames.h                reentr.h
  dump.o                   os2                      reentr.o
  DynaLoader.o             overload.c               regcharclass.h
  embed.fnc                overload.h               regcomp.c
  embed.h                  pad.c                    regcomp.h
  embedvar.h               pad.h                    regcomp.o
  epoc                     pad.o                    regcomp.sym
  ext                      parser.h                 regen
  ext.libs                 patchlevel.h             regen_perly.pl
  EXTERN.h                 perl                     regen.pl
  extra.pods               perl.c                   regexec.c
  fakesdio.h               perl.h                   regexec.o
  fakethr.h                perl.o                   regexp.h
  feature.h                perlapi.c                regnodes.h
  form.h                   perlapi.h                run.c
  generate_uudmap          perlapi.o                run.o
  generate_uudmap.c        perldtrace.d             runtests
  generate_uudmap.o        perlio.c                 runtests.SH
  genpacksizetables.pl     perlio.h                 scope.c
  git_version.h            perlio.o                 scope.h
  globals.c                perlio.sym               scope.o
  globals.o                perliol.h                sv.c
  globvar.sym              perlmain.c               sv.h
  gv.c                     perlmain.o               sv.o
  gv.h                     perlmini.c               symbian
  gv.o                     perlmini.o               t
  h2pl                     perlsdio.h               taint.c
  haiku                    perlsfio.h               taint.o
  handy.h                  perlsh                   TestInit.pm
  hints                    perlvars.h               thread.h
  hv.c                     perly.act                time64_config.h
  hv.h                     perly.c                  time64.c
  hv.o                     perly.h                  time64.h
  INSTALL                  perly.o                  toke.c
  install_lib.pl           perly.tab                toke.o
  installhtml              perly.y                  uconfig.h
  installman               plan9                    uconfig.sh
  installperl              pod                      uconfig64.sh
  INTERN.h                 Policy_sh.SH             universal.c
  intrpvar.h               Policy.sh                universal.o
  iperlsys.h               Porting                  unixish.h
  keywords.c               pp_ctl.c                 utf8.c
  keywords.h               pp_ctl.o                 utf8.h
  keywords.o               pp_hot.c                 utf8.o
  l1_char_class_tab.h      pp_hot.o                 utfebcdic.h
  lib                      pp_pack.c                util.c
  libperl.a                pp_pack.o                util.h
  locale.c                 pp_proto.h               util.o
  locale.o                 pp_sort.c                utils
  mad                      pp_sort.o                utils.lst
  madly.c                  pp_sys.c                 uts
  make_ext.pl              pp_sys.o                 uudmap.h
  make_patchnum.pl         pp.c                     veryclean.sh
  makedef.pl               pp.h                     vmesa
  makedepend               pp.o                     vms
  makedepend.SH            proto.h                  vos
  makefile                 qnx                      warnings.h
  Makefile                 README                   win32
  Makefile.micro           README.aix               write_buildcustomize.pl
  makefile.old             README.amiga             x2p
  Makefile.SH              README.beos              XSUB.h
  malloc_ctl.h             README.bs2000
  malloc.c                 README.ce
  </code></pre>
  
  <p>Then I tried, <code>/home/oracle/perl5/perlbrew/bin/perlbrew switch /home/oracle/perl5/perlbrew/build/perl-5.16.0</code> and I still got: <code>/home/oracle/perl5/perlbrew/build/perl-5.16.0 is not installed</code></p>
  
  <p>:/</p>