Как узнать, какая версия GTK + установлена ​​в Ubuntu?


Ответы:


72

Это предложение сообщит вам, какая дополнительная версия 2.0 установлена. Разные основные версии будут иметь разные имена пакетов, потому что они могут сосуществовать в системе (для поддержки приложений, созданных с использованием более старых версий).

Даже для файлов разработки, которые обычно позволяют иметь только одну версию в системе, вы можете иметь версию gtk 1.x и версию gtk 2.0 в одной системе (включаемые файлы находятся в каталогах, называемых gtk-1.2 или gtk-2.0).

Короче говоря, нет простого ответа на вопрос, «какая версия GTK установлена ​​в системе». Но...

Попробуйте что-нибудь вроде:

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

чтобы вывести список всех пакетов libgtk, включая пакеты -dev, которые есть в вашей системе. dpkg -lбудет перечислять все пакеты, о которых знает dpkg, включая те, которые в настоящее время не установлены, поэтому я использовал grep, чтобы перечислить только те, которые установлены (строка начинается с i).

В качестве альтернативы, и, возможно, лучше, если это версия заголовков и т. Д., Которая вас интересует, используйте pkg-config:

pkg-config --modversion gtk+

сообщит вам, какая версия файлов разработки GTK 1.x установлена, и

pkg-config --modversion gtk+-2.0

подскажет какая версия GTK 2.0. В старой версии 1.x также есть собственная программа gtk-config, которая делает то же самое. Аналогично для GTK + 3:

pkg-config --modversion gtk+-3.0

1
Любое предложение для окон? как найти установленную версию gtk в windows?
— Ави Мехенвал

Программа pkg-config является частью установки Windows. Поэтому запись pkg-config --modversion gtk + -2.0 в командной строке должна работать.
— pepan

1
Вполне уверен, что libgtk*in dpkg -l libgtk*нужно заключить в одинарные кавычки ( dpkg -l 'libgtk*'), чтобы предотвратить расширение подстановочных знаков на уровне оболочки.
— sevko

Если совпадений glob нет и, вероятно, их здесь нет, то он будет передан команде без расширения, так что это сработает. Но процитировать его было бы действительно безопаснее.
— Марк Бейкер


24

Вы можете использовать эту команду:

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

1
Это были второстепенные версии GTK + 2, но GTK + 3 отсутствовал уже много лет, и GTK + 4 готовится.
— liberforce 05

9

Вы также можете просто скомпилировать следующую программу и запустить ее на своем компьютере.

#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);
}

скомпилировать с помощью (при условии, что исходный файл называется version.c):

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

Когда вы запустите это, вы получите некоторый результат. На моем старом встроенном устройстве я получаю следующее:

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

2
Если я скомпилирую, как вы говорите, я получу 2.24.27. Если я скомпилирую --libs gtk+-3.0вместо этого, я получу 3.10.8. Это просто говорит мне, что у меня есть файлы разработки для обоих, но не те, которые я использую в данный момент.
— tsbertalan 03

gtkv.c: 1: 21: фатальная ошибка: gtk / gtk.h: нет такого файла или каталога
— niken

@tsbertalan "используется в данный момент" зависит от того, с какой версией GTK связаны ваши различные приложения.
— Chimera


3

Вы также можете просто открыть synaptic и выполнить поиск по libgtk, он покажет вам, какая именно библиотека установлена.



2

Я думаю, что независимый от распространения способ:

gtk-config --version


2
Хотя gtk-config не зависит от дистрибутива, он работает только с GTK 1.x. Правильный способ для более новых версий - использовать pkg-config, как я сказал в своем ответе.
— Марк Бейкер,


1

Это получит версию библиотек GTK + для GTK + 2 и GTK + 3.

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

Поскольку основные версии устанавливаются параллельно, в вашей системе могут быть обе версии, что является моим случаем, поэтому приведенная выше команда возвращает это в моей системе 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

Это означает, что у меня установлены GTK + 2.24.23 и 3.10.8.

Если вам нужна версия файлов разработки, используйте, pkg-config --modversion gtk+-3.0например, для GTK + 3. Чтобы распространить это на различные основные версии GTK +, с некоторой магией sed, это дает:

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

0

Чтобы сделать ответ более общим, чем в Ubuntu (у меня Redhat):

gtk обычно устанавливается в / usr, но возможно и в других местах. Это должно быть видно в переменных окружения. Проверить с

env | grep gtk

Затем попробуйте найти, где хранятся ваши файлы gtk. Например, используйте locateи grep.

locate gtk | grep /usr/lib

Таким способом я обнаружил /usr/lib64/gtk-2.0, что он содержит подкаталог 2.10.0, в котором находится множество файлов библиотеки .so. Мой вывод таков, что у меня gtk + версии 2.10. Это скорее согласуется с командой rpm в Redhat : rpm -qa | grep gtk2, так что я думаю, что мой вывод верен.


0

Поскольку apt-cache policyбудут перечислены все доступные совпадения, даже если они не установлены, я бы предложил использовать эту команду для более управляемого короткого списка пакетов, связанных с GTK, установленных в вашей системе:

apt list --installed libgtk*
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.