Apache i apxs
Tomasz Kłoczko
kloczek w rudy.mif.pg.gda.pl
Pią, 10 Mar 2000, 23:38:30 CET
Dużo wskazuje na to, że praktycznie od poczatku powstania apxs wogóle ten
skrypt nie był używany w niektórych zastosowaniach do których jest
przeznaczony, a do których teraz chciałbym go zaprząc. Chodzi o
(de)rejestrację modułów.
Opis stanu obecnego.
Przy wołaniach apxs np.:
(rejestracja modułu)
%{_sbindir}/apxs -e -a -n agent_log %{_libexecdir}/mod_log_agent.so
(derejestracja modułu)
%{_sbindir}/apxs -e -A -n agent_log %{_libexecdir}/mod_log_agent.so
podaje się nazwę modułu i nazł pliku z modułem ze ścieżką. Żeby było
śmieszniej nazwa modułu ("<module>") używana w apxs i nazwa pliku modułu
("path/mod_<module2>.so") to jeszcze nie wszystkie wszystkie odmiany nazwy
ponieważ w httpd.conf w linijce z LoadModule używa sie jeszcze
"<module>_module", a poniżej jeszcze w linijce z AddModule wpada jeszcze
"mod_<module>.c".
<module2> do <module> ma się do siebie tak, że jeżeli <module> nie zawiera
znaków "_" to <module2>=<module> ale jeżeli zawiera "_" to uzywa sie nazwy
z zamienioną kolejnością tego co jest przed i po "_".
Przykłady:
- mod_include
<module>= include
<module2>= include
path/mod_<module2>.so=lib/apache/mod_include.so
<module>_module= include_module
ale drugi przykład:
- mod_db_auth:
<module>= db_auth
<module2>= auth_db
path/mod_<module2>.so=lib/apache/mod_auth_db.so
<module>_module= db_auth_module
Jak widać trzeba było być Moronem albo pisać to po kilku skrętach żeby
wymyśleć tak poj*ny schemat nazywania i operowania modułach (co ciekawsze
myśli jaki mi w tym momencie przychodzą niestety nie nadaja się na pub
:->).
Koniec z końcem widać, że nawet "twórca" zakręcił się w tym wszystkim i
zamiast w AddModule użyć mod_<module>.c używane jest mod_<module2>.c
co w efekcie końcowym daje dla np. db_auth:
AddModule mod_db_auth.c
zamiast:
AddModule mod_auth_db.c
.. i to jest przyczyną tego, że obecna procedura (de)rejestracji jaka jest
w specu idzie w krzaki.
Tak gruby bład w apxs jest dla mnie dowodem na to, że apxs tak wógóle nie
był szerzej używany do (de)rejestracji modułów.
Najchętniej powyższe to bym wepchnął kobyle w tyłek i jeszcze raz puścił
do ogra żeby się to mogło urodzić jeszcze raz czyli przepisał "in rajt
łej(tiem)".
Rozwiązanie mniej pracochłonne to powymieniać wszędzie na <module> na
<module2> co wiąże się z grzebaniem w sporej ilości plików.
Rozwiazanie ad choc jest takie żeby poprawić apsx żeby używał <module2>
przy generowaniu linii z AddModule .. i od tego by trzeba zacząć ale apxs
jest w perlu, a tu mam pewne niedostatki (składnie oczywiście rozumie sie
bez znajomości jezyka ale najcieżej ranalizuje mi się różne regexpy) i w
zwiazku z tym prosiłbym o pomoc w poprawieniu apxs do takiej postaci żeby
nadawał się do (de)rejestracji modułów.
Baj de łej .. właśnie wyszedł apache 2.0 alfa. Przyjrzałem się temu z
lekka i kurna nie mogę się dopatrzeć w nim niczego rewolucyjnego, a taki
miał być według zapowiedzi ten indianin. W szczególności miano tam zmienić
gospodarkę modułami z czego na pierwszy rzut oka że ograniczono się do
kosmetyki.
kloczek
--
-----------------------------------------------------------
*Ludzie nie mają problemów, tylko sobie sami je stwarzają*
-----------------------------------------------------------
Tomasz Kłoczko, sys adm @zie.pg.gda.pl|*e-mail: kloczek w rudy.mif.pg.gda.pl*
_________________________
polish linux distribution
Więcej informacji o liście dyskusyjnej pld-devel-pl