Пакетирование Scribe (на Ubuntu 12.04)

28 Jun 2012


...

также см. старую страницу scribe_first_overview

Заворачиваем Scribe в deb-пакет, на ubuntu 12.04 precise

Ссылки

scribe на github’е https://github.com/facebook/scribe

компиляция scribe на ubuntu 12.04 http://ycavatars.blogspot.com/2012/05/build-scribe-on-ubuntu-1204.html

Подготовка

  • Установить и настроить pbuilder (см. pbuilder), в том числе и локальный репозиторий.
  • Собрать и положить в локальный репозиторий Thrift и fb303 (см. thrift packaging).

Исходники

На https://github.com/facebook/scribe/downloads дают архив с версией 2.2, но она не собирается, поэтому будем брать свежие исходники прямо из git’а.

> mkdir building_scribe
> cd building_scribe
> pwd 
/home/lena-san/building_scribe
> git clone https://github.com/facebook/scribe.git
> ls 
scribe

Если оставить как есть – в perl-пакете получаеются кривые пути (/usr/usr), как вариант – можно в configure сразу же исправить PERL_PREFIX="/usr/local" на PERL_PREFIX="/"

Сборка

> pwd 
/home/lena-san/building_scribe
> mv scribe scribe-2.2.1
> cd scribe-2.2.1
> pwd 
/home/lena-san/building_scribe/scribe-2.2.1
> ./bootstrap.sh
> dh_make --single --createorig
> ls debian 
changelog  copyright           emacsen-remove.ex   manpage.1.ex     menu.ex      preinst.ex     README.source     scribe.default.ex   watch.ex
compat     docs                emacsen-startup.ex  manpage.sgml.ex  postinst.ex  prerm.ex       rules             scribe.doc-base.EX
control    emacsen-install.ex  init.d.ex           manpage.xml.ex   postrm.ex    README.Debian  scribe.cron.d.ex  source

> echo '\n\noverride_dh_auto_configure:\n\tdh_auto_configure -- --with-thriftpath=/usr --with-fb303path=/usr CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -DBOOST_FILESYSTEM_VERSION=2" LIBS="-lboost_system -lboost_filesystem"\n' >> debian/rules

> perl -pi -e 's/^(Build-Depends:.*)$/$1, libevent-dev, libboost1.46-dev, libboost-system1.46-dev, libboost-filesystem1.46-dev, thrift-compiler, libthrift-dev, fb303, python-dev, fb303/' debian/control

> dpkg-buildpackage -S -us -uc
> ls ..
scribe-2.2.1  scribe_2.2.1-1.debian.tar.gz  scribe_2.2.1-1.dsc  scribe_2.2.1-1_source.changes  scribe_2.2.1.orig.tar.gz
> cd ..
> pwd 
/home/lena-san/building_scribe
> ~/bin/pbuilder-precise build scribe_2.2.1-1.dsc
> ls ~/pbuilder/result/scribe_2.2.1*
/home/lena-san/pbuilder/result/scribe_2.2.1-1_amd64.changes
/home/lena-san/pbuilder/result/scribe_2.2.1-1_amd64.deb
/home/lena-san/pbuilder/result/scribe_2.2.1-1.debian.tar.gz
/home/lena-san/pbuilder/result/scribe_2.2.1-1.dsc
/home/lena-san/pbuilder/result/scribe_2.2.1.orig.tar.gz

После установки

Может понадобиться установить $PYTHONPATH:

export PYTHONPATH='/usr/lib/python2.7/site-packages'

Разное

версия boost::filesystem

error: ‘class boost::filesystem3::directory_entry’ has no member named ‘filename’

Некоторые советуют брать более раннюю версию libboost: http://groups.google.com/group/scribe-server/browse_thread/thread/016083b3519a0485/d4f815576abfbb1a

I've success builded Scribe after I got this problem too. The core
problem is Boost changes it's filesystem module version from v2 to v3.
Before v1.46, it set filesystem2 by default, v1.46 is using
filesystem3 by default. Current Scribe only work with filesystem2. So
make sure you have only one Boost lib in your environment, remove
another like v1.33 install by yum, v1.46 in /usr/local/lib, cause
Scribe's build script will add some default path into gcc's libpath,
maybe you Scribe using wrong Boost lib.

My environment are:
CentOS 5.5
Boost 1.45.0
Thrift 0.5.0
fb303 r1084109
Scribe 2.2

Но лучше явно указать нужную версию: CPPFLAGS="-DBOOST_FILESYSTEM_VERSION=2"