DF Forum
/cgi-bin/YaBB.pl
Russian Forum >> Общие и организационные вопросы >> Установка скриптов под 32/64- битные ОС FreeBSD 5+
/cgi-bin/YaBB.pl?num=1244026184

Сообщение написано DVA в 06/03/09 :: 13:49:43

Заголовок: Установка скриптов под 32/64- битные ОС FreeBSD 5+
Создано DVA в 06/03/09 :: 13:49:43

Установка скриптов под 32-битные ОС FreeBSD 5+.
У некоторых пользователей могли возникнуть проблемы с установкой наших скриптов в FreeBSD 5+, т.к. дистрибутивы откомпилированы под FreeBSD 4.x. Если на сервере не установлена поддержка libc для 4 версии FreeBSD, то при запуске cgi-скриптов выдается Internal Server Error. При этом в логе apache можно наблюдать следующее: /usr/libexec/ld-elf.so.1: Shared object "libc.so.4" not found, также при запуске любого cgi скрипта из консоли тоже выдается эта ошибка. Это значит что на сервере нет библиотеки libc.so.4 или не найден путь к ней.

Решается это следущим образом:
Способ 1.
Необходимо установить поддержку libc для 4 версии FreeBSD.

Способ 2.
Необходимо создать ссылку /usr/lib/libc.so.4 на /usr/lib/libc.so

В шелле от рута (root) выполняется следующая комманда:

Code:
ln -s /usr/lib/libc.so /usr/lib/libc.so.4


Code:
ln -s /usr/lib/libc_r.so /usr/lib/libc_r.so.4


Если при попытке создать ссылку, возникает ошибка:

Code:
ln: /usr/lib/libc.so.4: File exists

это значит что такой файл уже есть, но скорей всего он является символической ссылкой (http://ru.wikipedia.org/wiki/Ln_(UNIX)) ссылающейся на несуществующий файл.
В этом можно убедиться с помощью команды:

Code:
ls -l /usr/lib/

Смотрим куда  ссылается libc.so.4 и есть ли файл на который ссылается libc.so.4:

Code:
lrwxr-xr-x  1 root  wheel       16 Jun  3 05:03 libc.so.4 -> /usr/lib/libc.so.5


Если файла на который ссылается libc.so.4 не существует, необходимо удалить libc.so.4 и создать новую символическую ссылку на существующий файл libc.so (libc.so обычно имеется не зависимо от версии FreeBSD).
Удаляем старый файл:

Code:
rm /usr/lib/libc.so.4

Создаем новую символическую ссылку:

Code:
ln -s /usr/lib/libc.so /usr/lib/libc.so.4



Заголовок: Re: Установка скриптов под 32 битные ОС FreeBSD 5+
Создано DVA в 06/18/09 :: 16:06:54

Установка скриптов под 64-битные ОС FreeBSD 7+.
В настоящее время большинство наших скриптов компилируются под 32-битную ОС FreeBSD 4.x (для совместимости и уменьшения количества дистрибутивов), связи с этим при установке скриптов под 64-битные ОС FreeBSD возможны следующие проблемы:
- Отсутствие на сервере поддержки 32-битных программ (ELF interpreter /usr/libexec/ld-elf.so.1 not found)
- Отсутствие библиотеки libc.so.4 (/usr/libexec/ld-elf.so.1: Shared object "libc.so.4" not found)
! Для решения этих проблем необходимо иметь root доступ к серверу.


Отсутствие на сервере поддержки 32 битных программ.
При запуске cgi-скриптов из веб сервер выдает ошибку Internal Server Error. Если запустить скрипт из консоли то можно увидеть сообщение:

Code:
ELF interpreter /usr/libexec/ld-elf.so.1 not found
Abort


Для решения этой проблемы необходимо установить поддержку 32-битных программ в FreeBSD.
Для этого заходим в консоль как root пользователь и запускаем утилиту sysinstall и устанавливаем "lib32     32-bit runtime compatibility libraries" (см. картинку внизу). После установки 32-битных библиотек, cgi-скрипты скорей всего сразу не заработают (наверняка возникнет проблема с поиском libc.so.4, описанная ниже), но ld-elf.so.1 больше спрашивать не будут.


Отсутствие библиотеки libc.so.4
Симптомы и решение этой проблемы аналогично 32-битной версии. При запуске cgi-скриптов из веб сервер выдает ошибку Internal Server Error. При запуске скрипта из консоли и в логе apache можно увидеть сообщение:

Code:
/usr/libexec/ld-elf.so.1: Shared object "libc.so.4" not found


Решается следующей командой от root пользователя:

Code:
ln -s /usr/lib32/libc.so /usr/lib32/libc.so.4


Команда проверка:

Code:
ls -l /usr/lib32/libc.so.4

Требуемый результат от проверки:

Code:
lrwxr-xr-x  1 root  wheel  18 Jun 18 11:21 /usr/lib32/libc.so.4 -> /usr/lib32/libc.so



Также в топлисте members.cgi может потребовать библиотеку libm.so.2 (/usr/libexec/ld-elf.so.1: Shared object "libm.so.2" not found, required by "members.cgi")
Поступаем аналогично:

Code:
ln -s /usr/lib32/libm.so /usr/lib32/libm.so.2

DF Forum » Powered by YaBB 2.2.1!
YaBB © 2000-2008. Все права защищены.

Localization by mySOPROMAT.ru