[OpenSIPS-Users] Mediaproxy 2.1.0 on Red Hat/CentOS

John Quick John.Quick at smartvox.co.uk
Thu Nov 27 16:35:27 CET 2008


Dan

I really appreciate your help on this. I used your lsof procedure on the pid
of Python after importing gnutls.library and it showed the following:
# lsof -p 12803
    SIZE     NODE NAME
    4096 25296897 /root
    4096        2 /
    8304  6700861 /usr/bin/python
  134400  2425120 /lib64/ld-2.5.so
 1699880  2425121 /lib64/libc-2.5.so
   23360  2425122 /lib64/libdl-2.5.so
  141456  2425126 /lib64/libpthread-2.5.so
  615136  2425128 /lib64/libm-2.5.so
 1234008  6692943 /usr/lib64/libpython2.4.so.1.0
  314520  6700843 /usr/lib64/libgcrypt.so.11.2.2
   85608  6692065 /usr/lib64/libz.so.1.2.3
   15584  2425108 /lib64/libtermcap.so.2.0.8
  114352  2425129 /lib64/libnsl-2.5.so
   18152  2425145 /lib64/libutil-2.5.so
  540576  6702936 /usr/lib64/libgnutls.so.13.0.6
  247224  6692881 /usr/lib64/libreadline.so.5.1
56414144  6690688 /usr/lib/locale/locale-archive
   21808  6853309 /usr/lib64/python2.4/lib-dynload/readline.so
   25464  6691193 /usr/lib64/gconv/gconv-modules.cache
   19960  7113538
/usr/lib64/python2.4/site-packages/gnutls/library/_gnutls_init.so
  134495  6703491 /usr/lib64/libgnutls-extra.so.26.4.6
   15208  6696908 /usr/lib64/libgpg-error.so.0.3.0
 2669434  6702949 /usr/local/lib/libgnutls.so.26.4.6
  320003  6857078 /usr/lib64/python2.4/site-packages/_ctypes.so
   23736  6853317 /usr/lib64/python2.4/lib-dynload/structmodule.so

So it is using so.13.0.6 from /usr/lib64 and so.26.4.6 from /usr/local/lib.
I thought this looked a bit odd, so I tried to manually update various
libgnutls files in my /usr/lib64 directory......and now I've broken it!
Python gives an error when I run the "import functions" command in PHP:

>>> from gnutls.library import functions
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "gnutls/library/__init__.py", line 4, in ?
    from gnutls.library import _gnutls_init
ImportError: cannot import name _gnutls_init


Unfortunately, my knowledge of Linux libraries/packages and how they are
stored, updated and loaded is poor - I only ever used Yum before this. I may
have to give up. It's too hard. But I hate to throw away the time already
spent trying.   :-(

If only there was a newer Yum package for gnutls. Yum only offers v1.4.

John

-----Original Message-----
From: Dan Pascu [mailto:dan at ag-projects.com] 
Sent: 27 November 2008 12:02
To: John.Quick at smartvox.co.uk
Cc: users at lists.opensips.org
Subject: Re: [OpenSIPS-Users] Mediaproxy 2.1.0 on Red Hat/CentOS

On Thursday 27 November 2008, John Quick wrote:
> Dan
>
> Your explanation makes a lot of sense - getting the correct version of
> the gnutls libraries has been a big problem and I downloaded 2.4.2 and
> installed from source after I had installed the Python libraries.
> However, I now have problems re-installing packages/libraries so the
> old ones are properly replaced. For example, "./setup clean" does not
> remove the old .so files in the build directory for my Python packages
> - I had to manually delete them. I also had to manually delete the .pyc
> files in the mediaproxy directory and mediaproxy/interfaces.

You do not need to delete the .pyc files. setup clean only cleans files 
from builds that were not done in-place. if you did ./build_inplace then 
you need to delete the .so yourself to rebuild it.

>
> Have just tried rebuilding/installing:
> python-gnutls-1.1.6, then
> Twisted-8.1.0, then
> build_inplace mediaproxy
> and I still get the same error when I run media-dispatcher.

The order to install them is:

libtasn1 (libgnutls dependency)
libgcrypt11 (libgnutls dependency)
libgnutls26 (version 2.4.2)
python-gnutls (build it only after the above had been installed)
other deps
mediaproxy

unfortunately, gnutls has some dependencies of its own (libtasn1 and 
libgcrypt), and the version you use (2.4.2) needs a certain version of 
these companion libraries (for gnutls-2.4.x I have libgcrypt-1.4.1 and 
libtasn1-1.4). It may be possible that you still get the error because 
libtasn1 and/or libgcrypt are still old versions.

To check that libraries you use:

run a python interpreter and execute the statement below:

python
>>> from gnutls.library import functions

then find the pid of that python interpreter (ps ax | grep python) and run 
lsof on it:

lsof -p pid_of_python_interpreter

then run

ldd gnutls/library/_gnutls_init.so

Compare the versions and paths for libgnutls, libgcrypt and libtasn1 from 
the outputs of lsof and ldd. They must be the same.

>
> Two things that are probably relevant:
> 1. The usual ./configure; make; make install process that I used for
> the source package of gnutls failed to copy gnutls-extra.so file to the
> Linux lib path - I eventually copied it manually, but don't feel happy
> about having to do that.

I don't think that's a problem.

> 2. When I rebuild Twisted-8.1.0, it gives the following error during
> the "install" process, but the install script still completes:

I do not know about that. You should ask the twisted developers about it.
I guess a simple solution would be to remove the offending files, since 
they're only tests. Aren't they ignored anyways, since the error is just 
in byte compiling them?

>
> [root at opensips02 Twisted-8.1.0]# ./setup.py install
> running install
> running build
> running build_py
> running build_ext
> gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall
> -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
> --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fPIC
> -I/usr/include/python2.4 -c conftest.c -o conftest.o
> gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall
> -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
> --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fPIC
> -I/usr/include/python2.4 -c conftest.c -o conftest.o
> running build_scripts
> running install_lib
> copying build/lib.linux-x86_64-2.4/twisted/python/_epoll.so ->
> /usr/lib64/python2.4/site-packages/twisted/python
> copying build/lib.linux-x86_64-2.4/twisted/test/raiser.so ->
> /usr/lib64/python2.4/site-packages/twisted/test
> copying build/lib.linux-x86_64-2.4/twisted/protocols/_c_urlarg.so ->
> /usr/lib64/python2.4/site-packages/twisted/protocols
> copying build/lib.linux-x86_64-2.4/twisted/runner/portmap.so ->
> /usr/lib64/python2.4/site-packages/twisted/runner
> byte-compiling
> /usr/lib64/python2.4/site-packages/twisted/test/generator_failure_tests
>.py to generator_failure_tests.pyc
>   File
> "/usr/lib64/python2.4/site-packages/twisted/test/generator_failure_test
>s.py" , line 66
>     yield
>          ^
> SyntaxError: invalid syntax
>
>
> I haven't rebuilt/installed python-application or cjson packages since
> upgrading gnutls - are they relevant? If so, what is the correct order

no. pyhton-application and python-cjson are standalone, so you can install 
them whenever you like.

> for building the various python packages?

See above.

-- 
Dan




More information about the Users mailing list