选择发行版本:

以下指南针对 简单项目树。 如果您希望使能所有可能的超链接, Linux 内核是很复杂的案例。 在您针对某个简单案例完成LXR配置后,参见 内核配置提示

配置过程会教您配置一系列文件(主配置文件、服务器配置文件以及最重要的数据库配置)。 配置向导会交互地帮您处理参数的兼容性问题。因为这些规则很复杂,不要试图进行手动配置。 您很容易忘记一些重要事项,从而导致 LXR 无法正常工作。

配置向导程序 configure-lxr.pl 会从 templates/ 目录创建一组裁剪过的配置模板副本,并将其存储于 custom.d/ 目录下。 这一步完成后, 您必须lxr.conf 拷贝到 LXR 根目录

配置 LXR 和 数据库

用脚本 configure-lxr.pl 建立 LXR 和 数据库的配置文件:

$ ./scripts/configure-lxr.pl -vv 该命令使用默认参数,( -vv 选项会列出详细信息), 依据 lxr.conf 模板在 custom.d/ 目录下生成配置文件 lxr.conf 和数据库初始化脚本 init-db.sh *** LXR configurator (version: 2.2) *** LXR root directory is /home/myself/lxr Configuration will be stored in custom.d/

在您进行几个交互式设置之后,配置脚本会创建一个定制的 lxr.conf 文件。 默认的设置(按回车键选择)在提示符前以大写标出。 在提示选项中进行选择时,您不需要写出完整的配置选项,敲几个字符没歧义即可。

在提示选项中选择时,大小写不敏感。

源码树无关部分的配置

1.1 或更高版本 : 其它版本 :
  • 1.1 或更高版本 配置网络服务器需要一些技巧,下述交互配置问题用于简化这个任务。 Configure for single/multiple trees? [S/m] > 重要 ! 这是唯一之后不能修改的选项,因为这个选项以复杂的方式配置服务器。

    如果永远就一颗源码树,选 S(如果之后想改变,就删了数据库从头来)。 对于第一次试用来说,选这个就足够完美了。

    如果您将来还要添加另外的源码树,选择 M

    Do you intend to add other trees later? [yes/NO] > 这个问题是再次确认以避免错误( S 是默认选项)。

    LXR 服务器的 URL 设计是有讲究的,用以正确管理各个目标源码树。LXR 的 URL 设计是在主机名后面跟 LXR 服务名,然后是源码树名字。

    如果服务器专门用来作 LXR 服务,那么 LXR 服务名(通常是 /lxr )可以省略。

    这针对专门为 LXR 架设的网站服务器(见下述 1 和 3 选项).

    在单个源码树的情景中,不需要为其定名。

    选择这个选项会略去后面许多交互式选项。 *** LXR web server configuration *** LXR can be configured as the default server (the only service in your computer), a section of this default server or an independent server (with its own host name). Refer to the User's Manual for a description of the differences. Web server type? 1.DEFAULT 2.section in default 3.independent 4.section in independent > 2

    选项 1 (默认选项) 用于最简单的情况。 选项 2 用于保留当前已存在的本地服务。

    The computer hosting the server is described by an URL. The form is scheme://host_name:port where: - scheme is either http or https (http: can be omitted), - host_name can be given as an IP address such as 123.45.67.89 or a domain name like localhost or lxr.url.example, - port may be omitted if standard for the scheme. The following question asks for a primary URL. Later, you'll have the opportunity to give aliases to this primary URL. --- Host name or IP? [//localhost] >

    默认的本地服务通常就是 //localhost ,按回车确认即可。

    --- Alias name ? (hit return to stop) > //mycomputer.example.com --- Alias name ? (hit return to stop) >

    按需给出服务器别名(列表),以空行结束。

    URL section name for LXR in your server? [/lxr] >

    这是你的服务器 URL 中表示 LXR 服务的字段。这个字段跟在主机名后。

    注意 !
    如果您输入单个斜线 / ,将在无警告的情况下回到前述选项 1/3 处。这会导致现有web服务器的严重损坏。 译者注:这里原文很绕,简单地说,就是 LXR 服务需要一个 URL 入口。这个入口默认是 /lxrlocalhost/lxr),你可以换成你自己的,但不要就写一个 /
The choice of the database engine can make a difference in indexing performance, but resource consumption is also an important factor. * For a small personal project, try SQLite which do not need a server and is free from configuration burden. * For medium to large projects, choice is between MySQL, PostgreSQL and Oracle. Oracle is not a free software, its interface has not been tested for a long time. * PostgreSQL databases are smaller than MySQL's and performance is roughly equivalent. * MySQL is at its best with large-sized projects (such as kernel cross-referencing) where it is fastest at the cost of bigger databases. * Take also in consideration the number of connected users. Database engine? [MYSQL/oracle/postgres/sqlite] >

根据您的具体情况选择数据库引擎。

1.1 或更高版本 : 1.0 版本 :
  • 1.1 或更高版本 无特别配置选项
--- Directory for glimpse databases? > /home/myself/glimpse_DB

配置脚本会检测系统已安装的搜索引擎(这里是glimpse)并且要求您输入其用于放置辅助文件的目录。如果输入的目录不存在,LXR 稍后会创建爱你它。

