Итак для начала на VMWare разворачиваю SLES10 SP2 (будет еще вариант со SLES9 SP3, SP4).
Делаю базовую настройку, как написано с соответствующей теме (Базовая настройка PostgreSQL 8.2.5 на linux).
Вытягиваю с http://bucardo.org последнюю версию bucardo. На тот момент это был Bucardo-3.0.9.tar.gz
Под postgres создаю язык:
CREATE LANGUAGE plpgsql;Кроме того, в доке написано, что база, которую будет использовать bucardo должна имень установленный язык plperlu:
Bucardo requires that all databases involved in the replication be running version 8.1 or greater, and that they have the Pl/Pgsql language installed. The database that Bucardo itself uses must have the Pl/Perlu language installed.
Когда опрелелюсь, какая будет база, создам язык.
Кроме того есть требования для perl и его модулей:
Bucardo runs as a series of Perl daemons, and requires version 5.8.3 of Perl or better.The following modules are also required to run Bucardo:
- DBI 1.51
- DBD::Pg 1.49
- *DBIx::Safe 1.2.4
- Moose 0.18
- IO::Handle 1.24
- Sys::Hostname 1.11
- Sys::Syslog
- Mail::Sendmail 0.79
- ExtUtils::MakeMaker 6.32
In order to run the test suite (highly recommended), the following modules are required:
- Test::Simple 0.30
- Test::More 0.61
- Test::Harness 2.03
- *Test::Dynamic 1.3.1
* These modules come bundled with Bucardo.
DBI 1.51 нашел через google (в YaST есть только 1.50)
DBD::Pg 1.49 нашел через google
Moose 0.18 нашел через google
IO::Handle 1.24 оказался проблемным модулем. Судя по моим поискам в cpan он входит в состав модуля IO, но ни в одном IO в cpan нет IO::Handle необходимой версии. Поэтому я вытянул IO-1.2301 (там в составе IO::Handle 1.27)
Sys::Hostname 1.11 вообще не нашел. Судя по cpan он есть в составе perl-5.8.8, который установлен у меня.
Sys::Syslog не имеет никаких требований по версии. Нашел на cpan.
Mail::Sendmail 0.79 Нашел на cpan.
ExtUtils::MakeMaker 6.32 Нашел на cpan.
Test::Simple 0.30 тоже оказался проблемным. Такой древней версии на cpan нет. Вытянул Test-Simple-0.80, надеюсь подойдет.
Test::More 0.61 проблемный. находится в составе Test::Simple. То есть будем использовать тот вариант, что был выкачан в предыдущем пакете.
Test::Harness 2.03 проблемный. Такой старючей версии на cpan нет. Вытянул последнюю стабильную версию из 2-й ветки Test-Harness-2.62
Осталось только проставить эти модули.
Сначала ставим вот эти:
DBI-1.51
ExtUtils-MakeMaker-6.32
IO-1.2301
Sys-Syslog-0.27
Test-Harness-2.62
Test-Simple-0.80
Mail-Sendmail-0.79
Они для своей установки больше ничего не требуют. Ставим следующим образом. Логинимся под непривилегированным пользователем:
root# su - alexsf
Распаковываем их, поочереди заходим в папку каждого и под непривелигированным пользователем выполняем:
alexsf> perl Makefile.PL
alexsf> make
alexsf> make test
Смотрим внимательно на сообщения. Главное, чтоб не требовало дополнительным модулей и тесты прошли удачно. Потом под root в каждой папке выполняем:
root# make install
Смотрим на сообщения. Если ошибок нет, то все проставилось нормально.
Ставим модуль Moose-0.18:
alexsf> make Makefile.PL
Warning: prerequisite Class::MOP 0.37 not found.
Warning: prerequisite Sub::Exporter 0.972 not found.
Warning: prerequisite Sub::Name 0.02 not found.
Warning: prerequisite Test::Exception 0.21 not found.
Warning: prerequisite Test::LongString 0 not found.
Writing Makefile for Moose
То есть нужно теперь достать модули из этого списка.
Class::MOP 0.37 на cpan.
Sub::Exporter 0.972 не нашел. Есть Sub-Exporter-0.980, его и качаю.
Sub::Name 0.02 на cpan.
Test::Exception 0.21 нету. Есть Test-Exception-0.27, его и качаю.
Test::LongString версия не ясна. Вытянул то, что нашел - Test-LongString-0.11.
Ставим в таком порядке:
Sub-Name-0.02
Test-LongString-0.11
Test-Exception-0.27 требует модуль Sub::Uplevel 0.18 (на cpan есть). Ставим его, потом ставим Test-Exception-0.27.
Ставим Class::MOP 0.37.
Ставим Sub-Exporter-0.980. Ему нехватает:
Warning: prerequisite Data::OptList 0.1 not found.
Warning: prerequisite Params::Util 0.14 not found.
Warning: prerequisite Sub::Install 0.92 not found.
Ищем...
Data::OptList 0.1 не нашел, нашел Data-OptList-0.103 на cpan. Его и тянем.
Params::Util 0.14 не нашел, нашел Params-Util-0.33 на cpan. Его и тянем.
Sub::Install 0.92 не нашел, нашел Sub-Install-0.924 на cpan. Его и тянем.
Ставим в таком порядке:
Sub-Install-0.924
Params-Util-0.33
Data-OptList-0.103
Ну и наконец ставим Sub-Exporter-0.980. Уф, уже запарился с этими модулями... Так, для чего мы все это делали??? А, да, ставим Moose-0.18.
Теперь ставим DBD-Pg-1.49. Получилось.
Таперь беремся за сам Bucardo. Распаковываем куда-нибудь архивчик Bucardo-3.0.9.tar.gz под непривилегированным пользователем. Поочереди захидим в папки
DBIx-Safe-1.2.4
Test-Dynamic-1.3.2
Bucardo-3.0.9
и проставляем перловские модули, будь они неладны... Они там ругаться будут на ошибки - игнорируем и ставим все равно.
Теперь создаем базу данных для bucardo.
root# mkdir /u02
root# chown postgres:postgres /u02
root# su - postgres
postgres> mkdir /u02/pgdata/bucardo -p
postgres> psql
postgres=# CREATE USER bucardo SUPERUSER;
postgres=# ALTER ROLE bucardo password 'bucardo';
postgres=# CREATE TABLESPACE bucardo OWNER bucardo LOCATION '/u02/pgdata/bucardo';
postgres=# CREATE DATABASE bucardo WITH ENCODING='UTF8' OWNER=bucardo TABLESPACE=bucardo;
postgres=# CREATE LANGUAGE plperlu;
...и получаем
ERROR: нет доступа к файлу "$libdir/plperl": Нет такого файла или каталога
Ну а кто говорил, что будет просто... Роем...
Подозреваю, что нужен пакет postgresql-pl версии 8.2.5.
Итак, на http://software.opensuse.org/search нашел и скачал 2 пакета:
postgresql-pl-8.2.4-2.nosrc.rpm
postgresql-plperl-8.2.4-2.i586.rpm
Оба для OpenSUSE 10.3, но на SLES10 SP2 встали нормально, с установленным postgresql 8.2.5. Что я буду делать с SLES9 пока не знаю... Итак, нам же нужно язык проставить...
root# su - postgres
postgres> psql
postgres=# CREATE LANGUAGE plperlu;
Готово... Ур-р-р-р-а-а-а-а!!!! предвариловка закончена, начинаем трахаться по серьезному...
Создаем схемы для bucardo. Для этого переходим в каталог Bucardo-3.0.9, откуда ставили соответствующий модуль perl, и выполняем:
root# su postgres
postgres> psql -f bucardo.schema -h 10.77.1.9 -U bucardo bucardo
, где 10.77.1.9 - ip адрес сервера postgres. В результате получаем:
CREATE SCHEMA
CREATE SCHEMA
SET
SET
SET
CREATE TABLE
CREATE INDEX
CREATE INDEX
ALTER TABLE
psql:bucardo.schema:57: ERROR: язык "plpgsql" не существует
ПОДСКАЗКА: Use CREATE LANGUAGE to load the language into the database.
Так, вроде языки сделал уже все...
Не, нифига, языки оказались в базе postgres, а надо, чтоб были в базе bucardo. Поэтому:
postgres> psql -h 10.77.1.9 -U bucardo bucardo
bucardo=# CREATE LANGUAGE plpgsql;
bucardo=# CREATE LANGUAGE plperlu;
bucardo=# DROP SCHEMA bucardo CASCADE;
bucardo=# DROP SCHEMA freezer CASCADE;
bucardo=# \q
postgres> psql -f bucardo.schema -h 10.77.1.9 -U bucardo bucardo
и, о чудо, скрипт отработал без ошибок!!!
Делаем тест, как написано в документации:
alexsf> time make test TEST_VERBOSE=1
/usr/bin/perl t/bucardo.test.helper
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(1, 'blib/lib', 'blib/arch')" t/*.t
t/01bc....Can't use string ("Test::Dynamic") as a HASH ref while "strict refs" in use at /usr/lib/perl5/site_perl/5.8.8/Test/Dynamic.pm line 30.
FAILED before any test output arrived
FAILED--1 test script could be run, alas--no output ever seen
make: *** [test_dynamic] Ошибка 255
real 0m0.250s
user 0m0.132s
sys 0m0.104s
Пробуем так:
alexsf> time make test TEST_VERBOSE=1 BUCARDO_TEST_NUKE_OKAY=1 BUCARDO_TESTBAIL=0 BUCARDO_KEEP_OLD_DEBUG=0
То же самое... Затык пока. Не знаю, забить на результаты теста и двигаться дальше, или разобраться???
Комментариев нет:
Отправить комментарий