Ubuntu 22.04环境下安装lxr源码阅读器详细过程
一、lxr介绍
lxr(the Linux Cross Referencer)最初的目的是linux内核源码阅读。lxr是使用Perl编写的源码阅读软件, 支持C, C++, Java, Python, Ruby, Perl, COBOL等多种语言。
二、依赖关系
lxr依赖apache2,mariadb-server,exuberant-ctags,swish-e等。
三、安装过程
1、下载源码
sudo apt install git
git clone https://git.code.sf.net/p/lxr/git_repo lxr-git_repo
mv lxr-git_repo lxr
2、执行检查
./genxref --checkonly
提示未安装libfile-mmagic-perllibfile-mmagic-perl
安装mmagic后再执行核查
sudo apt-get install libfile-mmagic-perl
./genxref --checkonly
提示需要安装exuberant-ctags和swish-e
3、安装依赖
sudo apt-get install exuberant-ctags swish-e
./genxref --checkonly
安装依赖后再执行核查,glimpse和swish-e二选一安装就行。
4、安装数据库和服务器
sudo apt-get install mariadb-server
sudo apt-get install apache2
浏览器打开http://localhost/,出现apache2默认主页
四、配置过程
1、主配置
./scripts/configure-lxr.pl -vv
配置完成生成三个配置文件,一个是lxr的配置文件,一个是数据库的初始化文件,另外一个是apache2配置文件。
2、配置apache2
sudo cp custom.d/apache-lxrserver.conf /etc/apache2/conf-enabled/
sudo systemctl restart apache2
重启服务器失败,提示37行代码“PerlTaintCheck On”错误,需要安装Perl相关插件
sudo apt-get install libapache2-mod-perl2
安装libapache2-mod-perl2后重启apache2正常。
打开浏览去http://localhost/lxr/source,显示403错误,把根目录,放到/var/www目录下,修改apache2配置文件,重启apache2服务器。
sudo cp -r lxr /var/www/
浏览器打开是源码,未进行Perl解释,需要使能cgi,重启服务。
sudo a2enmod cgid
sudo systemctl restart apache2
不能打开lxr配置文件
3、配置lxr
sudo cp custom.d/lxr.conf .
刷新浏览器,变为一下,表示浏览器配置完毕。
4、配置数据库
sudo ./custom.d/initdb.sh
5、执行索引
sudo ./genxref --url=http://localhost/lxr
完成索引后,文件目录已经存在。刷新浏览器:http://localhost/lxr/source,还是提示文件不存。把源码文件目录拷贝到/var/www目录下解决。
汇总总过程代码如下:
sudo apt install git
git clone https://git.code.sf.net/p/lxr/git_repo lxr-git_repo
mv lxr-git_repo lxr
cd lxr
./genxref --checkonly
sudo apt-get install libfile-mmagic-perl
./genxref --checkonly
sudo apt-get install exuberant-ctags swish-e
./genxref --checkonly
sudo apt-get install mariadb-server
sudo apt-get install apache2
./scripts/configure-lxr.pl -vv
sudo cp custom.d/apache-lxrserver.conf /etc/apache2/conf-enabled/
sudo systemctl restart apache2
sudo systemctl status apache2
sudo apt-get install libapache2-mod-perl2
sudo systemctl restart apache2
cd ..
sudo cp -r lxr /var/www/
sudo gedit /etc/apache2/conf-enabled/apache-lxrserver.conf
sudo systemctl restart apache2
sudo a2enmod cgid
sudo systemctl restart apache2
sudo gedit /var/www/lxr/custom.d/lxr.conf
cd /var/www/lxr/
sudo cp custom.d/lxr.conf .
sudo ./custom.d/initdb.sh
sudo ./genxref --url=http://localhost/lxr
sudo cp -r ~/source /var/www
sudo gedit /var/www/lxr/lxr.conf