¡Ojo! Hago directos en Twitch sobre desarrollo web, ¿Te apuntas? ManzDev

software
10

Escrito por

En el ámbito de la informática, los programas o aplicaciones son un conjunto de archivos o ficheros (o un simple archivo en ciertos casos) necesarios para poder iniciarse y funcionar.

Entre ese conjunto de archivos, existen algunos que tienen la capacidad de abrirse para comenzar a funcionar por sí solos, estos se llaman ficheros ejecutables o archivos binarios.

ejecutables exe executable

En ese conjunto de archivos pueden existir todo tipo de ficheros: documentos (archivos no-ejecutables), binarios (archivos ejecutables) o bibliotecas.

Las bibliotecas, también llamados errónea e históricamente librerías (por traducción incorrecta de library, del inglés), son un tipo de archivo de «apoyo» utilizado por los archivos ejecutables para utilizar información y determinados procedimientos de forma modular (dividido en partes pequeñas) sin repetirlo múltiples veces.

En Windows, estas bibliotecas se identifican con la extensión .DLL (Dynamic Linking Library), mientras que en linux su análogo tiene la extensión .so (Shared object).

Un error que puede ocurrir de forma bastante común al utilizar algún programa que haga uso de bibliotecas inexistentes en linux, es el siguiente:

error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory

En este ejemplo, la librería compartida que no encuentra es la libstdc++ (Standard C++ Library) en su versión 6.2.2, aunque podría ser cualquier otra librería, como libsepol (Security Enhanced Linux policy):

error while loading shared libraries: libsepol.so.1: cannot open shared object file: No such file or directory

Para solucionar este problema, no tenemos más que hacer algo tan fácil como instalar la biblioteca que necesitamos.

Método 1: Instalar biblioteca vía apt


Es la más fácil y cómoda. Se trata de buscar vía apt la biblioteca que necesitamos.

Actualizamos los repositorios de apt para tenerla al día.

# apt-get update

Buscamos la biblioteca concreta, basta con buscar la primera parte de la misma:

# apt-cache search libsepol
libsepol1 - Security Enhanced Linux policy library for changing policy binaries
libsepol1-dev - Security Enhanced Linux policy library and development files

La búsqueda nos devuelve dos resultados libsepol1 y libsepol1-dev. Los sufijos -dev significan versión de desarrollo (developer), por lo tanto es sólo útil para programadores. En principio, la que nos interesa es la otra, así que la instalamos.

# apt-get install libsepol1

Método 2: Instalar biblioteca vía dpkg


Sin embargo, si intentamos realizar la búsqueda con apt para la librería anterior desde un ubuntu actualizado (8.10 por ejemplo) nos toparemos con los siguientes resultados (entre otros):

# apt-cache search libstdc++
libstdc++5 - The GNU Standard C++ Library v3
libstdc++6 - The GNU Standard C++ Library v3
libstdc++6-4.1-dev - The GNU Standard C++ Library v3 (development files)
libstdc++6-4.2-dev - The GNU Standard C++ Library v3 (development files)
libstdc++6-4.3-dev - The GNU Standard C++ Library v3 (development files)

El problema es que si nos fijamos bien, el error anterior nos lo da en libstdc++-libc6.2-2.so.3. Fijándonos, vemos que la versión no es la misma, por lo tanto la biblioteca de los repositorios no nos va a servir.

Tendremos que buscar el paquete .deb que necesitamos para instalarlo manualmente. En este caso, el paquete que necesitamos es libstdc++2.10-glibc2.2, página donde encontraremos varios mirrors (alternativas en diferentes localización) donde descargar el fichero .deb (por ejemplo, el de Africa).

# wget "http://za.archive.ubuntu.com/ubuntu/pool/universe/g/gcc-2.95/libstdc++2.10-glibc2.2_2.95.4-24_i386.deb"

Una vez descargado, procedemos a instalarlo manualmente con dpkg y el flag de instalación -i.

# dpkg -i libstdc++2.10-glibc2.2_2.95.4-24_i386.deb
Seleccionando el paquete libstdc++2.10-glibc2.2 previamente no seleccionado.
(Leyendo la base de datos ...
19699 ficheros y directorios instalados actualmente.)
Desempaquetando libstdc++2.10-glibc2.2 (de libstdc++2.10-glibc2.2_2.95.4-24_i386.deb) ...
Configurando libstdc++2.10-glibc2.2 (2.95.4-24) ...

Instalado. Una forma menos cómoda, porque tenemos que buscar el paquete por nuestra cuenta, pero que siempre nos puede sacar de un apuro.

En estos ejemplos he utilizado apt y paquetes .deb de distros basadas en debian. Según la distribución de linux, usaremos otros gestores (yum, urpmi, emerge...) o paquetería rpm (redhat, fedora, etc...).

RELACIONADOS 10 trucos para Windows que deberías conocer RELACIONADOS Reparar vistas en miniatura de videos AVI RELACIONADOS Cómo crear GIF animados sin morir en el intento
x 10 trucos para Windows que deberías conocer
Manz

10 comentarios

Publica tu opinión