hi all,

   I follow the installation instructions but fail to enable lxr successfully.

   system: debian sarge, apach2, swish-e, lxr-cvs(0.9.2), perl-5.8.7, mod-perl/2.0.1

   if i access my host via http://218.194.50.253/lxr , i will see the index of /lxr. then i click file link source, an "Internal Server Error" ocurred,   the error info:
"
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


Apache/2.0.54 (Debian GNU/Linux) PHP/4.3.10-16 mod_perl/2.0.1 Perl/v5.8.7 Server at 127.0.0.1 Port 80 "
 

I check the /var/log/apache2/error.log, i found :
[Wed Dec 07 14:06:02 2005] [error] [client 127.0.0.1] failed to resolve handler `Apache::Registry': Can't locate loadable object for module Apache::Constants in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.7 /usr/local/share/perl/5.8.7 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl . /etc/apache2) at /usr/lib/perl5/mod_perl.pm line 14\nCompilation failed in require at /usr/lib/perl5/Apache.pm line 6.\nBEGIN failed--compilation aborted at /usr/lib/perl5/Apache.pm line 6.\nCompilation failed in require at /usr/lib/perl5/Apache/Registry.pm line 2.\nBEGIN failed--compilation aborted at /usr/lib/perl5/Apache/Registry.pm line 2.\nCompilation failed in require at (eval 2) line 3.\n

so i thought this error is may be resluted from lack of some perl packge? but i am not sure which one is needed.
I hope you could help me. Thanks in advanced.

following is my lxr.conf:
# -*- mode: perl -*-
# Configuration file
#
(
 {
  # Global configuration

  # Path to glimpse executable.
  # Define this OR the swish-e variables depending which search engine you want to use.
  ##'glimpsebin'        => '/info/lxr/bin/glimpse',

  # Where to store the glimpse index files
  ##'glimpsedir' => 'somewhere',

  # Location of SWISH-E indexer binary
  'swishindex' => '/usr/bin/swish-e',

  # Location of SWISH-E search binary
  'swishsearch' => '/usr/bin/swish-search',

  # Where to store the swish index files
  'swishdir' => '/var/lib/lxr-cvs/index',

  # Path to Exuberant Ctags executable
  'ectagsbin'   => '/usr/bin/ctags-exuberant',

  # Place where lxr can write temporary files
  'tmpdir'              => '/tmp',

  # Location of the Generic.pm config file
  'genericconf' => '/var/lib/lxr-cvs/lib/LXR/Lang/generic.conf'

 },

 {
     # Configuration for http://hostname.dom/lxr.
     # !!!! Change the 'baseur' according to your domanin name or IP address
     # baseurl is used to select configuration block.

#  'baseurl'            => 'http://localhost/lxr',    # Put your URL here
     'baseurl'          => 'http://218.194.50.253/lxr',    # Put your URL here
     'virtroot'         => '/lxr',                    # The bit after the / above

     'variables' => {
                                         # Define typed variable "v".  This is the list of versions to index.
                                         'v' => {'name'    => 'Version',
                                                         # This can come from a file, a function or be explicitly
                                                         # ennumerated.
                                                         # From a file:
                                                         'range'   => [ readfile('/usr/src/versions') ],
                                                         # Explicitly:
                                                         # 'range' => [qw(v1 v2 v3.1 v4 experimental)],
                                                         # If files within a tree can have different versions,
                                                         # e.g in a CVS tree, 'range' can be specified as a
                                                         # function to call for each file:
                                                         #'range'   => sub { return
                                                         #                      ($files->allreleases($LXR::Common::pathname),                                                         #                       $files->allrevisions($LXR::Common::pathname))
                                                         #                      }, # deferred function call.

                                                         # The default version to display
                                                         'default' => '2.5.6'},

                                         # Define typed variable "a".  First value is default.
                                         'a' => {'name'    => 'Architecture',
                                                         'range'   => [qw(i386 alpha arm m68k mips ppc sparc sparc64)]},
                                        },

  # These do funky things to paths in the system - you probably don't need them.
  'maps' => {
                         '/include/asm[^\/]*/' => '/include/asm-$a/',
                        '/arch/[^\/]+/'       => '/arch/$a/',
                        },


  # Templates used for headers and footers
  'htmlhead'            => 'html-head.html',
  'htmltail'            => 'html-tail.html',
  'htmldir'                 => 'html-dir.html',
  'htmlident'       => 'html-ident.html',
  'htmlident_refs'  => 'html-ident-refs.html',

  'sourcehead'  => 'html-head.html',
  'sourcedirhead'       => 'html-head.html',
  'stylesheet'       => 'lxr.css',

  # sourceroot - where to get the source files from

  # For ordinary directories, this specifies a directory which has each version as a
  # subdirectory e.g.
  #  indexed-src/version1/...
  #  indexed-src/version2/...
  # The names of the version directories must match the values for the Version
  # variable above.
  'sourceroot'  => '/usr/src/',
  # Alternatively, this can specify a CVS repository by setting the value to "cvs:"
  # followed by the path to the repository.  Note this must be file accessible - remote
  # server access does NOT work.
  #     'sourceroot'    => 'cvs:/hom/karsk/a/CVSROOT/linux',

  # The name to display for this source tree
  'sourcerootname'      => 'Example',


  # The DBI identifier for the database to use
  # For mysql, the format is dbi:mysql:dbname=<name>
  # for Postgres, it is dbi:Pg:dbname=<name>
# for Oracle, it is dbi:Oracle:host=localhost;sid=DEVMMS;port=1521
  'dbname'              => 'dbi:mysql:dbname=lxr',

  # If you need to specify the username or password for the database connection,
  # uncomment the following two lines
    'dbpass'            => 'kernel',
    'dbuser'            => 'root',

  # For using glimpse, the directory to store the .glimpse files in is required
  #'glimpsedir' => '/path/to/glimpse/databases',

  # Location of swish-e index database files if using swish-e
  #'swishdir' => '/a/directory/here/',


  # where to look for include files inside the sourcetree.  This is used to hyperlink
  # to included files.
  'incprefix'   => ['/include', '/include/linux'],

  # Which extensions to treat as images when browsing.  If a file is an image,
  # it is displayed.
  'graphicfile' => '(?i)\.(gif|jpg|jpeg|pjpg|pjpeg|xbm|png)$',  #'

  # How to map files to languages
  # Note that the string for the key and the first entry in the
  # array MUST match
  'filetype' => {
                                 # Format is
                                 # Language name, filepatten regexp, module to invoke,
                 # (optional )tabwidth
                                 # Note that to have another language supported by Generic.pm,
                                 # you must ensure that:
                                 # a) exuberant ctags supports it
                                 # b) generic.conf is updated to specify information about the language
                                 # c) the name of the language given here matches the entry in generic.conf
                                 'C' => ['C', '\.c$' #'
                                  , 'LXR::Lang::Generic', '8'],
                                 'C++' => ['C++', '\.C$|((?i)\.c\+\+$|\.cc$|\.cpp$|\.cxx$|\.h$|\.hh$|\.hpp$|\.hxx$|\.h\+\+$)' #'
                                  , 'LXR::Lang::Generic', '8'],

# Some languages are commented out until the relevant entries in generic.conf are made
# The list here is the set supported by ctags 5.0.1
#                                ['Beta', '(?i)\.bet$' #'
#                                 , 'LXR::Lang::Generic'],
#                                ['Cobol', '(?i)\.cob$'  #'
#                                 , 'LXR::Lang::Generic'],
#                                ['Eiffel', '(?i)\.e$'   #'
#                                 , 'LXR::Lang::Generic'],
#                                ['Fortran', '(?i)\.f$|\.for$|\.ftn$|\.f77$|\.f90$|\.f95$'   #'
#                                 , 'LXR::Lang::Generic'],
                                 'Java' => ['Java', '(?i)\.java$'   #'
                                  , 'LXR::Lang::Java', '4'],
#                                ['Lisp', '(?i)\.cl$|\.clisp$|\.el$|\.l$|\.lisp$|\.lsp$|\.ml$'   #'
 #                                , 'LXR::Lang::Generic'],
                  # No tabwidth specified here as an example
                                 'Make' => ['Make', '(?i)\.mak$|makefile*' #'
                                                        , 'LXR::Lang::Generic'],
#                                ['Pascal', '(?i)\.p$|\.pas$'   #'
#                                 , 'LXR::Lang::Generic'],
                                 'Perl' => ['Perl', '(?i)\.pl$|\.pm$|\.perl$'   #'
                                  , 'LXR::Lang::Generic', '4'],
                                 'php' => ['php', '(?i)\.php$|\.php3$|\.phtml$'   #'
                                  , 'LXR::Lang::Generic', '2'],
                                 'Python' => ['Python', '(?i)\.py$|\.python$'   #'
                                  , 'LXR::Lang::Generic', '4'],
#                                ['rexx', '(?i)\.cmd$|\.rexx$|\.rx$'   #'
#                                 , 'LXR::Lang::Generic'],
#                                ['ruby', '(?i)\.rb$'   #'
#                                 , 'LXR::Lang::Generic'],
#                                ['scheme', '(?i)\.sch$|\.scheme$|\.scm$|\.sm$'   #'
#                                 , 'LXR::Lang::Generic'],
#                                ['shell', '(?i)\.sh$|\.bsh$|\.bash$|\.ksh$|\.zsh$'   #'
#                                 , 'LXR::Lang::Generic'],
#                                ['s-Lang', '(?i)\.sl$'   #'
#                                 , 'LXR::Lang::Generic'],
#                                ['tcl', '(?i)\.tcl$|\.wish$'   #'
#                                 , 'LXR::Lang::Generic'],
                                },

  # Maps interpreter names to languages.  The format is:
  #  regexp => langname
  #   regexp is matched against the part after #! on the first line of a file
  #   langname must match one of the keys in filetype above.
  #
  # This mapping is only used if the filename doesn't match a pattern above, so
  # a shell script called shell.c will be recognised as a C file, not a shell file.

  'interpreters' => {
                                         'perl' => 'Perl',
#                                        'bash' => 'shell',
#                                        'csh' => 'shell',
                                         'python' => 'Python',
                                        },


})




--
Zhou Peng