注意 ! 如果您在自己的私有目录中创建目录,请确保其有足够的读权限以让相关程序访问。 templates directory templates/ now protected read-only
更高版本 版本 1.1 到 2.0.3: 其它版本 :
  • 2.1 或更高版本 配置文件 apache-lxrserver.conf 现在可以自动检测 Apache 服务器版本并选择正确行为。
file .htaccess written into LXR root directory file apache2-require.pl written into configuration directory file apache-lxrserver.conf written into configuration directory file lighttpd-lxrserver.conf written into configuration directory 这里包含了通用配置部分。这个脚本打开主配置文件。 *** LXR master configuration file setup *** Global section part *** Configuring auxiliary tool paths *** Configuring host name or IP (as http://...)
1.1 或更高版本 : 其它版本 :
  • 1.1 或更高版本 *** Host name previously defined as //localhost 这行就是您在前述 web 服务器配置过程中定义的主机名。
*** Configuring HTML parameters
1.1 或更高版本: 其它版本 :
  • Releases 1.1 or higher 'Buttons-and-menus' interface is recommended for the kernel to avoid screen cluttering. --- Use 'buttons-and-menus' instead of 'link' interface? [YES/no] >

    buttons-and-menus 界面较传统 link 界面更紧凑。 当您的源码树有很多版本时(如 Linux 内核)或通过许多LXR配置变量进行控制时(此处意义不明,译者注)推荐使用前者。

*** Configuring file subsection *** Configuring "common factors" *** Marking tree section 源码树无关的部分到这里就配置好了。

源码树相关部分的配置

*** LXR master configuration file setup *** Tree section part SQL script for database initialisation *** Configuring LXR server parameters *** The virtual root is the fixed URL part after the hostname.
1.1 或更高版本 : 其它版本 :
  • 1.1 或更高版本 *** You previously defined the virtual root as /lxr 该行就是您前面在 web 服务器配置中输入的根路径。
--- Caption in page header? (e.g. Project XYZZY displayed by LXR) > 首次尝试 LXR

这个配置用来定义每页标题。

Do you need a specific encoding for this tree ? [yes/NO] >

默认编码是 UTF-8 。如果您使用另外的编码,输入 Y 并输入IANA认证编码,如 iso-8859-1

*** Describing tree location How is your tree stored? [FILES/cvs/git/subversion/bitkeeper] > *** A source directory contains one sub-directory for every version. --- Source directory? (e.g. /home/myself/project-tree) > /home/myself/my-project

创建您的试验目录,使之包含真正的文件和目录(不要存在版本仓库里)。注意需要使用绝对路径

提醒 !
LXR 关注于浏览各版本差异。所以它需要版本目录,即便就一个版本,目录形式也得形如 /home/myself/my-project/v1
Name to display for the path root? (e.g. Project or $v for version) [$v] >

可以替换在页面头部显示的相关内容,默认是版本号。

*** Enumerating versions Label for version selection menu? [Version] > *** Versions can be explicitly enumerated, be read from a file or computed *** by a function. The latter case is recommended for VCS-stored trees. Version enumeration method? [LIST/file/function] > --- Version name? (hit return to stop) > v1 --- Version name? (hit return to stop) > *** By default, first version in list is displayed. You may also indicate *** a prefered version. --- Default displayed version is first in 'range'? [YES/no] >

告诉 LXR 有多少版本。输入空(按回车)结束。

提示 :
将版本按时间反序(先输入最新的),可以默认显示最新版本。
*** Setting directory lists *** Some directories may contain non-public project data (binaries, *** compilers caches, SCM control data, ...). They can be hidden from LXR. --- Directory to ignore, e.g. CVSROOT or .git? (hit return to stop) > *** If your source code uses "include" statements (#include, require, ...) *** LXR needs hints to resolve the destination file. --- Include directory, e.g. /include? (hit return to stop) >

简单源码树就不用输什么。这里是让 LXR 隐藏一些目录和处理 include 标记用的。

*** Configuring data storage --- Database name? > lxr_myproject --- DB user name? [lxr] > --- DB password? [lxrpw] > --- DB table prefix? [lxr_] > configuration saved in custom.d/lxr.conf DB initialisation sript is custom.d/initdb.sh

给出您站点的数据库命名规则。最好用唯一的名字,除非您要指定现有数据库。本示例中用指定了一个唯一前缀用来替换默认的 lxr_ 前缀。

源码树相关的部分至此就配置完了。

数据库创建

数据库初始化脚本需要管理员权限(MySQL默认是rootPostgreSQL默认是postgres)。如果您的计算机被修改,相应修改 initdb.sh 脚本。

运行这个脚本(在前述配置步骤生成的)。

$ ./custom.d/initdb.sh 注意 :MySQL环境下,需要您多次输入数据库管理员密码。 不用理会“不存在xxx错误”(用户、数据库、表,…)。该脚本会先删了再创建,所以任何时候都可以用它重新来过。 警告 !
删除这个脚本是安全的。configure-lxr.pl 会以追加方式写入 initdb.sh,用于分开保存多次运行中的数据库初始化配置。 不删除的话,脚本会保留之前全部的数据库创建过程。当脚本再次运行时,新数据库创建的同时,旧数据库会被删除重建(清空)。

拷贝 lxr.conf 至其最终位置

拷贝前手动调整一些配置参数。

$ cp custom.d/lxr.conf . cp 而非 mv ,这样在以后添加别的源码树可以不用重新配置。

SourceForge上示例源码树的参数例子见 这里

您现在已经为加载数据库数据做好准备了。