Як дізнатися, яка версія 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
Будь-яка пропозиція щодо Windows? як знайти встановлену версію gtk у Windows?
Аві Мехенваль

Програма pkg-config є частиною інсталяції Windows. Отже, написання pkg-config --modversion gtk + -2.0 у командному рядку повинно працювати.
pepan

1
Практично впевнений, що libgtk*in dpkg -l libgtk*повинен бути укладений в одинарні лапки ( dpkg -l 'libgtk*'), щоб запобігти розширенню символів підстановки на рівні оболонки.
sevko

Якщо глобальних збігів немає, а їх тут, мабуть, немає, тоді він буде переданий команді нерозгорнутим, тож це спрацює. Але справді було б безпечніше цитувати це.
Mark Baker


24

Ви можете використовувати цю команду:

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

1
Це отримувало незначні версії GTK + 2, але GTK + 3 випускається вже багато років, і GTK + 4 вже на шляху.
liberforce

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

gtkv.c: 1: 21: фатальна помилка: gtk / gtk.h: Немає такого файлу чи каталогу
niken

@tsbertalan "використовувати зараз" залежить від того, до якої версії GTK пов’язані ваші різні програми.
Химера


3

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


3

Це не так складно.

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

gtk-launch --version

2

Я думаю, що спосіб незалежного розподілу:

gtk-config --version


2
Хоча gtk-config не залежить від розподілу, він працює лише для GTK 1.x. Правильним способом для нових версій є використання pkg-config, як я вже сказав у своїй відповіді.
Mark Baker

2

Спробуйте:

 dpkg-query -W libgtk-3-bin

Це був єдиний відповідь , який веде себе по- іншому , коли я заміняв 2на 3.
tsbertalan

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 +, за допомогою певної магії, це дає:

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.