Pregunta

Necesito determinar qué versión de GTK+ está instalada en Ubuntu

El hombre no parece ayudar

¿Fue útil?

Solución

Esta sugerencia le dirá qué versión menor de 2.0 está instalada.Las diferentes versiones principales tendrán diferentes nombres de paquetes porque pueden coexistir en el sistema (para admitir aplicaciones creadas con versiones anteriores).

Incluso para los archivos de desarrollo, que normalmente solo le permitirían tener una versión en el sistema, puede tener una versión de gtk 1.x y una versión de gtk 2.0 en el mismo sistema (los archivos de inclusión están en directorios llamados gtk-1.2 o gtk-2.0).

En resumen, no hay una respuesta sencilla a "qué versión de GTK hay en el sistema".Pero...

Pruebe algo como:

dpkg -l libgtk* | grep -e '^i' | grep -e 'libgtk-*[0-9]'

para enumerar todos los paquetes libgtk, incluidos los -dev, que están en su sistema. dpkg -l enumerará todos los paquetes que dpkg conoce, incluidos los que no están instalados actualmente, por lo que he usado grep para enumerar solo los que están instalados (la línea comienza con i).

Alternativamente, y probablemente mejor si lo que le interesa es la versión de los encabezados, etc., use pkg-config:

pkg-config --modversion gtk+

le dirá qué versión de los archivos de desarrollo GTK 1.x están instaladas y

pkg-config --modversion gtk+-2.0

Te diré qué versión de GTK 2.0.La antigua versión 1.x también tiene su propio programa gtk-config que hace lo mismo.De manera similar, para GTK+ 3:

pkg-config --modversion gtk+-3.0

Otros consejos

$ dpkg -s libgtk2.0-0|grep '^Version'

obtener la versión GTK3:

dpkg -s libgtk-3-0|grep '^Version'

o simplemente el número de versión

dpkg -s libgtk-3-0|grep '^Version' | cut -d' ' -f2-

También puedes simplemente compilar el siguiente programa y ejecutarlo en tu máquina.

#include <gtk/gtk.h>
#include <glib/gprintf.h>

int main(int argc, char *argv[])
{
    /* Initialize GTK */
    gtk_init (&argc, &argv);

    g_printf("%d.%d.%d\n", gtk_major_version, gtk_minor_version, gtk_micro_version);
    return(0);
}

compilar con (suponiendo que el archivo fuente anterior se llame versión.c):

gcc version.c -o version `pkg-config --cflags --libs gtk+-2.0`

Cuando ejecute esto, obtendrá algunos resultados.En mi antiguo dispositivo integrado aparece lo siguiente:

[root@n00E04B3730DF n2]# ./version 
2.10.4
[root@n00E04B3730DF n2]#

Intentar,

apt-cache policy libgtk2.0-0 libgtk-3-0 

o,

dpkg -l libgtk2.0-0 libgtk-3-0

También puede simplemente abrir synaptic y buscar libgtk, le mostrará exactamente qué biblioteca está instalada.

Intentar:

 dpkg-query -W libgtk-3-bin

Creo que una forma independiente de la distribución es:

gtk-config --version

Esto obtendrá la versión de las bibliotecas GTK+ para GTK+ 2 y GTK+ 3.

dpkg -l | egrep "libgtk(2.0-0|-3-0)"

Como las versiones principales se pueden instalar en paralelo, es posible que tenga ambas en su sistema, que es mi caso, por lo que el comando anterior devuelve esto en mi sistema Ubuntu Trusty:

ii  libgtk-3-0:amd64                                      3.10.8-0ubuntu1.6                                   amd64        GTK+ graphical user interface library
ii  libgtk2.0-0:amd64                                     2.24.23-0ubuntu1.4                                  amd64        GTK+ graphical user interface library

Esto significa que tengo instalado GTK+ 2.24.23 y 3.10.8.

Si lo que quieres es la versión de los archivos de desarrollo usa pkg-config --modversion gtk+-3.0 por ejemplo para GTK+ 3.Para extender eso a las diferentes versiones principales de GTK+, con algo de magia sed, esto da:

pkg-config --list-all | sed -ne 's/\(gtk+-[0-9]*.0\).*/\1/p' | xargs pkg-config --modversion

Para que la respuesta sea más general que Ubuntu (tengo Redhat):

gtk normalmente se instala en /usr, pero posiblemente en otras ubicaciones.Esto debería ser visible en las variables de entorno.Comprobar con

env | grep gtk

Luego intente encontrar dónde están almacenados sus archivos gtk.Por ejemplo, utilice locate y grep.

locate gtk | grep /usr/lib

De esta manera encontré /usr/lib64/gtk-2.0, que contiene el subdirectorio 2.10.0, que contiene muchos archivos de biblioteca .so.Mi conclusión es que tengo gtk+ versión 2.10.Esto es bastante consistente con el comando rpm en Redhat: rpm -qa | grep gtk2, entonces creo que mi conclusión es correcta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top