Jak sprawdzić, która wersja GTK + jest zainstalowana na Ubuntu?


80

Muszę ustalić, która wersja GTK + jest zainstalowana na Ubuntu

Wydaje się, że człowiek nie pomaga

Odpowiedzi:


72

Ta sugestia powie Ci, która wersja pomocnicza 2.0 jest zainstalowana. Różne wersje główne będą miały różne nazwy pakietów, ponieważ mogą współistnieć w systemie (w celu obsługi aplikacji zbudowanych na starszych wersjach).

Nawet dla plików deweloperskich, które normalnie pozwolą ci mieć tylko jedną wersję w systemie, możesz mieć wersję gtk 1.xi wersję gtk 2.0 w tym samym systemie (pliki nagłówkowe są w katalogach o nazwie gtk-1.2 lub gtk-2.0).

Krótko mówiąc, nie ma prostej odpowiedzi na pytanie „jaka wersja GTK jest w systemie”. Ale...

Spróbuj czegoś takiego:

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

aby wyświetlić wszystkie pakiety libgtk, łącznie z pakietami -dev, które są w twoim systemie. dpkg -lwyświetli listę wszystkich pakietów, o których wie dpkg, łącznie z tymi, które nie są obecnie zainstalowane, więc użyłem grep, aby wyświetlić tylko te, które są zainstalowane (linia zaczyna się od i).

Alternatywnie, i prawdopodobnie lepiej, jeśli jest to wersja nagłówków itp., Która Cię interesuje, użyj pkg-config:

pkg-config --modversion gtk+

powie ci, jaka wersja plików programistycznych GTK 1.x jest zainstalowana, a

pkg-config --modversion gtk+-2.0

powie ci, która wersja GTK 2.0. Stara wersja 1.x ma również swój własny program gtk-config, który robi to samo. Podobnie w przypadku GTK + 3:

pkg-config --modversion gtk+-3.0

1
Jakieś sugestie dotyczące okien? jak znaleźć zainstalowaną wersję gtk w systemie Windows?
Avi Mehenwal

Program pkg-config jest częścią instalacji systemu Windows. Zatem wpisanie pkg-config --modversion gtk + -2.0 w linii poleceń powinno działać.
pepan

1
Całkiem pewny, że libgtk*in dpkg -l libgtk*musi być ujęty w pojedyncze cudzysłowy ( dpkg -l 'libgtk*'), aby zapobiec rozwijaniu symboli wieloznacznych na poziomie powłoki.
sevko

Jeśli nie ma dopasowań glob i prawdopodobnie nie ma ich tutaj, zostanie przekazana do polecenia w postaci nierozwiniętej, więc to zadziała. Ale rzeczywiście bezpieczniej byłoby to zacytować.
Mark Baker

25

pobierz wersję GTK3:

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

lub tylko numer wersji

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

24

Możesz użyć tego polecenia:

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

1
Otrzymywało to pomniejsze wersje GTK + 2, ale GTK + 3 było niedostępne od lat, a GTK + 4 jest w drodze.
liberforce

9

Możesz także po prostu skompilować następujący program i uruchomić go na swoim komputerze.

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

skompiluj z (zakładając, że powyższy plik źródłowy nosi nazwę wersja.c):

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

Kiedy to uruchomisz, uzyskasz pewne wyniki. Na moim starym urządzeniu wbudowanym otrzymuję następujące informacje:

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

2
Jeśli skompiluję tak, jak mówisz, otrzymam 2.24.27. Jeśli --libs gtk+-3.0zamiast tego skompiluję , otrzymam 3.10.8. To po prostu wydaje mi się mówić, że mam pliki programistyczne dla obu, ale nie używam ich w tej chwili.
tsbertalan

gtkv.c: 1: 21: błąd krytyczny: gtk / gtk.h: Brak takiego pliku lub katalogu
niken

@tsbertalan „używanie w tej chwili” zależy od wersji GTK, z którą połączone są twoje różne aplikacje.
Chimera


4

To nie jest takie trudne.

Po prostu sprawdź wersję narzędzi gtk + toolkit z terminala:

gtk-launch --version

3

Możesz także po prostu otworzyć synaptic i wyszukać libgtk, pokaże ci dokładnie, która biblioteka jest zainstalowana.


2

Myślę, że sposób niezależny od dystrybucji to:

gtk-config --version


2
Chociaż gtk-config jest niezależny od dystrybucji, działa tylko dla GTK 1.x. Jak powiedziałem w mojej odpowiedzi, poprawnym sposobem dla nowszych wersji jest użycie pkg-config.
Mark Baker,


1

Spowoduje to uzyskanie wersji bibliotek GTK + dla GTK + 2 i GTK + 3.

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

Ponieważ główne wersje są instalowane równolegle, możesz mieć oba w swoim systemie, co jest moim przypadkiem, więc powyższe polecenie zwraca to w moim systemie 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

Oznacza to, że mam zainstalowane GTK + 2.24.23 i 3.10.8.

Jeśli chcesz, to wersja plików deweloperskich, użyj pkg-config --modversion gtk+-3.0na przykład dla GTK + 3. Aby rozszerzyć to na różne główne wersje GTK +, z odrobiną magii seda, daje to:

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

0

Aby odpowiedź była bardziej ogólna niż Ubuntu (mam Redhat):

gtk jest zwykle instalowany w / usr, ale prawdopodobnie w innych lokalizacjach. Powinno to być widoczne w zmiennych środowiskowych. Sprawdź z

env | grep gtk

Następnie spróbuj znaleźć miejsce przechowywania plików GTK. Na przykład użyj locatei grep.

locate gtk | grep /usr/lib

W ten sposób znalazłem /usr/lib64/gtk-2.0, który zawiera podkatalog 2.10.0zawierający wiele plików bibliotecznych .so. Mój wniosek jest taki, że mam GTK + w wersji 2.10. Jest to raczej zgodne z poleceniem rpm na Redhat:, rpm -qa | grep gtk2więc myślę, że mój wniosek jest słuszny.


0

Ponieważ apt-cache policywyświetli listę wszystkich dostępnych dopasowań, nawet jeśli nie są zainstalowane, sugerowałbym użycie tego polecenia dla łatwiejszej w zarządzaniu krótkiej listy pakietów związanych z GTK zainstalowanych w twoim systemie:

apt list --installed libgtk*
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.