Устанавливать библиотеку Fast Artificial Neural Network будем на операционную систему Debian (один из дистрибутивов Linux). Произвести установку библиотеки можно двумя способами.
Первый метод конечно облегчает немного установку, но это того не стоит. Вот с чем мне собственно пришлось столкнуться. Когда мне понадобилось произвести установку на Debian. Я нашел руководство по установке, в котором описывался первый метод. Бегло прочитав его и уже успев обрадоваться (как оказалось в дальнейшем, ненадолго), я принялся выполнять в точности все этапы по установке библиотеки, описанные в руководстве. Нюансов не возникло. Вроде библиотека установилась и расширение для PHP тоже. Казалось, что все должно было работать. Но не тут то было. Сначала я подключил нейронную сеть, которую использовал на denwere. Но результат оказался нулевым. Оказалось, что не проходила даже инициализация самой библиотеки. Перечитав еще раз руководство по установке и аналогичные руководства с других ресурсов, я понимал, что все должно работать. Но в итоге ничего не работало. Два дня у меня ушло на решение проблемы с установкой. Когда все возможные варианты (а их было немного) были исчерпаны у меня “пронеслась” мысль, а что если дистрибутив из репозитариев самой библиотеки “битый”. И как оказалось в дальнейшем, так оно и было. Поэтому рекомендую вам использовать второй метод установки, в итоге все будет работать, и ваши нервы будут в полном порядке.
Для установки нам нужны следующие инструменты:
Если первые два инструмента могут уже быть проинсталлированы, то третий, скорее всего нет. Но мы на всякий случай проверим все три.
Ну вот, как и следовало ожидать, у нас действительно ничего не проинсталлировано. До начала установки, желательно произвести обновление репозиториев. Для этого воспользуемся командой:
Теперь необходимо установить отсутствовавшие инструментарии:
Далее необходимо получить информацию об архитектуре, чтобы знать какие пакеты библиотеки Fast Artificial Neural Network (хотя Debian не даст уставить пакеты с неподходящей архитектурой) устанавливать. Для этого используем команду:
По результату видим, что сервер имеет архитектуру:
Переходим в каталог /usr/local/src и скачиваем для архитектуры i686 следующие пакеты:
Убедимся все ли скачалось:
Теперь их необходимо установить в определенном порядке:
Для того чтобы приступить установке расширения, его необходимо скачать:
Проверим или архив на месте:
Далее его необходимо распаковать:
Затем перейдем в каталог /usr/local/src/fann-0.1.1
Все, осталось только все скомпилировать. Для начала необходимо выполнить команду phpize. Которая подготовит окружение PHP-расширения.
Далее необходимо запустить скрипт configure.
Все, сейчас осталось собрать PHP расширение программой make.
Если вы увидите нечто похожее на следующие строки:
то нужно в файле php_fann.h закомментировать строку 28 #define PHP_FANN_OO 1. И повторить вызов программы make.
Все, расширение собрано и осталось его проинсталлировать:
Если вы добавили расширение в /etc/php5/cli/php.ini, то можно посмотреть подключен ли модуль следующей командой:
Я лично стараюсь синхронизировать настройки сразу везде:
Для того чтобы проверить работу библиотеки, требуется запустить модуль demo.php. Он находиться в каталоге /usr/local/src/fann-0.1.1.
Еще есть небольшой один нюанс. Возможно вы не сможете использовать сеть обученную в другой версии библиотеки Fast Artificial Neural Network, с этой библиотекой. Придется под Linux ее переобучать. Но ничего страшного в этом нет.
- установка из репозиториев;
- установка всех элементов в отдельности.
Первый метод конечно облегчает немного установку, но это того не стоит. Вот с чем мне собственно пришлось столкнуться. Когда мне понадобилось произвести установку на Debian. Я нашел руководство по установке, в котором описывался первый метод. Бегло прочитав его и уже успев обрадоваться (как оказалось в дальнейшем, ненадолго), я принялся выполнять в точности все этапы по установке библиотеки, описанные в руководстве. Нюансов не возникло. Вроде библиотека установилась и расширение для PHP тоже. Казалось, что все должно было работать. Но не тут то было. Сначала я подключил нейронную сеть, которую использовал на denwere. Но результат оказался нулевым. Оказалось, что не проходила даже инициализация самой библиотеки. Перечитав еще раз руководство по установке и аналогичные руководства с других ресурсов, я понимал, что все должно работать. Но в итоге ничего не работало. Два дня у меня ушло на решение проблемы с установкой. Когда все возможные варианты (а их было немного) были исчерпаны у меня “пронеслась” мысль, а что если дистрибутив из репозитариев самой библиотеки “битый”. И как оказалось в дальнейшем, так оно и было. Поэтому рекомендую вам использовать второй метод установки, в итоге все будет работать, и ваши нервы будут в полном порядке.
Начало установки
Для установки нам нужны следующие инструменты:
- программа make;
- компилятор gcc;
- утилита phpize из пакета php5-dev.
Если первые два инструмента могут уже быть проинсталлированы, то третий, скорее всего нет. Но мы на всякий случай проверим все три.
dpkg -l | grep make ii makedev 2.3.1-88 creates device files in /dev dpkg -l | grep gcc ii gcc-3.3-base 1:3.3.6-15 The GNU Compiler Collection (base package) ii gcc-4.1-base 4.1.2-25 The GNU Compiler Collection (base package) ii gcc-4.3-base 4.3.2-1.1 The GNU Compiler Collection (base package) ii libgcc1 1:4.3.2-1.1 GCC support library dpkg -l | grep php5-dev
Ну вот, как и следовало ожидать, у нас действительно ничего не проинсталлировано. До начала установки, желательно произвести обновление репозиториев. Для этого воспользуемся командой:
apt-get update
Теперь необходимо установить отсутствовавшие инструментарии:
apt-get install make apt-get install gcc apt-get install php5-dev
Далее необходимо получить информацию об архитектуре, чтобы знать какие пакеты библиотеки Fast Artificial Neural Network (хотя Debian не даст уставить пакеты с неподходящей архитектурой) устанавливать. Для этого используем команду:
uname –m
По результату видим, что сервер имеет архитектуру:
i686
Переходим в каталог /usr/local/src и скачиваем для архитектуры i686 следующие пакеты:
cd /usr/local/src wget http://ubuntu.mirror.cambrium.nl/ubuntu//pool/universe/libf/libfann1/ libfann1_1.2.0-1_i386.deb wget http://ubuntu.mirror.cambrium.nl/ubuntu//pool/universe/libf/libfann1/ libfann1-dev_1.2.0-1_i386.deb
Убедимся все ли скачалось:
ls -1 libfann1_1.2.0-1_i386.deb libfann1-dev_1.2.0-1_i386.deb
Теперь их необходимо установить в определенном порядке:
dpkg -i libfann1_1.2.0-1_i386.deb dpkg -i libfann1-dev_1.2.0-1_i386.deb
Установка расширения для PHP
Для того чтобы приступить установке расширения, его необходимо скачать:
wget http://pecl.php.net/get/fann
Проверим или архив на месте:
ls -1 fann
Далее его необходимо распаковать:
tar xvfz fann package.xml fann-0.1.1/config.m4 fann-0.1.1/fann.c fann-0.1.1/php_fann.h fann-0.1.1/demo.php fann-0.1.1/CREDITS fann-0.1.1/EXPERIMENTAL
Затем перейдем в каталог /usr/local/src/fann-0.1.1
cd fann-0.1.1
Все, осталось только все скомпилировать. Для начала необходимо выполнить команду phpize. Которая подготовит окружение PHP-расширения.
phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626
Далее необходимо запустить скрипт configure.
./configure
Все, сейчас осталось собрать PHP расширение программой make.
make
Если вы увидите нечто похожее на следующие строки:
fann.c:393: error: 'zif_fannOO___set' undeclared (first use in this function) fann.c:393: error: (Each undeclared identifier is reported only once fann.c:393: error: for each function it appears in.) fann.c:403: error: Б-?zif_fannOO___getБ-? undeclared (first use in this function)
то нужно в файле php_fann.h закомментировать строку 28 #define PHP_FANN_OO 1. И повторить вызов программы make.
make libtool: install: cp ./.libs/fann.so /usr/local/src/fann-0.1.1/modules/fann.so libtool: install: cp ./.libs/fann.lai /usr/local/src/fann-0.1.1/modules/fann.la libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: /sbin" ldconfig -n /usr/local/src/fann-0.1.1/modules ---------------------------------------------------------------------- Libraries have been installed in: /usr/local/src/fann-0.1.1/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- Build complete. Don't forget to run 'make test'.
Все, расширение собрано и осталось его проинсталлировать:
make install Installing shared extensions: /usr/lib/php5/20090626/
Если вы добавили расширение в /etc/php5/cli/php.ini, то можно посмотреть подключен ли модуль следующей командой:
php -m | grep fann fann
Я лично стараюсь синхронизировать настройки сразу везде:
- /etc/php5/apache2/php.ini;
- /etc/php5/cgi/ php.ini;
- /etc/php5/cli/ php.ini.
Для того чтобы проверить работу библиотеки, требуется запустить модуль demo.php. Он находиться в каталоге /usr/local/src/fann-0.1.1.
Еще есть небольшой один нюанс. Возможно вы не сможете использовать сеть обученную в другой версии библиотеки Fast Artificial Neural Network, с этой библиотекой. Придется под Linux ее переобучать. Но ничего страшного в этом нет.