
Настройка Macbook'a для web-разработки на perl'e
Не на все ПО приведены ссылки, т.к. легко ищется в гугле. Это небольшой конспект по установке. Написан он после того, как все удачно поставилось, поэтому описаны только основные проблемы и их решения.
1. Начать надо с установки Xcode через AppStore. Для этого прийдется зарегистрироваться там в качестве разработчика.
Дальше надо запустить Xcode и в настройках Xcode / Preferences / Downloads / Components установить Command Line Tools. В него входят make и прочие необходимые штуки.
2. Скачать XAMPP http://xampp.en.softonic.com/mac, установить
3. Дальше удобнее будет ставить ПО в терминале iTerm (качается бесплатно в интернете), чем в стандартном, т.к. в нем поддерживается мышка в midnight commander (mc). mc - это аналог far'a, total commander и прочих.
mc для mac'a можно скачать пакетом здесь: http://www.papasha.kiev.ua/2009/11/midnight-commander-for-mac-os-x.html. Встречаются варианты скомпилировать из исходников, но так проще. В дополнение к mc удобно пользоваться muCommander'ом (тоже бесплатная программка) для ftp, samba и т.д.
Многие вещи удобно ставить через MacPorts из командной строки.
4. Разные зависимости, которые требуются ImageMagick и GD:
sudo port install ghostscript
sudo port install freetype
sudo port install png
и еще несколько… imagemagick сам расскажет при установке
Часть из низ не встали через port, пришлось компнилировать:
Install pkg-config (pkg-config Wiki – FrontPage)
curl -L http://pkgconfig.freedesktop.org/releases/pkg-config-0.25.tar.gz -o pkg-config-0.25.tar.gz
tar -xf pkg-config-0.25.tar.gz
cd pkg-config-0.25
./configure CC="gcc -arch i386 -arch x86_64" CXX="g++ -arch i386 -arch x86_64" CPP="gcc -E" CXXCPP="g++ -E"
make $PAR
sudo make install
cd -
Install gettext (gettext - GNU Project - Free Software Foundation (FSF))
curl -L http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.1.1.tar.gz -o gettext-0.18.1.1.tar.gz
tar -xf gettext-0.18.1.1.tar.gz
cd gettext-0.18.1.1
./configure CC="gcc -arch i386 -arch x86_64" CXX="g++ -arch i386 -arch x86_64" CPP="gcc -E" CXXCPP="g++ -E"
make $PAR
sudo make install
cd -
Install glib2 (ftp.gnome.org)
curl -L http://ftp.gnome.org/pub/gnome/sources/glib/2.27/glib-2.27.0.tar.bz2 -o glib-2.27.0.tar.bz2
tar -xf glib-2.27.0.tar.bz2
cd glib-2.27.0
./configure --with-libiconv=native
echo '--- glib-2.27.0-orig/glib/gconvert.c2010-09-17 17:33:50.000000000 -0500' > glib.patch
echo '+++ glib-2.27.0/glib/gconvert.c 2010-10-27 00:01:39.000000000 -0500' >> glib.patch
echo '@@ -61,9 +61,6 @@' >> glib.patch
echo ' #if defined(USE_LIBICONV_GNU) && !defined (_LIBICONV_H)' >> glib.patch
echo ' #error GNU libiconv in use but included iconv.h not from libiconv' >> glib.patch
echo ' #endif' >> glib.patch
echo '-#if !defined(USE_LIBICONV_GNU) && defined (_LIBICONV_H)' >> glib.patch
echo '-#error GNU libiconv not in use but included iconv.h is from libiconv' >> glib.patch
echo '-#endif' >> glib.patch
echo ' ' >> glib.patch
echo ' /**' >> glib.patch
echo ' * SECTION:conversions' >> glib.patch
patch -p1 < glib.patch
make
sudo make install
make clean
./configure CC="gcc -arch i386" CXX="g++ -arch i386" CPP="gcc -E" CXXCPP="g++ -E" --with-libiconv=native
make $PAR
lipo -create gio/.libs/libgio-2.0.0.dylib /usr/local/lib/libgio-2.0.0.dylib -output libgio-2.0.0.dylib
lipo -create glib/.libs/libglib-2.0.0.dylib /usr/local/lib/libglib-2.0.0.dylib -output libglib-2.0.0.dylib
lipo -create gmodule/.libs/libgmodule-2.0.0.dylib /usr/local/lib/libgmodule-2.0.0.dylib -output libgmodule-2.0.0.dylib
lipo -create gobject/.libs/libgobject-2.0.0.dylib /usr/local/lib/libgobject-2.0.0.dylib -output libgobject-2.0.0.dylib
lipo -create gthread/.libs/libgthread-2.0.0.dylib /usr/local/lib/libgthread-2.0.0.dylib -output libgthread-2.0.0.dylib
sudo mv libgio-2.0.0.dylib /usr/local/lib/libgio-2.0.0.dylib
sudo mv libglib-2.0.0.dylib /usr/local/lib/libglib-2.0.0.dylib
sudo mv libgmodule-2.0.0.dylib /usr/local/lib/libgmodule-2.0.0.dylib
sudo mv libgobject-2.0.0.dylib /usr/local/lib/libgobject-2.0.0.dylib
sudo mv libgthread-2.0.0.dylib /usr/local/lib/libgthread-2.0.0.dylib
cd -
4. ImageMagick & PerlMagick
Важно скачать одинаковые версии, например, если ImageMagick-6.7.6-5.tar.gz, то PerlMagick должен быть 6.76.
ImageMagick рекомендуется ставить через macports:
sudo port install ImageMagick
Но у меня повылазили ошибки и пришлось поставить вручную. Для этого надо просто скопировать файлы из архива с исходниками в нужное место и настроить переменные:
export MAGICK_HOME="$HOME/ImageMagick-6.7.6"
export PATH="$MAGICK_HOME/bin:$PATH"
export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib/"
5. GD
sudo port install gd2
perl -MCPAN -e shell
install GD
6. mysql
Важно, чтобы mysql был 64-битным, в противном случае не поставиться DBD::mysql.
Пришлось скачать отдельный (от XAMPP) mysql.
Запускается и выключается так:
sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop
Дальше настройки с http://makegood.ru/tools/mysql-and-phpmyadmin-on-mac/:
1) В /etc/my.cnf добавить:
[mysqld]
basedir=/usr/local/mysql
2) необходимо дать пользователю _mysql права на чтение и запись в папку /tmp:
sudo chown _mysql:staff /tmp
3) nano ~/.profile
Добавляем строку:
export PATH=/usr/local/mysql/bin:$PATH
4) выполнить
sudo chown -R root:wheel /Library/StartupItems/MySQLCOM
sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
все mysql должна заработать
7. DBD::mysql
Скорее всего через CPAN DBD::mysql не поставиться. Вообще встречается много описаний разных проблем, возникающих при установке этого модуля на mac.
perl -MCPAN -e shell
install DBI
install Data-Dumper
install Data-ShowTable
Во время установки dbd::mysql он запрашивает настройки сервера у mysql_config. Если эта штука не доступна, то надо добавить пусть к этому файлу в PATH:
export PATH="$PATH:/usr/local/mysq/bin"
Дальше надо скачать с cpan.perl.org последнюю версию модуля dbd::mysql, разрахивироваться его и этой папке выполнить:
perl Makefile.PL --testuser=root
make
1) ошибка "make: *** [dbdimp.o] Error 2" надо удалить автозаменой все вхождения строки "-arch ppc" в файле Makefile.
2) ошибка "Library not loaded: libmysqlclient" надо выполнить:
cd /usr/local/lib
sudo ln -s/usr/local/mysql/lib/*.dylib .
make install
должно работать
8. Установка отладчика
perl -MCPAN -e shell
install Tk
install Devel::ptkdb
Правда, так не поставилось, т.к. висли тесты у Tk. Пришлось скачать и поставить руками, мимо тестов.
Далее потребуется некоторая настройка:
export PATH="$PATH:/usr/X11R6/bin"
export DISPLAY="127.0.0.1:0.0"
тоже самое можно написать и в скрипте:
BEGIN{
$ENV{PATH}="...";
$ENV{DISPLAY}="…";
}
Дальше надо запустить Программы/Утилиты/X11, в меню X11/Настройки/Безопасность убрать галочку "Проверять аутентификации подключений".
и в консоли
sudo xhost +
После этого должен запускаться отладчик:
#!/opt/local/bin/perl -d:ptkdb
...
9. Git
качается и без проблем ставиться готовый пакет с сайта разработчика
10. Настройка apache
По-умолчанию perl подключен как модуль апача, а это не удобно для разработки и отладки. Поэтому надо закомментировать в файле etc/extra/httpd-xampp.conf:
#LoadModule perl_module modules/mod_perl.so
В логах вылезала ошибка:
[emerg] (13)Permission denied: couldn't grab the accept mutex
Чтобы ее устранить, потребовалось дописать
AcceptMutex posixsem
11. eclipse - с ним все хорошо :)