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

79

Мне нужно определить, какая версия 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 нет и, вероятно, их здесь нет, то он будет передан команде без расширения, так что это сработает. Но процитировать его было бы действительно безопаснее.
Марк Бейкер
25

получить версию GTK3:

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

или просто номер версии

dpkg -s libgtk-3-0|grep '^Version' | cut -d' ' -f2-
Доктор Каспер Блэк
источник
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
5

Пытаться,

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

или же,

dpkg -l libgtk2.0-0 libgtk-3-0
Максим Шатов
источник
3

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

Лука Маринко
источник
3

Это не так уж и сложно.

Просто проверьте версию утилит gtk + toolkit в терминале:

gtk-launch --version
оставшийся в живых303
источник
2

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

gtk-config --version

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

Пытаться:

 dpkg-query -W libgtk-3-bin
ТорСаммонер
источник
Это был единственный ответ , который ведет себя по- другому , когда я заменял 2на 3.
tsbertalan 03
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
liberforce
источник
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, так что я думаю, что мой вывод верен.

Helge
источник
0

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

apt list --installed libgtk*
Страгу
источник