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

Смотреть фильмы бесплатно

Официальный сайт oriflame100 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

В хорошем качестве hd видео

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


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

Online video HD

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

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

Full HD video online

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

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

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