Видео ролики бесплатно онлайн

Смотреть бабушки видео

Официальный сайт all-remont 24/7/365

Смотреть видео бесплатно

23.07.10 22:52 q2w

How-to`sУстановка apache 1.3.42 + mod_perl на Ubuntu 10.04

Вобщем возникла задача поиметь машину для разработки с мод_перлом и первым апачом.
Обычно я это делал на специально выделенной под это дело тестовой машине с Фрёй, где для этого дела есть отдельный порт и никаких проблем, но на этот раз я решил, что пора на своей машине это организовать.

Итак, пакета с первым апачом под современную убунту нет, поэтому придётся ставить из исходников.

Тут написано, что всё просто и делается парой команд, но я бы не писал этот пост, если бы оно действительно было так.

И вот вам моё прохождение сего квеста.


Скачиваем-распаковываем исходники:
1
2
3
4
5
6
cd /usr/src
lwp-download http://www.apache.org/dist/httpd/apache_1.3.42.tar.gz
lwp-download http://perl.apache.org/dist/mod_perl-1.31.tar.gz
tar xzvf apache_1.3.42.tar.gz
tar xzvf mod_perl-1.31.tar.gz
cd mod_perl-1.31


Далее начинается:
perl Makefile.PL APACHE_SRC=../apache_1.3.42/src DO_HTTPD=1 USE_APACI=1 EVERYTHING=1

Первое сообщение об ошибке говорит, что у меня сломана команда "echo".
Решается подменой того, что щас выполняет роль sh (dash) на bash.
Т.е. переименовываем во что-нибудь симлинк /bin/sh и делаем новый на bash:
ln -s /bin/bash /bin/sh

Bash'евская реализация команды echo прокатывает и мы идём дальше.

А дальше оно говорит, что у меня плохой компилятор и ему нужен gcc. Тот факт, что он у меня уже установлен, ничего не меняет =).
На самом деле просто не хватает пакета libperl-dev

Но самое интересное происходит потом:
1
2
htpasswd.c:101: error: conflicting types for ‘getline’
/usr/include/stdio.h:651: note: previous declaration of ‘getline’ was here

Т.е. в апачевская функция getline плохо названа, ибо в stdio уже есть такая.
Придётся переименовать её во всём апаче, благо не много:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Index: src/support/htdigest.c
===================================================================
--- src/support/htdigest.c    (revision 897307)
+++ src/support/htdigest.c    (working copy)
@@ -71,7 +71,7 @@
     while ((line[y++] = line[x++]));
 }
 
-static int getline(char *s, int n, FILE *f)
+static int ap_getline(char *s, int n, FILE *f)
 {
     register int i = 0;
 
@@ -158,7 +158,7 @@
 {
     static char line[MAX_STRING_LEN];
 
-    while (!(getline(line, MAX_STRING_LEN, source))) {
+    while (!(ap_getline(line, MAX_STRING_LEN, source))) {
     putline(target, line);
     }
 }
@@ -216,7 +216,7 @@
     ap_cpystrn(realm, argv[2], sizeof(realm));
 
     found = 0;
-    while (!(getline(line, MAX_STRING_LEN, f))) {
+    while (!(ap_getline(line, MAX_STRING_LEN, f))) {
     if (found || (line[0] == '#') || (!line[0])) {
         putline(tfp, line);
         continue;
Index: src/support/logresolve.c
===================================================================
--- src/support/logresolve.c    (revision 897307)
+++ src/support/logresolve.c    (working copy)
@@ -71,7 +71,7 @@
 #endif /* !MPE && !WIN32*/
 
 static void cgethost(struct in_addr ipnum, char *string, int check);
-static int getline(char *s, int n);
+static int ap_getline(char *s, int n);
 static void stats(FILE *output);
 
 
@@ -278,7 +278,7 @@
  * gets a line from stdin
  */
 
-static int getline (char *s, int n)
+static int ap_getline (char *s, int n)
 {
     char *cp;
 
@@ -326,7 +326,7 @@
     for (i = 0; i < MAX_ERR + 2; i++)
     errors[i] = 0;
 
-    while (getline(line, MAXLINE)) {
+    while (ap_getline(line, MAXLINE)) {
     if (line[0] == '\0')
         continue;
     entries++;
Index: src/support/htpasswd.c
===================================================================
--- src/support/htpasswd.c    (revision 897307)
+++ src/support/htpasswd.c    (working copy)
@@ -98,7 +98,7 @@
  * Get a line of input from the user, not including any terminating
  * newline.
  */
-static int getline(char *s, int n, FILE *f)
+static int ap_getline(char *s, int n, FILE *f)
 {
     register int i = 0;
 
@@ -547,7 +547,7 @@
     char scratch[MAX_STRING_LEN];
 
     fpw = fopen(pwfilename, "r");
-    while (! (getline(line, sizeof(line), fpw))) {
+    while (! (ap_getline(line, sizeof(line), fpw))) {
         char *colon;
 
         if ((line[0] == '#') || (line[0] == '\0')) {


И доустанавливаем:
1
2
3
make && make test && make install
cd ../apache_1.3.42
make install



alff31 23.07.10 23:19 # +0
А можно объяснить для непросвященных для чего ставить первый апач, вместо второго? Он стабильнее, для тестов на совместимость или как?
q2w 23.07.10 23:37 # +0
Есть несколько проектов, которые работают под первым апачём и не работают во втором.
И даже не собираются.
А разрабатывать и поддерживать их надо.
solomenikm 24.07.10 12:41 # +0
Я не в курсе есть ли такая возможность, но может быть имеет смысл найти старый дистрибутив ubuntu в котором в репах первый apache и поставить его на виртуальную машину?
Например я ставил ubuntu 9.04 чтобы была старая версия php.
q2w 24.07.10 15:10 # +0
Ну виртуалка - это далеко не всегда удобно.
philosoft 24.07.10 13:01 # +1
Минус за make install
q2w 24.07.10 15:11 # +-1
Спасибо, конечно, но что в нём плохого-то?
kstep 24.07.10 22:33 # +1
Под debian-based простой make install неправославен, ибо не создаёт деб-пакет, который потом можно легко найти/удалить/обновить. Хотя бы checkinstall нужен — уже правильнее.
q2w 24.07.10 22:54 # +0
О, deb-пакет это мысль.
По сути ведь поскольку в нём бинарики, всех вышеописанных проблем он позволит избежать, правильно?
Всем, кроме меня уже правда, но тоже полезно. =)

Лучшие блоги (все 140)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Элита (все 2774 из 212 городов)
Топ пользователей Топ блогов
welinux.ru

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн