Descargar el software necesario
NZBGet
libxml2
libpar2
libsigc
Instalar la libreria libsigc
$ gunzip libsigc-2.0.a.tar.gz
$ tar -xvf libsigc-2.0.a.tar
$ ./configure --prefix=/home/user/bin/libsigc-2.0.a
$ make
$ make install
Instalar la libreria libpar2
Para obtener todas las opciones disponibles mediante el sistema de configuracion, ejecute:
$ ./configure --help
Luego configure el paquete libpar2 de la siguiente manera, indicando la ubicacion donde instalarlo:
$ ./configure --prefix=/home/user/bin/libpar2-0.2
Durante la configuracion, libpar2 intenta resolver la dependencia que tiene con libsigc, el no poder hacerlo reporta el siguiente error:
checking for SIGC... configure: error: Package requirements (sigc++-2.0 ) were not met:
No package 'sigc++-2.0' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables SIGC_CFLAGS
and SIGC_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
Entonces realice la configuracion del paquete libpar2 indicando, mediante las variable de entorno apropiadas, la ubicacion de la libreria libsigc compilada y sus fuentes:
$ ./configure --prefix=/home/user/bin/libpar2-0.2
SIGC_CFLAGS=/home/user/bin/libsigc++-2.0.18/include
SIGC_LIBS=/home/user/bin/libsigc++-2.0.18/lib
Ahora es momento de compilar los fuentes. Para esto ejecute make en la forma estandar:
$ make
Aparentemente, aun exiten problemas respecto a la ubicacion de los fuentes y librerias correspondientes a libsigc. El proceso de instalacion de la libreria libpar2 descansa en la herramienta pkg-config para resolver dependencias. Sin la correcta configuracion que la herramienta pkg-config requiere, el proceso de construccion falla:
make all-am
make[1]: Entering directory `/home/user/bin/libpar2-0.2-src'
...
Package sigc++-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `sigc++-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'sigc++-2.0' found
Primero es conveniente verificar que la herramienta pkg-config no encuentra la configuracion apropiada para encontrar los fuentes y librerias relacionadas a libsigc:
$ pkg-config --cflags --libs sigc-2.0
Obtendra, en caso de no encontrar la configuracion, el siguiente mensaje:
Package /home/user/bin/libsigc++-2.0.18/lib/libsigc-2.0.a was not found in the pkg-config search path.
Perhaps you should add the directory containing 'sigc-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'sigc-2.0' found
Otra forma, aun mas simple, de verificar si la herramienta pkg-config dispone de acceso a la configuracion apropiada es inspeccionando la variable de entorno PKG_CONFIG_PATH, que es empleada por pkg-config para buscar los package configuration files necesarios:
$ echo $PKG_CONFIG_PATH | grep 'sigc'
Si el resultado es vacio, entonces quiere decir que el package configuration file para libsigc no esta disponible en el entorno. Para agregarlo haga lo siguiente:
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:
/home/user/bin/libsigc++-2.0.18/lib/pkgconfig/sigc++-2.0.pc
Ahora, al efectuar el control para la configuracion de libsigc mediante pkg-config, obtendra resultados positivos:
$ pkg-config --variable=prefix sigc++-2.0
La salida estandar mostrara la ubicacion en la cual libsigc se encuentra instalado:
/home/user/bin/libsigc++-2.0.18
Finalmente es necesario ejecutar el proceso de instalacion, invocando nuevamente a make:
$ make install
Instalar la libreria libxml2
$ gunzip libxml2-2.6.30.tar.gz
$ tar -xvf libxml2-2.6.30.tar
$ ./configure --help
$ make
$ make install
Instalar NZBGet
$ gunzip nzbget-0.3.0.tar.gz
$ tar -xvf nzbget-0.3.0.tar
$ ./configure --disable-curses --enable-parcheck \
--with-libpar2-includes=/home/user/bin/libpar2-0.2/include/libpar2 \
--with-libpar2-libraries=/home/user/bin/libpar2-0.2/lib \
--with-libsigc-includes=/home/user/bin/libsigc++-2.0.18/include/sigc++-2.0 \
--with-libsigc-libraries=/home/user/bin/libsigc++-2.0.18/lib \
--with-libxml2-includes=/home/user/bin/libxml2-2.6.30/include/libxml2 \
--with-libxml2-libraries=/home/user/bin/libxml2-2.6.30/lib
$ make
$ make install
Publicando las librerias compiladas
Al intentar ejecutar nzbget:
$ ./nzbget -c nzbget.conf archivo.nzb
Ocurre el siguiente error:
$ ./nzbget: error while loading shared libraries: libpar2.so.0: cannot open shared object file: No such file or directory
Primero es conveniente verificar cuales son las librerias compartidas que nzbget no encuentra. Para esto ejecute:
$ ldd nzbget
en la salida estandar podra observar algo similar a lo siguiente, donde en negrita se resaltan los errores:
libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00000000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00000000)
libpar2.so.0 => not found
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00000000)
libm.so.6 => /lib/libm.so.6 (0x00000000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00000000)
libc.so.6 => /lib/libc.so.6 (0x00000000)
libsigc-2.0.so.0 => not found
libdl.so.2 => /lib/libdl.so.2 (0x00000000)
libz.so.1 => /usr/lib/libz.so.1 (0x00000000)
/lib/ld-linux.so.2 (0x00000000)
Lo que sucede es que nzbget busca las librerias compartidas en la ubicacion estandar en Linux, que es /usr/lib. Como las librerias de las cuales nzbget depende fueron construidas en otras ubicaciones, es necesario hacerlas disponibles desde /usr/lib mediante vinculos simbolicos:
$ ln -s /home/user/bin/libpar2-0.2/lib/libpar2.so.0 /usr/lib/libpar2.so.0
$ ln -s /home/user/bin/libsigc++-2.0.18/lib/libsigc-2.0.so.0 /usr/lib/libsigc-2.0.so.0
Claro esta que este ultimo paso no es necesario si las librerias fueron instaladas en la ubicacion estandar.
Vinculos:
No hay comentarios.:
Publicar un comentario