[SOLVED] Installing frobtads on Centos 5

It took some effort to get frobtads installed on CentOS 5 since bits of that platform are very old and the clues I needed were widely scattered. However, CentOS 5 will be supported for a couple more years and still seems to be the default on cheap VPS’s, so I thought I would document some of the problems/errors and solutions. I was not able to find an rpm for a recent frobtads (1.2.3) that worked for CentOS 5 and because of curl (see below), I don’t think that a .rpm is a complete solution.

(So, of course, I downloaded the latest tar of frobtads; typed “tar -zxvf frobtads…”; typed “cd frobtads…”; typed “./configure”)

First, I had to apply the fix to “src/osfrobtads.h” described here: [url]https://intfiction.org/t/building-frobtads-1-2-2-errors/4997/1] (about adding #include <stdarg.h>).

Second, I also needed to manually edit the Makefile after running ./configure and add " -march i686" to CXXFLAGS to avoid an error about “undefined reference to__sync_add_and_fetch_4’”. Actually, I first added this to CFLAGS and then to CXXFLAGS, so it’s possible it’s needed on both…

Finally, I ran into the problem that Nikos (RealNC) refers to in the above post: the version of curl on CentOS 5 is ancient (7.15) and frobtads needs 7.18. I had errors like this:

CXX tads3/unix/frob-osnetunix.o tads3/unix/osnetunix.cpp: In static member function ‘static int OS_HttpClient::request(int, const char*, short unsigned int, const char*, const char*, const char*, size_t, OS_HttpPayload*, CVmDataSource*, char**, char**, const char*)’: tads3/unix/osnetunix.cpp:888: error: ‘CURLFORM_STREAM’ was not declared in this scope tads3/unix/osnetunix.cpp:1016: error: ‘CURLINFO_REDIRECT_URL’ was not declared in this scope make[1]: *** [tads3/unix/frob-osnetunix.o] Error 1 make[1]: Leaving directory `/tmp/frobtads-1.2.3' make: *** [all] Error 2
My search for a way to install a new curl lead me to the “remi” repo: blog.famillecollet.com/pages/Eng … troduction . I followed the advice here: http://blog.famillecollet.com/pages/Config-en. For my installation, that was to configure yum for EPL and remi:

wget http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm sudo rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
and then install all the curl packages with remi enabled:

sudo yum --enablerepo=remi install curl libcurl ibcurl-devel

This involved updating some packages to remi’s version, including php, libssh2, etc. Clearly, this is something you should consider carefully on a production server. Maybe there is a way to install curl privately for frobtads.

After this, “make” worked fine with just a couple warnings.

Compiling a private curl is probably doable, but I’ve no idea how. When you need a library that doesn’t exist yet on the system, then it’s easy. But if you need a newer version of a library that already exists and you don’t want to upgrade the system’s version but want to have both old a new installed at the same time, then I don’t know.

You would need to override the default search path order of the compiler and linker to look for header files and libraries in the private location first when building. Maybe digging into the docs of gcc and/or ld might help.