DF Service

Professional Web Software Development

Russian | English      

  ГлавнаяПоискВходРегистрация  
 
Страниц: 1
Послать Тему Печать
Установка скриптов под 32/64- битные ОС FreeBSD 5+ (Прочитано 16598 раз)
DVA
YaBB Administrator
DFService
*****
Вне Форума

Support

Сообщений: 91
MSK
Пол: male
Установка скриптов под 32/64- битные ОС FreeBSD 5+
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) выполняется следующая комманда:
Код:
ln -s /usr/lib/libc.so /usr/lib/libc.so.4 


Код:
ln -s /usr/lib/libc_r.so /usr/lib/libc_r.so.4 



Если при попытке создать ссылку, возникает ошибка:
Код:
ln: /usr/lib/libc.so.4: File exists 


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


Смотрим куда  ссылается libc.so.4 и есть ли файл на который ссылается libc.so.4:
Код:
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).
Удаляем старый файл:
Код:
rm /usr/lib/libc.so.4 


Создаем новую символическую ссылку:
Код:
ln -s /usr/lib/libc.so /usr/lib/libc.so.4 



Наверх
 
« Последняя редакция: 03/17/11 :: 15:04:50 от DVA »  

RTFM
Посмотреть Профиль WWW   IP записан
DVA
YaBB Administrator
DFService
*****
Вне Форума

Support

Сообщений: 91
MSK
Пол: male
Re: Установка скриптов под 32 битные ОС FreeBSD 5+
Ответ #1 - 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. Если запустить скрипт из консоли то можно увидеть сообщение:
Код:
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 можно увидеть сообщение:
Код:
/usr/libexec/ld-elf.so.1: Shared object "libc.so.4" not found 



Решается следующей командой от root пользователя:
Код:
ln -s /usr/lib32/libc.so /usr/lib32/libc.so.4 



Команда проверка:
Код:
ls -l /usr/lib32/libc.so.4 


Требуемый результат от проверки:
Код:
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")
Поступаем аналогично:
Код:
ln -s /usr/lib32/libm.so /usr/lib32/libm.so.2 

Наверх
« Последняя редакция: 06/18/09 :: 17:59:51 от DVA »  

sysinstall.png

RTFM
Посмотреть Профиль WWW   IP записан
Страниц: 1
Послать Тему Печать