Compilar e instalar software es un problema y un problema que no puedo superar. Solo quiero pasar por mi comprensión de este proceso con alguien más conocedor para aclarar mi mente y llegar al siguiente nivel.
Muchos software científicos que necesito no se distribuyen como paquetes. Entiendo que "./configure" configura las variables de compilación y al verificar las dependencias "make", la compilación "sudo make install" coloca todas las bibliotecas y contenedores en su lugar. Sin embargo, nunca funciona. Raramente salgo de la etapa a) "./configure" sin entrar al infierno de dependencias, y si lo hago, b) "sudo make install" probablemente destruirá mi caja.
a) El infierno de dependencia es muy frustrante. A veces tengo la biblioteca, pero no me gusta. O la biblioteca no quiere instalar. O "configurar" no puede encontrarlo. O mi distribución la colocó en algún lugar donde no debería estar. O hay dos versiones en mi sistema. El problema es que no puedo entender cómo diagnosticar y, por lo tanto, solucionar estos problemas. ¿Cuáles son algunas buenas referencias para aprender para alguien que no necesita convertirse en programador?
b) Tengo entendido que "make install" reemplazará algunas bibliotecas y cambiará la configuración sin que mi administrador de paquetes lo sepa. Por lo tanto, algunos programas no se ejecutarán, otros no se pueden actualizar. Entonces, si no uso "make install", y solo mantengo el binario compilado en mi directorio de usuario con un enlace simbólico agregado a la RUTA, ¿estaré en claro?
Mi caja es para un solo usuario, tiene toneladas de HD gratis, así que realmente no me importa tener múltiples (docenas) de copias de bibliotecas si eso resuelve mis problemas. El espacio es barato.
apt-get build-dep <package>
para instalar automáticamente las dependencias necesarias.Respuestas:
La mayoría de los paquetes tendrán un
<package>-dev
(para Debian) o<package>-devel
(para Red Hat) que serán las bibliotecas necesarias para crear un enlace.Entonces, por ejemplo, si la fuente dice que lo requiere
libxml
, en los sistemas basados en Debian encontrarálibxml2
ylibxml2-dev
(useapt-cache search <dependancy>
para encontrarlos).Necesitarás el
libxml2-dev
para construirlo ylibxml2
ejecutarlo.El
./configure
paso generalmente admite indicadores como--with-libxml=/usr/lib/
apuntarlo a las bibliotecas correctas (./configure --help
debe enumerar todas las opciones). Por lo general, también admite cambiar la ubicación de instalación con--prefix=$HOME/sw
. Usar un prefijo fuera de lo que controla su administrador de paquetes es la mejor manera de evitar conflictos con el software instalado del administrador de paquetes.En Debian y derivados, el uso
--prefix
de/usr/local/
o/opt/local/
debería ser seguro.Si una biblioteca (o versión) que necesita no está disponible desde el administrador de paquetes, simplemente descargue la fuente y compílela usando opciones similares. Lo más importante es usar un
--prefix
administrador de paquetes externo y al compilar el software que realmente desea usar--with-<library>=/<path/to/installed/library>
.fuente
Existe la herramienta
auto-apt
que se puede utilizar para esto.Desde man auto-apt :
Se usa de la siguiente manera:
Otra forma es usar
apt-get build-dep <package>
distribuciones basadas en Debian.fuente
apt-get build-dep <package>
trabajó para mi. ¡Fue frustrante correr./configure
una y otra vez para aprender un paquete más requerido!Para distribuciones basadas en RPM, usted podría intentar su mano en la creación de los paquetes apropiados (no es que difícil ...).
Los beneficios de un paquete adecuado son que su administrador de paquetes realiza un seguimiento del software y puede replicar fácilmente su configuración en otro lugar / en la próxima máquina. Con un paquete fuente adecuado que se transfiera hacia adelante (la nueva versión ascendente, el parche de corrección de errores, las bibliotecas subyacentes se actualizan) es más fácil que tener que resolverlo todo desde cero la próxima vez.
fuente