https://github.com/couchbase/tlm
Смотрим, ничего не понимаем, ужасаемся, читаем эту заметку.
Предварительно подключаем epel для centos.
гуглосинкер (repo)
http://source.android.com/source/initializing.html
http://source.android.com/source/downloading.html
Нужен, чтобы собрать всю эту кашу реп в подобие цельного решения, и чтобы это всё потом смогло собраться.
Самый простой вариант:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
тут выбрать нужную ветку
https://github.com/couchbase/manifest
4.x == sherlock, 4.5 == watson
при этом в released/ будут конкретные сборки
Имеет смысл подготовить lsb_release, без него устанавливать зависимости - та ещё морока.
yum provides "*/lsb_release"
и как вариант
yum install redhat-lsb-core
(просто redhat-lsb поставит сотню пакетов, включая графику, что на сервере совсем не нужно)
Если уже запускали make - чистимся. rm -rf build или просто make clean уровнем выше build-а.
Если хочется самому возиться с версиями, ещё ставим
curl-devel, openssl-devel, libevent, libicu-devel, icu, snappy-devel.x86_64, v8-devel, golang, gperftools-libs.x86_64 (для 3- ветки, в 4 используется jemalloc)... Дальше был поднят lsb, он сам всё стянул.
Также были доставлены gcc 4.9 и python 2.7.
Активированы.
Дальше примерно так
$ mkdir couchbase
$ cd couchbase
$ repo init -u git://github.com/couchbase/manifest.git -m <branch_name>
в том числе именем бранча может быть released/4.1.1.xml
$ repo sync
$ make PREFIX=/opt/couchbase
или так, как пример кастомизации
make PREFIX=/opt/couchbase CMAKE_PREFIX_PATH="/opt/couchbase" EXTRA_CMAKE_OPTIONS='-D PRODUCT_VERSION="4.1.1-1"'
впрочем, PRODUCT_VERSION и так выносится на уровень PREFIX.
Как раз тот случай, когда компилировать и собирать нужно на отдельном сервере, от просто юзера, чтобы не словить потом на свою Ж проблем. Попытка сборки данного "поделия" выливается в массу радостей, примеры:
- - хародкодед-пути.
grep -rl "/home/builder/couchbase/" install/|wc -l
510
- - невозможность сделать изолированный build dir, так как еще на стадии билда оно в PREFIX пишет вспомогательные утилиты
- - make в корне одновременно делает и make install, молча и без спроса
- - рекомендованный рецепт "cd build && cmake -D (...) .. && make" - просто не рабочий, так как после repo sync или make clean просто нет никакого build, а его сборка простым make даст все радости выше
- - на любой чих крайне рекомендуется делать в корне make clean, иначе потом получается каша версий и настроек, плюс очищать каталог, который будет задан в PREFIX.
Как итог - компилируем через простой make в /opt/couchbase, выцепляем из старого пакета couchbase-init.d, всякие pre и post скрипты, также можно bin/install взять из готовой сборки. Тарим /opt/couchbase. Далее пишем спек, который просто распакует тар, добавит инит скрипт, сделает пре и пост стадии, пропишет файлы в систему. Всё.
pre и post выцепляется из готового пакета так:
$ rpm -q --scripts -p couchbase-server*.rpm
Ошибки
Для centos 6 будет ошибка
$ repo init
fatal: git 1.7.2 or later required
потому что штатно идёт 1.7.1, нужно обновить, например из rpmforge, оно же
http://pkgs.repoforge.org/git/
Если качать руками, то надо качать и ставить пакеты git perl-YAML subversion-perl perl-Git subversion
Может выпадать ошибка
-- Found v8 in /usr/include : /usr/lib64/libv8.so
CMake Error at tlm/cmake/Modules/FindCouchbaseV8.cmake:45 (MESSAGE):
Failed to build and run program to check V8 version (exit code )
Call Stack (most recent call first):
CMakeLists.txt:60 (INCLUDE)
Попробовать собрать более старую версию кауча или обновлять V8
Для сборки 4 ветки кауча вероятно требуется gcc >= 4.9 (проверить)
Если делать make test, то могут быть failed тесты, тогда поможет cd build/couchdb; ctest --verbose (для начала пересобрать всё с нуля при активированном python 2.7)
extracting debug info from /home/builder/rpmbuild/BUILDROOT/ringme-couchbase-server-4.1.1-1.el6.x86_64/opt/couchbase/bin/generate_cert
/usr/lib/rpm/debugedit: /home/builder/rpmbuild/BUILDROOT/ringme-couchbase-server-4.1.1-1.el6.x86_64/opt/couchbase/bin/generate_cert: Unknown debugging section .debug_gdb_scripts
*** ERROR: No build ID note found in /home/builder/rpmbuild/BUILDROOT/ringme-couchbase-server-4.1.1-1.el6.x86_64/opt/couchbase/bin/generate_cert
Комментариев нет:
Отправить комментарий