LINUX-BG Адрес : http://www.linux-bg.org |
Ръководство за LXR |
От: Boyan Kehayov Публикувана на: 28-02-2007 Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=programs&key=390892164 |
Какво е това 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 >> |
Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук,
но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора,
както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.
All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
|