spencer205 has asked for the wisdom of the Perl Monks concerning the following question:

Good Afternoon All,

I am hosting my Web site with Yahoo! small business services. I need to get a few Perl modules installed that use compiled C code. I don't have shell access, however, so I'm having a real hard time. I tried the suggestion at 1. The problem is that Yahoo! has done things to cripple Perl-based CGI scripts, preventing that tact from working.

Since that didn't work, I tried to figure out what OS and hardware architecture the Web server is running with the hopes that I could find a pre-compiled binary version of the Perl modules I need. To this end, I ran this script on the server:

#!/usr/bin/perl -w use POSIX "uname"; use strict; my ($sysname, $nodename, $release, $version, $machine ) = uname; print "Content-type: text/plain\n\n"; print "System = $sysname\n"; print "Hostname = $nodename\n"; print "OS Release = $release\n"; print "OS Version = $version\n"; print "Machine Type = $machine\n";

(Using `uname -a` didn't work for similar reasons as above.) This produced the following output:

System = FreeBSD Hostname = travisspencer.com OS Release = 4.11-YAHOO-20061130 OS Version = FreeBSD 4.11-YAHOO-20061130 #0: Machine Type = i386

From this, I figured that Yahoo! was running FreeBSD 4.11 on an i386 machine. So, I went to http://ftp2.tsinghua.edu.cn/pub/mirror/FreeBSD/ports/i386/packages-4.11-release/Latest/ and downloaded the necessary modules. I unpacked and uploaded the contents, but when I tried to import the module, I got this error:

Can't load '/blog-mt/extlib/auto/Digest/SHA1/SHA1.so' for module Digest::SHA1: Cannot execute objects on /p12/m/b28 at /foo/test.cgi line 5 Compilation failed in require at /foo/test.cgi line 5.

So, the dynamically loaded library can't be imported it seems but the Perl module I uploaded is found in my search path.

Any ideas on how I might get this working?

--

Regards,

Travis Spencer

1 http://www.perlmonks.org/?node_id=422458

Replies are listed 'Best First'.
Re: Installing arch-specific PM without shell access
by almut (Canon) on May 23, 2008 at 23:32 UTC
    Cannot execute objects on /p12/m/b28

    I'm afraid you're out of luck... A bit of googling (for the above message) suggests that FreeBSD's runtime loader (rtld.c) checks if a filesystem is mounted MNT_NOEXEC, in which case it refuses to load any library.  Yahoo presumably has set that flag on the filesystem that you're allowed to write to (for security reasons...).

      That is a real bummer! Thanks for the info and time.
Re: Installing arch-specific PM without shell access
by pc88mxer (Vicar) on May 24, 2008 at 00:26 UTC
      Given what almut said, I don't see any other choice. Thanks for pointing this out, pc88mxer.