Archive for July, 2010
Maildir search at its best!
Search, search and search – that’s what we all do in daily inhabitance. When it comes to maildir, the ‘mu-tools’ are its best. Mairix is one sort of alternative but mu is quite powerful and more customizable. The only problem is its installation on an RHEL5 based system such as CentOS5. The problem starts on the fact that development of mu seems to have happened on a Debian based distro which by all means is more advanced in system core packages. Debian or Ubuntu is meant for the cutting-edge technology with latest up-to-date packages while Red Hat on other side doesn’t really like to keep all of the system core RPMs most up-to-date till their next major release or at least until then point when there are severe security flaws found in those packages. For example, you found a new tool, check with apt-get; you find it, install 1, 2, 3 and you’re ready to go! However, that’s not same thing with RHEL, even after loading bunch of third party repositories. Those who interact with both Debian and Red Hat Enterprise Linux on daily basis may know how difficult installing new applications can become. I hate it whenever this happens. Red Hat chose ‘stability’ over ‘updates’. Both of these infrastructures have their own downsides. Perhaps, that’s the reason why RHEL is widely deployed as server OS comparative to other distributions.
With that said, installation of mu is not that simple. Earlier in mu 0.4 it was a nightmare as I had to go through lots of and different installation errors, but now with thanks to developer Dirk-jan Binnema who fixed a bug for me and made a few changes to leisure its installation, it’s not that hard if you know the calculated amount of steps involved:
- Compiling glib 2.24
- Compiling and installing xapian and xapin-config
- Adding /usr/local/bin/pkg-config to current PKG_CONFIG_PATH
- Fixing that notorious bug of “undefined reference to sqlite3_prepare_v2″ in sqlite-dev package that exists in all RHEL related packages (not needed as version 0.7 eliminates sqlite dependency by using xapian instead)
Presuming that you’ve all compiling and development tools (gcc, gcc++, libtool), installation involves these underlined steps. Try not to use package versions other than the ones mentioned. Trust me, when I say that.
1. Installing glib2, updating system library and exporting pkg-config path.
# wget http://ftp.gnome.org/pub/gnome/sources/glib/2.24/glib-2.24.1.tar.gz # tar zxvf glib-2.24.1.tar.gz # cd glib-2.24.1/ # ./configure # make # make install # echo "/usr/local/lib/" >> /etc/ld.so.conf.d/glib2-i386.conf # ldconfig # export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
2. Installing gmime
# wget http://dl.atrpms.net/el5-i386/atrpms/stable/atrpms-package-config-120-3.el5.i386.rpm # rpm -ivh atrpms-package-config-120-3.el5.i386.rpm # yum --enablerepo=atrpms install gmime-2.4.7-1.99 gmime-devel-2.4.7-1.99
3. Installing xapian
# wget http://centos.karan.org/kbsingh-CentOS-Extras.repo -0 /etc/yum.repos.d/kbsingh-CentOS-Extras.repo # yum install --enable=kbs-CentOS-Testing xapian-core xapian-core-devel -y
4. Compiling and installing mu
# wget http://mu0.googlecode.com/files/mu-0.7.tar.gz # git clone git://gitorious.org/mu/mu-ng.git # tar zxvf mu-0.7.tar.gz # rm -f mu-0.7/src/mu-cmd-index.c # cp mu-ng/src/mu-cmd-index.c mu-0.7/src/ # cd mu-0.7/ # ./configure # make # make install
That’s all you need to get started. There’s no other tool like ‘mu view’ (formerly mu-msginfo) for getting instant command line outputs of an email formatted in maildir format. I instantly fell in love with it when I first used.
Wish a nice playing with it!
Quite ironically ‘mu’ means ‘mouth’ in Urdu/Hindi/Punjabi/Sindhi/Siraiki’. WTF dude !!!!
!!!!
PC speaker and CentOS 5
Ah, I just was lazy the other day and surfing around while I came across some pfSense stuff. I remembered the way it belled the beeps during startups and shutdowns being one of the good things that I liked about when I had it (yea, it pretty much sucked in my dual wan environment as a load balancer so I tried to switching to ClearOS, of course an RHEL5 based firewall; nevertheless I totally agree to what Linus once said ‘I claim that Mach people (and apparently FreeBSD) are incompetent idiots’) like you instantly click good features of a thing when you think about anything in first few thoughts. This is sometime really helpful for home-servers which don’t always have a monitor plugged into their consoles.
As I used ‘beep’ program already a few times in Ubuntu I knew it would be interesting to use it with new ‘-n’ feature instead of using issuing beep command for an each frequency beep. That is, the whole script here at http://redmine.pfsense.org/repositories/annotate/pfsense/usr/local/bin/beep.sh can be translated into a single beep command of:
beep -f 500 -l 155 -n -f 400 -l 155 -n -f 600 -l 155 -n -f 800 -l 155 -n -f 800 -l 155 -n -f 600 -l 155 -n -f 800 -l 155 -n -f 500 -l 155 -n -f 400 -l 155 -n -f 400 -l 155
But after installing beep and running didn’t make any sound. I witnessed that spkr kernel module as well as the motherboard speaker were well being detected but still no sound. After investigating, it turns out that its bug in kernel earlier than 2.6.18-164 interestingly using external speakers instead of PC’s internal one for producing system bells. Basically its a bug called as an ‘aggression’ for a feature that breaks of with any newer kernel release. I saw multiple bugs relating to the problem in Red Hat’s bugzilla https://bugzilla.redhat.com/show_bug.cgi?id=532444, https://bugzilla.redhat.com/show_bug.cgi?id=525390 and https://bugzilla.redhat.com/show_bug.cgi?id=526751. So, I hit upon the CentOS 5′s lastest kernel, 2.6.18-194.8.1.el5 and that gave me back my system beeps
[root@Bassu ~]# dmesg | grep -i ‘speaker’
input: PC Speaker as /class/input/input2
[root@Bassu ~]# lsmod | grep -i spkr
pcspkr 7105 0
Almost I finished adding beeps in rc.local and shutdown, I stumbled upon a good init script which I modified a bit and added chkconfig parameters so it can be added into RHEL’s ntsysv services – exactly what I needed! Then I found another beep melody for Beethoven’s theme
beep -f 659 -l 460 -n -f 784 -l 340 -n -f 659 -l 230 -n -f 659 -l 110 -n -f 880 -l 230 -n -f 659 -l 230 -n -f 587 -l 230 -n -f 659 -l 460 -n -f 988 -l 340 -n -f 659 -l 230 -n -f 659 -l 110 -n -f 1047-l 230 -n -f 988 -l 230 -n -f 784 -l 230 -n -f 659 -l 230 -n -f 988 -l 230 -n -f 1318 -l 230 -n -f 659 -l 110 -n -f 587 -l 230 -n -f 587 -l 110 -n -f 494 -l 230 -n -f 740 -l 230 -n -f 659 -l 460
Add below script to file, /etc/init.d/beep, make it executable and do a ‘chkconfig –add beep’ to add it as a system service.
#!/bin/sh
# chkconfig: 2345 95 20
# description: Beep PC speaker with analog melody on startup and stoppage
#
# processname: beep
NAME=beep
BEEP=/usr/bin/$NAME
MELODY_START="-f 65.4064 -l 100 -n -f 130.813 -l 100 -n -f 261.626 -l 100 -n -f 523.251 -l 100 -n -f 1046.50 -l 100 -n -f 2093.00 -l 100 -n -f 4186.01 -l 100"
MELODY_STOP="-f 523.251 -l 100 -D 100 -n -f 391.995 -l 100 -D 100 -n -f 329.628 -l 100 -D 100 -n -f 261.626 -l 200"
SCRIPTNAME=/etc/init.d/$NAME
#ARGS="-e /dev/input/event0"
# Exit if the package is not installed
[ -x "$BEEP" ] || exit 0
case "$1" in
start)
$BEEP $ARGS $MELODY_START
;;
stop)
$BEEP $ARGS $MELODY_STOP
;;
restart|force-reload)
# Do nothing
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
With that said, coming out of Mario world and now going back to my laziness
UPDATE:
Talking about the Mario, I just created its beep command from some random junk of frequencies I found. So, here it goes:
beep -f 330 -l 137 -n -f 330 -l 275 -n -f 330 -l 137 -d 137 -n -f 262 -l 137 -n -f 330 -l 275 -n -f 392 -l 550 -d 550 -n -f 262 -l 412 -n -f 196 -l 137 -d 275 -n -f 164 -l 137 -d 137 -n -f 220 -l 275 -n -f 247 -l 137 -d 137 -n -f 233 -l 137 -n -f 220 -l 275 -n -f 196 -l 205 -n -f 330 -l 205 -n -f 392 -l 275 -n -f 440 -l 275 -n -f 349 -l 137 -n -f 392 -l 137 -d 137 -n -f 330 -l 275 -n -f 262 -l 137 -n -f 294 -l 137 -n -f 247 -l 412 -n -f 262 -l 412 -n -f 196 -l 137 -d 275 -n -f 164 -l 275 -d 137 -n -f 220 -l 275 -n -f 247 -l 137 -d 137 -n -f 233 -l 137 -n -f 220 -l 275 -n -f 196 -l 205 -n -f 330 -l 205 -n -f 392 -l 275 -n -f 440 -l 275 -n -f 349 -l 137 -n -f 392 -l 137 -d 137 -n -f 330 -l 275 -n -f 262 -l 137 -n -f 294 -l 137 -n -f 247 -l 412 -d 275 -n -f 392 -l 137 -n -f 370 -l 137 -n -f 349 -l 137 -n -f 311 -l 275 -n -f 330 -l 137 -d 137 -n -f 207 -l 137 -n -f 220 -l 137 -n -f 262 -l 137 -d 137 -n -f 220 -l 137 -n -f 262 -l 137 -n -f 294 -l 137 -d 275 -n -f 392 -l 137 -n -f 370 -l 137 -n -f 349 -l 137 -n -f 311 -l 275 -n -f 330 -l 137 -d 137 -n -f 523 -l 275 -n -f 523 -l 137 -n -f 523 -l 550 -n -f 392 -l 137 -n -f 370 -l 137 -n -f 349 -l 137 -n -f 311 -l 275 -n -f 330 -l 137 -d 137 -n -f 207 -l 137 -n -f 220 -l 137 -n -f 262 -l 137 -d 137 -n -f 220 -l 137 -n -f 262 -l 137 -n -f 294 -l 137 -d 275 -n -f 311 -l 275 -d 137 -n -f 294 -l 275 -n -f 262 -l 550 -d 550




Recent Comments