Hi,
I have been trying to install biomart to run martview and martservice, using an external biomart as the data source. The purpose is to test out customising the biomart web interface. I hit two problems as described below. I'll try to give full details of what I did.
uname -a gives Linux <hostname> 2.6.9-023stab046.2-enterprise #1 SMP Mon Dec 10 15:22:33 MSK 2007 i686 i686 i386 GNU/Linux.
perl -v gives This is perl, v5.8.8 built for i386-linux-thread-multi
I loaded the latest versions of the perl modules required by biomart from CPAN.

After installing biomart-perl, I changed conf/settings.conf to:
[httpdSettings]
apacheBinary=/usr/sbin/httpd
serverHost=localHost
port=80
# to use proxying set the proxy port below (even if its 80) and set serverHost as your proxy host
proxy=
location=biomart
I also changed !#perl -w to !#/usr/bin/perl -w in any scripts that I found the former.

I ran perl bin/configure.pl -r conf/registryDBPointer.xml, using the central registry xml file as installed, and it seemed to be successful, ending with "Building templates for visible datasets..."

Problem 1: Apache (Apache/2.2.2) does not like the generated htttp.conf -
httpd reports:
Syntax error on line 14 of /home/biomart/biomart-perl/conf/httpd.conf:
Invalid command 'DirectoryIndex', perhaps misspelled or defined by a module not included in the server configuration

The httpd.conf generated looks OK - it starts:

        PidFile logs/httpd.pid
        Timeout 300
        KeepAlive On
        MaxKeepAliveRequests 100
        KeepAliveTimeout 15
        MinSpareServers 2
        MaxSpareServers 2
        StartServers 2
        MaxClients 50
        MaxRequestsPerChild 0
        Listen 80

        DirectoryIndex index.html

Anyway, I took the lines from the generated httpd.conf and amalgamated them into the previous (working) httpd.conf. Now the server starts up and I can see, for example, http://<my server>/index.html as the introductory biomart page.
I also added a small perl test script in cgi-bin, and this ran OK from my browser.
(In my opinion this method of giving a completely new httpd.conf is anyway not very convenient if someone wants to run other services than martview on their server).

Problem 2
: When I loaded the page http://<my server>/biomart/martview from a browser, I got
ERROR: caught BioMart::Exception: non-BioMart die(): Can't call method "settingsParams" on an undefined value at /home/biomart/biomart-perl/lib/BioMart/Web.pm line 118.

line 118:    my $mart_registry = $self->get_mart_registry();
and get_mart_registry:     return $self->get('mart_registry');
and 'mart_registry' doesn't seem to be in the hash, so we get null.
This seems to be caused by Web.pm looking for conf/registryDBPointer.xml.cached, which does not exist. Web.pm doesn't seem to handle properly the case that the file doesn't exist, only the case that it fails to deserialise correctly.
(By the way, in cgi-bin/martview, I have $CONF_FILE = '/home/biomart/biomart-perl/conf/registryDBPointer.xml';)

Should this .cached file exist in the conf directory?

Just to move things forward, I tried copying
registryDBPointer.xml.cached from conf/cachedRegistries/ (where there was such a file) to conf/. Now http://<my server>/biomart/martview gives a page that looks like it's trying to be martview! But just some plain text, like "New Count Results". Looking at the page source I can see why: I have things like
<link rel="stylesheet" type="text/css" href="//mview/martview.css" />
<script src="//mview/js/martview.js"  type="text/_javascript_" ></script>

where the 'location', biomart, is missing from between the double forward slashes. Looks like the TAG_path tag did not get filled in the Template main.tt for some reason.

Your help would be appreciated,
Roger.

Reply via email to