Пакетирование thrift'а

26 Jun 2012


...

Пересказ инструкции http://birchroad.wordpress.com/2011/03/15/installing-apache-thrift-in-ubuntu/ + небольшие дополнения + fb303.

Подготовить pbuilder

см. страницу pbuilder

Исходники

Идем на http://thrift.apache.org/download/
там переходим по ссылке для актуальной версии, и нам говорят url: http://www.sai.msu.su/apache/thrift/0.8.0/thrift-0.8.0.tar.gz

~> mkdir building_thrift
~> cd building_thrift
~/building_thrift> wget 'http://www.sai.msu.su/apache/thrift/0.8.0/thrift-0.8.0.tar.gz'
~/building_thrift> ls
thrift-0.8.0.tar.gz

Сборка

~/building_thrift> ls
thrift-0.8.0.tar.gz
~/building_thrift> mkdir thrift
~/building_thrift> cd thrift
~/building_thrift/thrift> tar -xzf ../thrift-0.8.0.tar.gz
~/building_thrift/thrift> cd thrift-0.8.0
~/building_thrift/thrift/thrift-0.8.0> perl -pi -e 's/libmono-dev/libmono-2.0-dev/' ./contrib/debian/control        # Потому что libmono-dev уже нет

Если ломается с
The following packages have unmet dependencies: pbuilder-satisfydepends-dummy : Depends: python-support which is a virtual package.
– добавить в конфиг “компоненты universe и multiverse”, см. страницу pbuilder.

Продолжаем:

~/building_thrift/thrift/thrift-0.8.0> ln -s contrib/debian debian
~/building_thrift/thrift/thrift-0.8.0> dpkg-buildpackage -S -us -uc
~/building_thrift/thrift/thrift-0.8.0> ls ..                       
thrift-0.8.0  thrift_0.8.0.dsc  thrift_0.8.0_source.changes  thrift_0.8.0.tar.gz
~/building_thrift/thrift/thrift-0.8.0> cd ..
~/building_thrift/thrift> ~/bin/pbuilder-precise build *.dsc
<...ждем и смотрим на вывод...>
~/building_thrift/thrift> ls ~/pbuilder/result
libthrift0_0.8.0_amd64.deb      libthrift-java_0.8.0_all.deb    python-thrift_0.8.0_amd64.deb      thrift_0.8.0.tar.gz
libthrift-cil_0.8.0_all.deb     libthrift-perl_0.8.0_all.deb    python-thrift-dbg_0.8.0_amd64.deb  thrift-compiler_0.8.0_amd64.deb
libthrift-dev_0.8.0_amd64.deb   libthrift-ruby_0.8.0_amd64.deb  thrift_0.8.0_amd64.changes
libthrift-erlang_0.8.0_all.deb  php5-thrift_0.8.0_amd64.deb     thrift_0.8.0.dsc

Подписи

Если требуется для загрузки в репозиторий пакетов.

Пишут еще про переменную ‘‘$DEBSIGN_KEYID’’.

> gpg --list-keys     # смотрим keyid
> debsign -k<keyid> ~/pbuilder/result/thrift_0.8.0.dsc
> debsign -k<keyid> ~/pbuilder/result/thrift_0.8.0_amd64.changes

Сборка fb303

Нужен для Scribe’а.

Если еще не настроен – добавляем к pbuilder’у локальный репозиторий, см. страницу pbuilder

Положили в локальный репозиторий собранные thrift-пакеты:

> cp ~/pbuilder/result/* /home/<user>/pbuilder-local-deps/

Если еще нет – установили необходимые пакеты:

> sudo apt-get install automake apt-utils libboost-all-dev

Продолжаем там же, где собирали thrift:

> pwd 
/home/lena-san/building_thrift/thrift/thrift-0.8.0
> cd thrift-0.8.0/contrib
> cp -r fb303 fb303-0.8.0
> cd fb303-0.8.0
> pwd 
/home/lena-san/building_thrift/thrift/thrift-0.8.0/fb303-0.8.0
> ./bootstrap.sh
> cp ../../install-sh ./
> dh_make --single --email <user@domain.tld> --createorig
> echo '\n\noverride_dh_auto_configure:\n\tdh_auto_configure -- --with-thriftpath=/usr CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H"\n' >> debian/rules
> perl -pi -e 's/^(Build-Depends:.*)$/$1, libboost1.46-dev, thrift-compiler, libthrift-dev, python-dev/' debian/control
> dpkg-buildpackage -S -us -uc
> cd ..
> pwd
/home/lena-san/building_thrift/thrift/thrift-0.8.0
> ~/bin/pbuilder-precise build fb303_0.8.0-1.dsc
> ls ~/pbuilder/result |grep fb303
fb303_0.8.0-1_amd64.changes
fb303_0.8.0-1_amd64.deb
fb303_0.8.0-1.debian.tar.gz
fb303_0.8.0-1.dsc
fb303_0.8.0.orig.tar.gz