以下指南针对 简单项目树。
如果您希望使能所有可能的超链接, 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 或更高版本
配置网络服务器需要一些技巧,下述交互配置问题用于简化这个任务。
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 入口。这个入口默认是 /lxr
(localhost/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] >
根据您的具体情况选择数据库引擎。
--- Directory for glimpse databases? > /home/myself/glimpse_DB
配置脚本会检测系统已安装的搜索引擎(这里是glimpse)并且要求您输入其用于放置辅助文件的目录。如果输入的目录不存在,LXR 稍后会创建爱你它。
注意 !
如果您在自己的私有目录中创建目录,请确保其有足够的读权限以让相关程序访问。
templates directory templates/ now protected read-only
- 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 或更高版本
*** Host name previously defined as //localhost
这行就是您在前述 web 服务器配置过程中定义的主机名。
*** Configuring HTML parameters
*** 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 或更高版本
*** 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默认是root
,PostgreSQL默认是postgres
)。如果您的计算机被修改,相应修改 initdb.sh 脚本。
运行这个脚本(在前述配置步骤生成的)。
$ ./custom.d/initdb.sh
注意 :
在 MySQL环境下,需要您多次输入数据库管理员密码。
不用理会“不存在xxx错误”(用户、数据库、表,…)。该脚本会先删了再创建,所以任何时候都可以用它重新来过。
警告 !
删除这个脚本是安全的。configure-lxr.pl 会以追加方式写入 initdb.sh,用于分开保存多次运行中的数据库初始化配置。
不删除的话,脚本会保留之前全部的数据库创建过程。当脚本再次运行时,新数据库创建的同时,旧数据库会被删除重建(清空)。
拷贝 lxr.conf 至其最终位置
拷贝前手动调整一些配置参数。
$ cp custom.d/lxr.conf .
用 cp
而非 mv
,这样在以后添加别的源码树可以不用重新配置。
SourceForge上示例源码树的参数例子见
这里。
您现在已经为加载数据库数据做好准备了。