FreeBSD/Проблемы установки

Материал из Lblss.ru
Перейти к: навигация, поиск

Содержание

clamav

При попытке обновить clamav получаю ошибку:

../libclamav/.libs/libclamav.so: undefined reference to `gethostbyname_r'
*** Error code 1

Решение найдено тут:

cd /usr/ports/security/clamav
change in Makefile
--enable-gethostbyname_r \
to
--disable-gethostbyname_r \

mc

При обновлении вывалилась ошибка сборки gio-fam-backend

/usr/bin/ld: cannot find -lgio-2.0
gmake: *** [libgiofam.la] Ошибка 1
*** Error code 2

Решение отсюда: пересобрать порт /usr/ports/devel/glib20 (что то много он там собирает...)


PHP и модули

php5-mysqli

Для установки расширения php5-mysqli на FreeBSD нужно пересобрать PHP. Для этого в /usr/ports/lang/php5/Makefile нужно добавить

--with-mysqli=/usr/local/bin/mysql_config

к переменной CONFIGURE_ARGS (почти в самом начале файла). Затем собрать и заново установить PHP (версия 5.2.11 и более ранние).

imagecreatefrompng()

При вызове функции imagecreatefrompng() PHP5.2 и PHP5.3 вываливается в кору. Пример:

$ php -r "imagecreatefrompng('/usr/local/www/apache22/icons/blank.png');"
Abort trap: 6 (core dumped)

Помогло принудительное обновление/пересборка png зависимых от него:

$ sudo portupgrade -rf png

php4-xslt

Ну не собрался у меня Sablotron, который используется в этом модуле. Вылетает с ошибкой несоответствия типов при компиляции. Как несколько лет назад, на версии 6.1 32-bit, так и на свежей 8.1 66-bit. И в том, и в другом случае установка из пакета.

Скачиваем пакет для 32-битной версии:

$ fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-stable/All/Sablot-1.0.3.tbz

Или для 64-битной:

$ fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-stable/All/Sablot-1.0.3.tbz

И устанавливаем:

$ sudo pkg_add Sablot-1.0.3.tbz

php5-pdo_mysql

Версии 5.3.3_4 и 5.3.4 не собираются, вываливаясь с ошибкой warning: passing argument 4 of 'add_assoc_string_ex' discards qualifiers from pointer target type

Решение отсюда: в файле /usr/ports/databases/php5-pdo_mysql/work/php-5.3.4/ext/pdo_mysql/mysql_statement.c заменяем в 134 (для версии 5.3.4) строке

#ifdef HAVE_MYSQL_STMT_PREPARE

на

#ifndef PDO_USE_MYSQLND

Удаляем файл /usr/ports/databases/php5-pdo_mysql/work/.configure_done.php5._usr_local и собираем и устанавливаем ручками: make && make deinstall && make install clean

Perl и модули

Image::Magick

Столкнулся на FreeBSD 6.1 в процессе обновления графических приблуд. При стандартной установке Image::Magick через perl -MCPAN -e shell сборка вылетает с ошибкой cc1: error: unrecognized command line option "-fopenmp". Гугление с текстом данной ошибки не дало результатов, однако, поиск по фразам вроде FreeBSD Image::Magick install вывел на эту страничку. Способ сработал, потому продублирую здесь.

Сначала устанавливаем ImageMagick:

$ cd /usr/ports/graphics/ImageMagick
$ sudo make install

Копируем директорию с файлами PerlMagick в свою домашнюю чтоб далее работать там:

$ cp -r work/ImageMagick-6.5.8-10/PerlMagick/ ~/perlmagick
$ cd ~/perlmagick/

Делаем резервную копию файла Makefile.PL

$ cp Makefile.PL Makefile.PL~

Правим Makefile.PL, добавляя правильные пути к библиотекам и к ImageMagick. Очевидно, Makefile.PL меняется от версии к версии (здесь пример с ImageMagick-nox11-6.5.8.10_1), потому пришлось поискать нужные строки, номера и содержимое которых несколько отличаются от статьи по ссылке (ссылка выше). Исправления выглядят так:

$ diff Makefile.PL Makefile.PL~
141,142c141,142
< my $INC_magick = '-I/usr/local/include/ImageMagick -I../ -I.. -I/usr/local/include/graphviz -I/usr/local/include/freetype2 -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include/libxml2 -I"' . $Config{'usrinc'} . '/ImageMagick"';
< my $LIBS_magick = '-L/usr/local/lib -L../magick/.libs -lMagickCore -lperl -lm';
---
> my $INC_magick = '-I../ -I.. -I/usr/local/include/graphviz -I/usr/local/include/freetype2 -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include/libxml2 -I"' . $Config{'usrinc'} . '/ImageMagick"';
> my $LIBS_magick = '-L../magick/.libs -lMagickCore -lperl -lm';  

Делаем Makefile:

$ perl Makefile.PL

Если всё нормально, получим сообщение

Writing Makefile for Image::Magick

Далее собираем и устанавливаем:

$ make
$ sudo make install

Когда установка пройдёт нормально, прибираемся:

$ cd -
$ sudo make clean
$ cd 
$ rm -rf perlmagick


PyICQt & python2.6

Перенесено сюда.

Apache

suexec

После обновления Апача в связке Apache + suexec + fastcgi перестали работать скрипты PHP. Браузер висит долго, в логах ошибки такого вида:

httpd-error.log

FastCGI: (dynamic) server "/usr/home/ase/www/cgi-bin/php.sh" (pid 37367) terminated by calling exit with status '0'

httpd-suexec.log

cannot get docroot information (/usr/local/www/data)

Но... указанной директории /usr/local/www/data у нас нет, сайты юзеров живут в /home.

В файл /usr/ports/www/apache22/Makefile добавляем строку:

SUEXEC_DOCROOT=/home
  • Вообще, эту строку можно нужно прописать до начала установки/обновления Apache в файл /etc/make.conf.

И заново перекомпилируем/переустанавливаем Апача

# portupgrade -f apache
Персональные инструменты