I upgraded the Apache to 2.2.27 on my FreeBSD box via portmaster. The upgrade went very smooth. After the upgrade, I decide to test the Apache by restarting the server. Oh well, I got the following error message:
[FreeBSD]Shared object "libaprutil-1.so.5" not found, required by "httpd"
Oh well, looks like libaprutil-1.so.5 is missing. How about I create this file by soft-linking from the newer version, such as libaprutil-1.so.6, libaprutil-1.so.7 etc. However, when I check the lib directory, I don’t see anything like that.
#/usr/local/lib -rw-r--r-- 1 root wheel 251k Jun 11 10:58 libaprutil-1.a -rwxr-xr-x 1 root wheel 961B Jun 11 10:58 libaprutil-1.la lrwxr-xr-x 1 root wheel 21B Jun 11 10:58 libaprutil-1.so -> libaprutil-1.so.0.5.3 lrwxr-xr-x 1 root wheel 21B Jun 11 10:58 libaprutil-1.so.0 -> libaprutil-1.so.0.5.3 -rwxr-xr-x 1 root wheel 148k Jun 11 10:58 libaprutil-1.so.0.5.3
Looks like it is not that simple to solve the problem. After couple trials and errors, I came up a solution. First, I need to reinstall the Apache, and then I need to reinstall Apr1.
cd /usr/local/www/apache22 make
Notice that I compile the file without installing it. That’s because I want to check the library dependence.
cd /usr/ports/www/apache22/work/httpd-2.2.27 ldd ./httpd ./httpd: libm.so.5 => /lib/libm.so.5 (0x80087d000) libpcre.so.3 => /usr/local/lib/libpcre.so.3 (0x800a9e000) libaprutil-1.so.0 => /usr/local/lib/libaprutil-1.so.0 (0x800d02000) libdb-4.8.so.0 => /usr/local/lib/libdb-4.8.so.0 (0x800f27000) libgdbm.so.4 => /usr/local/lib/libgdbm.so.4 (0x801299000) libexpat.so.6 => /usr/local/lib/libexpat.so.6 (0x8014a4000) libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x8016c8000) libapr-1.so.0 => /usr/local/lib/libapr-1.so.0 (0x8019c4000) libcrypt.so.5 => /lib/libcrypt.so.5 (0x801bf5000) libthr.so.3 => /lib/libthr.so.3 (0x801e14000) libc.so.7 => /lib/libc.so.7 (0x802037000) libapr-1.so.5 => not found (0) libintl.so.9 => /usr/local/lib/libintl.so.9 (0x802392000)
So it is libaprutil-1.so.0, which is what we have in /usr/local/lib/. That’s good. Now we can hit the install button.
cd /usr/ports/www/apache22/ make reinstall
So let’s try to run Apache again. Looks like we got a different error message:
/usr/local/etc/rc.d/apache22 restart Performing sanity check on apache22 configuration: Shared object "libapr-1.so.5" not found, required by "libaprutil-1.so.0"
It’s okay. Let’s do something similar to the apr1:
cd /usr/ports/devel/apr1/ make reinstall
Try to restart Apache again. The problem should be gone:
/usr/local/etc/rc.d/apache22 restart Performing sanity check on apache22 configuration: Syntax OK Stopping apache22. Waiting for PIDS: 1022. Performing sanity check on apache22 configuration: Syntax OK Starting apache22.
Hope my solutions help!