Apache stopped starting today for no apparent reason.

1
2
3
4
5
6
7
rcapache2 restart                            
/usr/sbin/httpd2-prefork: symbol lookup error: /usr/sbin/httpd2-prefork: undefined symbol: apr_ldap_ssl_init
Starting httpd2 (prefork) /usr/sbin/httpd2-prefork: symbol lookup error: /usr/sbin/httpd2-prefork: undefined symbol: apr_ldap_ssl_init
 
The command line was:
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL
                                                                      failed

So I tried reinstalling libapr and apache2-utils related stuff with no luck. ldconfig didn't help either. It's not until I looked at /usr/lib and relinked a few things that it started working. What the hell, SUSE?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/usr/lib # l libapr*
-rw-r--r-- 1 root root 239306 2007-09-21 23:41 libapr-1.a
-rw-r--r-- 1 root root    821 2007-09-21 23:41 libapr-1.la
lrwxrwxrwx 1 root root     17 2008-07-30 00:21 libapr-1.so -> libapr-1.so.0.2.9*
lrwxrwxrwx 1 root root     18 2008-07-30 00:21 libapr-1.so.0 -> libapr-1.so.0.2.12*
-rwxr-xr-x 1 root root 543841 2008-07-29 23:47 libapr-1.so.0.2.12*
-rwxr-xr-x 1 root root 148372 2007-09-21 23:41 libapr-1.so.0.2.9*
-rw-r--r-- 1 root root 156300 2007-09-23 13:33 libaprutil-1.a
-rw-r--r-- 1 root root    912 2007-09-23 13:33 libaprutil-1.la
lrwxrwxrwx 1 root root     21 2008-07-30 00:22 libaprutil-1.so -> libaprutil-1.so.0.2.9*
lrwxrwxrwx 1 root root     22 2008-07-30 00:21 libaprutil-1.so.0 -> libaprutil-1.so.0.2.12*
-rwxr-xr-x 1 root root 291520 2008-07-29 23:47 libaprutil-1.so.0.2.12*
-rwxr-xr-x 1 root root  98148 2007-09-23 13:33 libaprutil-1.so.0.2.9*
 
/usr/lib # ln -sf libaprutil-1.so.0.2.9 libaprutil-1.so.0
/usr/lib # ln -sf libapr-1.so.0.2.9 libapr-1.so.0
 
/usr/lib # l libapr*
-rw-r--r-- 1 root root 239306 2007-09-21 23:41 libapr-1.a
-rw-r--r-- 1 root root    821 2007-09-21 23:41 libapr-1.la
lrwxrwxrwx 1 root root     18 2008-07-30 00:34 libapr-1.so -> libapr-1.so.0.2.9*
lrwxrwxrwx 1 root root     18 2008-07-30 00:21 libapr-1.so.0 -> libapr-1.so.0.2.9*
-rwxr-xr-x 1 root root 543841 2008-07-29 23:47 libapr-1.so.0.2.12*
-rwxr-xr-x 1 root root 148372 2007-09-21 23:41 libapr-1.so.0.2.9*
-rw-r--r-- 1 root root 156300 2007-09-23 13:33 libaprutil-1.a
-rw-r--r-- 1 root root    912 2007-09-23 13:33 libaprutil-1.la
lrwxrwxrwx 1 root root     21 2008-07-30 00:35 libaprutil-1.so -> libaprutil-1.so.0.2.9*
lrwxrwxrwx 1 root root     21 2008-07-30 00:35 libaprutil-1.so.0 -> libaprutil-1.so.0.2.9*
-rwxr-xr-x 1 root root 291520 2008-07-29 23:47 libaprutil-1.so.0.2.12*
-rwxr-xr-x 1 root root  98148 2007-09-23 13:33 libaprutil-1.so.0.2.9*
 
/usr/lib # rcapache2 restart
Syntax OK
Shutting down httpd2 (waiting for all children to terminate)          done
Starting httpd2 (prefork)                                             done

Voila, apache starts now. Grrr, why linker, why??

Google PageRank Update Happening Now

Saturday, July 26th, 2008

Google PageRank As Matt Cutts (Google's SEO and search quality expert) wrote in his blog entry a few days ago, Google PageRank updates are underway. Google updates PR (Page Rank) quite rarely – every three months or so, and it's the most important thing a website operator should be concerned with when it comes to site promotion and popularity.

I'm happy to report that Beer Planet's PR went up yet again on this update, from 3 to 4 and my buddy Thaya's PR went up from 2 to 3. He's been blogging a lot more about WordPress, and I think he'll surpass me very soon, thanks to his ingenious plugins.

Is it time to check your site's PR? You can use the Google Toolbar, Firefox plugins, like Search Status, or a range of websites that provide this number, like this one.

I've encountered a problem recently where I had to figure out if some checked out code is up-to-date with the svn repository, without actually running svn update. Unfortunately, svn update doesn't have a dry-run option, so I had to find another solution.

I came up with 2, depending on how detailed the information needs to be, which I'm about to share in this post.

1. If you want exact file and directory names, you can run:

svn status -u

If any files need updating, you will see a * before the file name.

svn status wc
M     wc/bar.c
A  +   wc/qax.c

svn status -u wc
M            965    wc/bar.c
       *     965    wc/foo.c
A  +         965    wc/qax.c
Status against revision:   981

Or more verbose

svn status --show-updates --verbose wc
M            965       938 kfogel       wc/bar.c
       *     965       922 sussman      wc/foo.c
A  +         965       687 joe          wc/qax.c
             965       687 joe          wc/zig.c
Status against revision:   981

Parsing the output in Perl, for instance, should be trivial. A connection to the repository is established for this check, so be sure to catch in your code the times when such connection is not available.

2. If you only care about whether a specific directory needs to be updated or not, here's a quicker method:

svn info vs svn info -rHEAD

cd somedir;
svn info -r HEAD | grep -i "Last Changed Rev"
Last Changed Rev: 8544
svn info | grep -i "Last Changed Rev"
Last Changed Rev: 8531

If these numbers are not the same, an update is needed.

What can I be missing? Are there any other creative ways, or is svn update going to support dry-run? Feel free to leave a comment if you know something I don't.

I just saw this on TV and had to look it up and post. The guy that looks like a tank made out of meat is Brock Lesnar. In his first UFC match, he's fighting the former UFC champion of the world, Frank Mir. At first it seems the outcome is clear but the fight surprisingly ends in mere one and a half minutes. Here's the replay:

If you are experiencing a weird feeling in your pants, it's normal.

Here's to hoping they won't fuck it up. http://www.imdb.com/title/tt0409459/