¿Cuál es la utilidad de los paquetes de desarrollo como “libgtk+-devel” o “python-devel”, etc.? ¿Contienen fuente de la biblioteca? ¿En qué se diferencia de los paquetes que no son de desarrollo como libgtk+?
¿Qué son los paquetes *-devel?
Diferencia
Joaquín Sauer
los *-devel
paquetes (normalmente llamados *-dev
en las distribuciones basadas en Debian) suelen ser todos los archivos necesarios para compilar el código en una biblioteca determinada.
Para ejecutar una aplicación utilizando la biblioteca. libfoo
solo el archivo de biblioteca realmente compartido (*.so.*
por ejemplo libfoo.so.1.0
) son necesarios (más posiblemente algunos archivos de datos y algunos enlaces simbólicos específicos de la versión).
Cuando realmente desee compilar una aplicación C que use esa biblioteca, necesitará los archivos de encabezado (*.h
por ejemplo foo.h
) que describen la interfaz de esa aplicación, así como un enlace simbólico sin versión a la biblioteca compartida (*.so
por ejemplo libfoo.so
-> libfoo.so.1.0
). Esos generalmente se agrupan en el *-devel
paquetes
A veces el *-devel
Los paquetes también incluyen versiones compiladas estáticamente de las bibliotecas (*.a
por ejemplo libfoo.a
) en caso de que desee crear una aplicación independiente completa que no dependa en absoluto de bibliotecas dinámicas.
Otros lenguajes (como Java, Python, …) usan una forma diferente de anotar la API de una biblioteca (incluyendo efectivamente toda la información necesaria en la biblioteca real) y, por lo tanto, generalmente no necesitan *-devel
paquetes (excepto quizás para documentación y herramientas adicionales).
-
Casi. los
.so
el archivo está en el paquete -devel; la biblioteca compartida normal pasa.so.*
, ya que incluye un SONAME. los.so
el archivo es utilizado por el enlazador, y el.so.*
biblioteca se utiliza en tiempo de ejecución.– Ignacio Vázquez-Abrams
2 de marzo de 2010 a las 4:48
-
Entonces, básicamente, necesita las bibliotecas *devel de la aplicación en cuestión si es una dependencia de otra aplicación, ¿porque necesita exponer la interfaz?
– Oh
31 de julio de 2018 a las 9:54
-
@ohhh: no. Solo necesita esos paquetes si compilar algo que necesita esa biblioteca. Si un paquete usos esa biblioteca entonces no necesitas la
-devel
paquete. En otras palabras: la mayoría de los usuarios normales nunca necesitarán el-devel
paquete, pero los desarrolladores podrían.– Joaquín Sauer
26 de julio de 2021 a las 8:53
Por lo general, contienen encabezados y bibliotecas necesarios. Por ejemplo, python-devel proporcionará los encabezados y las bibliotecas de Python que necesita si desea integrar el intérprete de Python en su propia aplicación. También se incluyen algunas herramientas y documentación adicionales (por ejemplo, un manual para desarrolladores o ejemplos de código).
-
¿Son herramientas como pyinstaller un ejemplo del uso de esto? Porque los congeladores AFAIK también incorporan un intérprete de Python en el paquete que crean, que es justo lo que ha dicho aquí.
– aderchox
7 de agosto de 2020 a las 19:32
No vale la pena abrir otra respuesta, pero además de las respuestas existentes, debo enfatizar que los empaquetadores intentan incluir un paquete que no es de desarrollo, como
libgtk+
la huella mínima necesaria para ejecutar (a diferencia de “desarrollar”) programas gtk+. Eso significa solo bibliotecas dinámicas y archivos de configuración. Todo lo demás va en el complementario.-devel
paquete.– Pascal Cuoq
2 de marzo de 2010 a las 4:33