martes, 21 de septiembre de 2010

Centos 5.x x64 : instalar super-smack 1.3

Ahi va, tenemos que tener:

MySQL-client-community.x86_64 5.1.50-1.rhel5 installed
MySQL-devel-community.x86_64 5.1.50-1.rhel5 installed
MySQL-server-community.x86_64 5.1.50-1.rhel5 installed
MySQL-shared-compat.x86_64 5.1.50-1.rhel5 installed

Y como super-smack no sabe hacerca de /usr/lib64 tenemos que indicarle, para esto ya tenemos el codigo y estamos en la carpeta de super-smack1.3:

./configure --with-mysql --with-mysql-lib=/usr/lib64/

Building with the following options:

MySQL Support..................... yes
PostgreSQL Support................ no
Oracle Support.................... no

If this is not what you intended, please re-run configure.

Thanks for using super-smack!

Esto sale despues de un chorizo mas grande. Tambien debemos tener libtool y sus allegados, texinfo.

Bien una vez ejecutado configure, vamos a ejecutar make, pero debemos hacer lo siguiente para arquitecturas de 64bits, abrir el archivo src/query.cc e irse a la linea aprox. 188 y modificar esa parte del codigo como sigue:

void Query_report::fd_send(int fd)
{
map >::iterator i =
type_reports.begin();
char buf[MAX_REPORT_LEN];
int len = 0, num_recs = 0;
char* p = (char*)buf + 1, *p_end = (char*)buf+sizeof(buf);

while(i != type_reports.end())
{
string s((*i).first);
int str_len = (*i).first.length();
if((long)p + str_len + 3 *sizeof(int) < (long)p_end )
{
*p++ = (char) str_len;
const char* q_type_name = s.c_str();
memcpy(p,q_type_name , str_len);
p += str_len;
memcpy(p, &((*i).second->num_queries), sizeof(int));
p += sizeof(int);
memcpy(p, &((*i).second->max_time), sizeof(int));
p += sizeof(int);
memcpy(p, &((*i).second->min_time), sizeof(int));
p += sizeof(int);
i++;
num_recs++;
}
else
die(0, "report buffer overflow -- too many query types");
}

len = (long)p - (long)buf;

Revisen bien que necesitan modificar.

Ahora si lo instalamos:
[root@mbx-mysqlmaster super-smack-1.3]# make install
Making install in src
make[1]: Entering directory `/usr/app/bench/super-smack-1.3/src'
make[2]: Entering directory `/usr/app/bench/super-smack-1.3/src'
/bin/sh ../mkinstalldirs /usr/local/bin
/usr/bin/install -c super-smack /usr/local/bin/super-smack
/usr/bin/install -c gen-data /usr/local/bin/gen-data
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/usr/app/bench/super-smack-1.3/src'
make[1]: Leaving directory `/usr/app/bench/super-smack-1.3/src'
make[1]: Entering directory `/usr/app/bench/super-smack-1.3'
make[2]: Entering directory `/usr/app/bench/super-smack-1.3'
make[2]: Nothing to be done for `install-exec-am'.
/bin/sh ./mkinstalldirs /usr/share/smacks /var/smack-data
mkdir /usr/share/smacks
mkdir /var/smack-data
cp -rp ./smacks/* /usr/share/smacks
make[2]: Leaving directory `/usr/app/bench/super-smack-1.3'
make[1]: Leaving directory `/usr/app/bench/super-smack-1.3'

Ya solo necesito ver como hacerle para no se vaya a /usr/local/bin. Animo!!!

1 comentario:

David Chinchilla Vilchez dijo...

Hola, Pedro Moreno, mi nombre es David y tengo que instalar en un Centos de 64 el super smach 1.3. Me preguntaba si podiras ayudarme con esta tarea ya que no se por donde comenzar.