Wednesday, February 29, 2012

Installing Gearman PHP Extension 1.0.2 on Ubuntu 10.04 LTS, 11.04, 11.10 and 12.04 LTS from pecl

I started off nice and easy:
sudo apt-get install python-software-properties -y
sudo add-apt-repository ppa:gearman-developers/ppa 
sudo apt-get update
sudo apt-get install gearman-job-server libgearman-dev gearman-tools php-pear php5-dev -y
sudo apt-get install libevent-dev uuid-dev -y
pecl install gearman

Bug then I hit: configure: error: libgearman version 0.21 or later required

To fix it I needed to compile a newer gearman from source, which in turn has another couple of issues with Boost.

To fix this for Ubuntu 10.04 LTS
sudo apt-get install libboost-program-options1.40-dev libboost-thread1.40-dev -y

For Ubuntu 11.04:
sudo apt-get install libboost-thread1.42-dev libcloog-ppl0 libboost-program-options-dev -y
For Ubuntu 11.10 and 12.04:
sudo apt-get install libboost-thread1.46-dev libcloog-ppl0 libboost-program-options-dev -y

Now compile should work, in order for libgearman requirement to be met for pecl:
apt-get install uuid-dev libevent-dev -y
wget https://launchpad.net/gearmand/trunk/0.28/+download/gearmand-0.28.tar.gz
tar xfv gearmand-0.28.tar.gz
cd gearmand-0.28
./configure
make && make install
sudo ldconfig

If you want to use the newly compiled gearmand, you need to edit /etc/init.d/gearman-job-server to include /usr/local:
prefix=/usr/local
Retry pecl install and install module into php:
sudo pecl install gearman
echo "extension=gearman.so" > /etc/php5/conf.d/gearman.ini

Wednesday, October 6, 2010

Bugzilla REST import/export API installation on Ubuntu 10.04

I wanted to export, and import bugs to and from Bugzilla. From the bugzilla irc channel I got a tip about REST API.

This isn't anything supplied by Bugzilla by default, so a separate install is needed, including a couple of patches to Bugzilla itself.

My setup is currently a default Bugzilla 3.6.2 installation on Ubuntu 10.04.

First off, get dependencies:
sudo apt-get install build-essential libcatalyst-perl libcatalyst-modules-perl libmoose-perl apache2 \
libapache2-mod-fastcgi libfcgi-perl libfcgi-procmanager-perl mercurial liblog-handler-perl libarray-diff-perl \
libcatalyst-action-rest-perl libdata-walk-perl libdatetime-format-iso8601-perl libmodule-install-perl -y

PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install BZ::Client"
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Moose"
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Test::More"
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Catalyst::Controller::REST" #(inc. optional modules)
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Catalyst::Plugin::Log::Handler"
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Slurp"

Patch Bugzilla using the patches from: https://wiki.mozilla.org/Bugzilla:REST_API *DEPRECATED*
cd /var/www/bugzilla
wget https://bugzilla.mozilla.org/attachment.cgi?id=408495 -O JSON_template_for_config.cgi.diff
patch < JSON_template_for_config.cgi.diff
wget https://bugzilla.mozilla.org/attachment.cgi?id=475044 -O template/en/default/config.json.tmpl
chown root:www-data template/en/default/config.json.tmpl
Get the bzapi files:
cd /var/www
hg clone http://hg.mozilla.org/webtools/bzapi bzapi
Copy extension into place and set up config file:
cd /var/www/bzapi
cp -r extension/BzAPI ../bugzilla/extension/
cp bugzilla_api.conf.sample bugzilla_api.conf
nano bugzilla_api.conf
Check that all dependencies are met, by trying to start the fastcgi server:
cd /var/www/bzapi
./script/bugzilla_api_server.pl
Set up apache:
a2enmod ssl
nano /etc/apache2/sites-enabled/bzapi
Example config for apache (I simply added these lines to my bugzilla installation):
# Config for port 80 without ssl (will redirect)
  FastCgiServer /var/www/bzapi/script/bugzilla_api_fastcgi.pl -processes 10 -idle-timeout 180
  Alias /bzapi /var/www/bzapi/script/bugzilla_api_fastcgi.pl/

# Config for port 443 with ssl
  Alias /bzapi /var/www/bzapi-1.0/script/bugzilla_api_fastcgi.pl/
Restart apache to enable config:
apache2ctl restart
At this point I hit a problem with: Can't locate Bugzilla/API.pm in @INC (@INC contains: .. /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/local/share/perl/5.10.1/Module/Runtime.pm line 317. I solved it by adding the following to line 2 in /var/www/bzapi/script/bugzilla_api_fastcgi.pl:
use lib "/var/www/bzapi/lib";
And then restart apache again.

Monday, October 4, 2010

OpenDS kinks

When trying to import users from NIS, typically using Migrationtools, you need to allow import of hashed passwords into the OpenDS server.

This is done by:
Allow LDIF imports of encoded passwords: config/config.ldif, under cn=Default Password Policy,cn=Password Policies,cn=config

change ds-cfg-allow-pre-encoded-passwords : true

Wednesday, September 29, 2010

IPv6 - The PTR record

dig AAAA ipv6.he.net (gets you the address)
dig -x 2001:470:0:64::2
host -t PTR 2001:470:0:64::2
nslookup -type=PTR 2001:470:0:64::2

Monday, August 2, 2010

mysqldump command - common uses

Regular dump and restore:

Dumping database to file:
mysqldump -u mysql_username -p name_of_database > databasefile.sql

Restoring database from file:
mysql -u mysql_username -p name_of_database < databasefile.sql
Compressed dump and restore: Dump and compress database to archive file:
mysqldump -u mysql_username -p name_of_database | gzip -9 > backupfile.sql.gz
Restore compressed database file:
gunzip < backupfile.sql.gz | mysql -u mysql_username -p name_of_database

Wednesday, May 19, 2010

WebM is official - here's how to convert vids into this new format

First off - http://www.webmproject.org/tools/ is a nice page!

Thursday, January 21, 2010

PHP MogileFS Client from Erik Osterman modified

I am struggling with a high latency network, and in many cases the tracker simply doesn't respond in time, and the client throws a fatal error. So I did some modifications on the client from http://osterman.com/wordpress/2007/06/30/robust-php-mogilefs-client

Changelog:
* setFile now tries upload 10 times before failing - example; tracker dies during upload
* setResource with key == null now close file handle before throwing exception
* added pathcount and noverify options to getPaths (copied from perl client 1.08)
* unknown key, and empty file now produce a warning, and not fatal error in doRequest
* 0byte check now before upload, and not relying on tracker

My plan was to make it slightly more tolerant for errors from tracker.

Download it here: PHP MogileFS Client