В данном примере описаны некоторые особенности установки Contenido на Linux на примере Ubuntu 12.04.5 LTS (GNU/Linux 3.13.0-53-generic x86_64) в минимальной конфигурации.
Ubuntu
Для подготовки системы к установки понадобятся права администратора. Вот список действий, которые пришлось совершить на Ubuntu, чтобы развернуть инсталляцию Contenido.
1. Создать пользователя с домашним каталогом
В том не было ничего неожиданного, кроме того, что у созданного по умолчанию пользователя не оказалось домашнего каталога. Но, возможно, это особенность той виртуалки, к которой удалось получить доступ.
2. Настроить профиль пользователя
Привычка работать с bash - ничего с ней не поделаешь – пришлось доустановить bash и прописать .bash_profile. Это не обязательно, но какой-то профиль все равно должен быть, так как для нормальной установки необходимо установить
umask 002
3. Установить subversion
Понятно, что без svn инсталлятор просто не развернуть, если только руками притащить исходники и вручную внести несколько исправлений в инсталляционный config.mk.
sudo apt-get install subversion
4. Установить gmake
Все сборочные файлы Contenido написаны под gmake.
sudo apt-get install make
sudo apt-get install gmake
5. Установить gcc
sudo apt-get install gcc
6. Установить patch
sudo apt-get install patch
7. libperl.so
Perl в системе был установлен, версия 5.14.2, сборка под данной версией осуществляется без проблем. Но при сборке самого проблемного модуля: Apache 1.3 линковщик искал и не находил библиотеку libperl.so. На всякий случай был установлен пакет libperl,
sudo apt-cache search libperl
sudo apt-get install libperl5.XX
XX - это найденная в системе версия Perl, в нашем случае 5.14. Но библиотеку libperl.so этот пакет не установил. Установлена она была вместе с dev-версией:
sudo apt-cache install libperl-dev
Еще одна проблема возникла в процессе установки инсталляции, к которой было получено вот такое сообщение об ошибке:
************* WARNING *************
Your Perl is configured to link against libgdbm,
but libgdbm.so was not found.
You could just symlink it to /usr/lib/x86_64-linux-gnu/libgdbm.so.3.0.0
************* WARNING *************
Если таковое случилось, рецепт указан в самом сообщении – найти или доустановить libgdbm.so и сделать симлинк к библиотеке, примерно так:
sudo ln -s /usr/lib/x86_64-linux-gnu/libgdbm.so.3.0.0 /usr/lib/x86_64-linux-gnu/libgdbm.so
8. Net::SSLeay, Crypt::SSLeay
Эти две библиотеки отказались собираться из-за найденных несовместимостей в компиляторах, использованных при сборке Perl, системной библиотеки шифрования и данных двух модулей. Вывод - собрать глобально:
sudo apt-get install libnet-ssleay-perl
sudo apt-get install libcrypt-ssleay-perl
В процессе установки в случае конфликта версий выбрать [S]kip!
9. Клиент постгреса psql
sudo apt-cache search postgresql-client
sudo apt-get install postgresql-client-X.X
X.X - версия PostgreSQL, которую вы собираетесь использовать для проектов и которая будет найдена в пакетах.
10. Драйвер Постгреса тоже должен быть установлен глобально
sudo apt-get install libdbd-pg-perl
11. Установить глобально ImageMagick
Хоть тушкой, хоть чучелом, но поставить. Идеально – без X11 и в соответствии с рекомендациями. Но в тестируемой системе пришлось ставить пакет полностью:
sudo apt-get install imagemagick
12. Linux::Pid
Для работы Apache::SizeLimit оказался необходим Linux::Pid. Порт наиболее последней версии (0.04) был добавлен в дистрибутив, соответствующее правило было создано в конфигах инсталляции. Но если вдруг по какой-то причине в процессе выполнения make install данный порт не будет установлен, придется сделать это вручную:
make port_install PORT=Linux-Pid
в корне инсталляции.
13. nging
Здесь мы уже выходим за рамки установки самой Contenido, простое напоминание - надо установить, настроить и запустить nginx.
14. Далее везде
После всех предварительных действий можно приступать к установке (см. Установка, Развертывание проекта и далее везде). Установка в любом случае потребует пристального внимания.
Возможные проблемы
Естественно, при установке на других версиях Linux вообще и Ubuntu, в частности, на других версиях Perl и gcc возникнут какие-то еще казусы. Основной совет, который можно дать - смотреть, на чем сломалось, чего не хватило для установки и, по возможности, доставить ЭТО в систему. И – обязательно! – написать нам. Как в случае, если НЕ удалось решить проблему, так и в случае, если удалось.
CentOS
На представленной CentOS в качестве программного менеджера использовался yum. Почти все вышеперечисленные рекомендации остались верны с поправкой на формат вызова менеджера и библиотек. Однако, добавились и свои чудесатости:
- Библиотеки Perl развернуты без учета каталога версии (видимо, не предполагается использование сразу нескольких версий Perl в системе)
- Добавились библиотеки, которые необходимо собирать заранее
Пункты с 1 по 6
Совершенно аналогичны предыдущему разделу.
7. Дополнительные библиотеки
sudo yum install perl-Tk-devel.x86_64
sudo yum install perl-Module-Build-XSUtil.noarch
sudo yum install perl-XML-Parser.x86_64
При установке XML::Parser в момент развертывания инсталляции, соответственно, необходимо отказаться от установки в пользу системного модуля.
Пункты с 8 по 12
Аналогичны предыдущему разделу. ImageMagick также пришлось ставить со всей X-оберткой.
13. Проблема при установке Apache
При установке apache столкнулись с попыткой найти скрипт xsubpp; по документации эту утилиты ставит вместе с собой ExtUtils::MakeMaker или Module::Build. И кто-то из них этот скрипт честно поставил, но совершенно не туда, где его искал апач. Вылечилось установкой симлинка:
sudo ln -s /usr/bin/xsubpp /usr/share/perl5/ExtUtils/