от Boyan Kehayov(28-02-2007)
рейтинг (24)
[ добре ]
[ зле ]
Вариант за отпечатване Какво е това LXR?
Това е програма (набор от скриптове) написана на Perl за
показване на сорсове през уеб.
Има възможности за търсене на функции, файлове и произволен
текст. Всичко резултати се
показва като линкове и след това може да ги разгледате в
любимия си браузър.
Може да сложите произволен брой програми и техните
версии.
Използва се стабилната версия на lxr-0.3.1, която може да
свалите от тук:
http://sourceforge.net/projects/lxr
Сваляме си сорса и по традиция го слагаме в
/usr/src/lxr-0.3.1.tar.gz.
За да проработи LXR се нуждаем още от:
- Perl версия 5 или по-нова.
- Уеб сървър с cgi-script поддръжда.
и като допълнение, за да имаме търсене на произволен
текст:
- Glimpse от http://glimpse.cs.arizona.edu,
което е безплатно за не комерсиална употреба.
Забележка: В новата версия се използва GPL програма за
произволното търсене.
Разархивираме и влизаме с директорията със сорса:
# tar -xzvf lxr-0.3.1.tar.gz
# cd lxr-0.3
Както пише в INSTALL файла, трябва да редактираме Makefile
като променим следните 2 реда
от него
# Makefile for installation and configuration of LXR
# The location of your perl5 binary
# Път до пърл интерпретатора, който си е там в повечето
дистрибуции
PERLBIN=/usr/bin/perl
# LXR will be installed here
# Място, където искаме да инсталираме LXR
# В нашия случай това е /var/www/lxr
INSTALLPREFIX=/var/www/lxr
След това инсталираме програмата.
# make install
Отиваме в директорията, която сме задали и Makefile.
# cd /var/www/lxr
# ls
bin http source
#
В bin е скриптът за индексиране.
В http са скриптовете и конфигурационните файлове, а source
е папката, която
се използва за данните от индексирането и сорсовете (ако
искате да ги сложите там).
Трябва да се направи файл, който указва Apache да изпълнява
скриптовете,
а не да ги показва като текст.
#cd http
#touch .htaccess
Редактираме файла с любимия текстов редактор и записваме
вътре:
<Files ~ (search|source|ident|diff|find)$>
SetHandler cgi-script
</Files>
За моите нужди аз съм разархивирал сорсовере на две версии
на виртуализатора xen в
/home/user1/xen_3.0.x/xen-3.0.3_0-src и
/home/user1/xen_3.0.x/xen-3.0.4_1-src
Създавам два файла и две директории в
/var/www/lxr/source
# cd ../source
# touch versions
# touch defversion
# mkdir xen-3.0.3_0-src
# mkdir xen-3.0.4_1-src
Във versions записваме всички версии или програми, които
искаме да индексираме.
Всяка е на отделен ред.
Ето моите:
# cat versions
xen-3.0.3_0-src
xen-3.0.4_1-src
Във defversion записваме версията, която искаме да се
показва по подразбиране
при извикване на LXR.
# cat defversion
xen-3.0.3_0-src
Забележка: Ако имате подчертаващо тире в имената на
директориите или други символи
различни от [a-z],[A-Z],[0-9] "." "-"
трябва да направите
малка промяна в един от скриптовете на програмата:
# cd ../http/lib/LXR/
# vim Config.pm
Намирате частта:
sub varexpand {
my ($self, $exp) = @_;
$exp =~ s{${?(w+)}?}{
$self->{variable}->{$1} =~
/^([a-zA-Z0-9.-_]*)$/ ? $1 : ''
}ge;
return($exp);
}
и променяте [a-zA-Z0-9.-] на [a-zA-Z0-9.-_], за да се
добави подчертаващото тире.
Може да добавите и други символи, които използвате при
именуването на вашите програми
ако ги няма в описаните по горе по аналогичен начин.
Директориите използвам, за да съхранявам в тях индекснте
файлове, създадени от
/var/www/lxr/bin/genxref скриптът и тези от
glimpseindex програмата.
Ако са в общата директория се получава препокриване от
различните индексирания и
остава валиден само последно индексираният сорс.
Следващата стъпка е да редактираме конфигурационния файл
lxr.conf
Ето как изглежда моят:
# cat /var/www/lxr/http/lxr.conf
# Configuration file.
# Define typed variable "v", read valueset from
file.
# v се чете от файла versions, който създадохме в
директорията source,
# и приема стойностите за различните версии
# defversion е файл, отново създаден от нас в директорията
source и съдържа версията,
# която да се показва при първото извикване на
програмата.
# Може да се види на http://lxr.linux.no/source/ , че
версията по подразбиране е 2.6.17.13
variable: v, Version, [/var/www/lxr/source/versions],
[/var/www/lxr/source/defversion]
# Define typed variable "a". First value is
default.
variable: a, Architecture, (i386, alpha, m68k, mips, ppc,
sparc, sparc64)
# Define the base url for the LXR files.
# Тук трябва да зададем пътя до папката http след главната
папка на Apache
# В www (DocumentRoot на Апача)ние имаме /lxr/http и
редактираме
baseurl: http://81.161.245.2/lxr/http/
# These are the templates for the HTML heading, directory
listing and
# footer, respectively.
htmlhead: /var/www/lxr/http/template-head
htmltail: /var/www/lxr/http/template-tail
htmldir: /var/www/lxr/http/template-dir
# The source is here.
# Това е папката със сорсовете. Може да си зададем която и
да,
# но да имаме права за четене и влизане в папките т.е x-r
# Променливата $v приема стойностите описани в versions
файла
sourceroot: /home/user1/xen_3.0.x/$v/
# Задаваме произволно име
srcrootname: xensource
# "#include <foo.h>" is mapped to this
directory (in the LXR source
# tree)
# път до основните библиотеки
incprefix: /usr/include
# The database files go here.
# Директорията за индексните файлове.
#Променливата $v приема стойностите описани в versions
файла
# и така за всяка версия са в различна директория.
dbdir: /var/www/lxr/source/$v/
# Glimpse can be found here.
glimpsebin: /usr/local/bin/glimpse
# The power of regexps. This is pretty
Linux-specific, but quite
# useful. Tinker with it and see what it does.
(How's that for
# documentation?)
map: /include/asm[^/]*/ /include/asm-$a/
map: /arch/[^/]+/ /arch/$a/
Следващата стъпка е да индексираме сорсовете.
Това става чрез използване на скрипра в
/var/www/lxr/bin/genxref и
glimpseindex.
# cd /var/www/lxr/source/xen-3.0.3_0-src
# /var/www/lxr/bin/genxref
/home/user1/xen_3.0.x/xen-3.0.3_0-src/
Тук времето за чакане е право пропорционално на големината
на сорса
и обратно пропорционално на изчислителната мощ, с която
разполагате :)
# glimpseindex -H .
/home/user1/xen_3.0.x/xen-3.0.3_0-src/
# cd ../xen-3.0.4_1-src
# /var/www/lxr/bin/genxref
/home/user1/xen_3.0.x/xen-3.0.4_1-src/
# glimpseindex -H .
/home/user1/xen_3.0.x/xen-3.0.4_1-src/
Забележка: При извикването на genxref използвайте пълния
(абсолютния) път,
а не ../../bin/genxref. Ако направите второто при опит да
търсите нещо ще
получите съобщение от вида:
"Can't find xref file in
.../source/xen-3.0.3_0-src///xref",
което при проведените опити не се случва при първия начин
на викане на
genxref. Явно някъде се използва PWD или подобна команда на
Perl, и резултатът
е различен при викане от различни директории. Това могат да
кажат хората, които
знаят Perl.
Последното нещо, което трябва да направите е да дадете
права на Apache върху
създадените директории и фаиллове:
# cd /var/www/
# chown -R www-data:www-data lxr/
След това остава да отворите любимия си браузър и да
напишете:
http://localhost/lxr/http
Успех !
Използвани документи:
1. http://mia.ece.uic.edu/~papers/WWW/lxr....
2. http://lxr.linux.no/New-INSTALL
<< Превод на Потребителско ръководство за Wine | Делегиране на access политики в Postfix >>
|