[Debian/Ubuntu] Installer GTKmm 4

Hey,

Ça doit faire 5 heures que je cherche comment installer GTKmm (la version GTK de C++) 4.0 sur Trisquel GNU/Linux 8.0, dérivé de Debian/Ubuntu. Je navigue entre les différentes docs gtk.org ou developper.gnome.org mais je ne les trouve pas très claires et malheureusement il n’existe aucun cours OpenClassrooms sur GTK. Si vous saviez comment faire ça me serait d’une grande utilité, parce que la nouvelle éthique de Qt me déplaît quelque peu.

Merci, Thib’.

Salut,

As-tu regardé ici ? https://developer.gnome.org/gtkmm-tutorial/stable/chapter-installation.html

Voire ici. https://www.gtkmm.org/fr/documentation.html

Salut Pali,

Alors pour le premier lien j’ai déjà vu et c’est justement ça le problème puisque je n’ai pas gtk4 etc dans la liste des paquets. Si besoin je peux mettre un x-ième PPA. Et pour le deuxième oui également et c’est pour ça que j’ai trouvé le premier lien.

Merci quand même.

The names of the gtkmm packages vary from distribution to distribution (e.g. libgtkmm-4.0-dev on Debian and Ubuntu or gtkmm40-devel on Red Hat Fedora), so check with your distribution’s package management program for the correct package name and install it like you would any other package.

Note:

The package names will not change when new API/ABI-compatible versions of gtkmm are released. Otherwise they would not be API/ABI-compatible. So don’t be surprised, for instance, to find gtkmm 4.8 supplied by Debian’s libgtkmm-4.0-dev package.

Si c’est GTK4 que tu n’arrives pas à installer: pour Debian/Ubuntu les packages sont

  • libgtk-4-0
  • libgtk-4-dev
  • gtk-4-examples (optionel)

Enfin, GTK4 est toujours en mode experimental pour Debian (https://packages.debian.org/experimental/libgtk-4-dev)

1 « J'aime »

Oui ça j’ai compris (je viens même de faire un sudo apt update pour être sûr) mais comme Trisquel restreint énormément les dépôts bah je pense que c’est pour ça qu’il n’y a pas libgtk-4-0 et du coup je pense que la solution est un PPA mais j’en trouve pas.

EDIT : et je n’ai pas trouvé de réponses dans le forum de Trisquel.

C’est parce que c’est sur un dépôt expérimental : https://wiki.debian.org/fr/DebianExperimental

Mais je le déconseillerais vivement pour de la prod.

1 « J'aime »

Ah bah je teste ça et je te dis si c’est la solution :slight_smile:

Ah pourquoi tu le déconseillerais ? En tout cas j’ai eu ça en faisant un sudo apt update :

Err :1 http://deb.debian.org/debian experimental InRelease
  Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 04EE7237B7D453EC  NO_PUBKEY 648ACFD622F3D138
Lecture des listes de paquets... Fait                                          
W: Erreur de GPG : http://deb.debian.org/debian experimental InRelease : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 04EE7237B7D453EC  NO_PUBKEY 648ACFD622F3D138
E: Le dépôt http://deb.debian.org/debian experimental InRelease n'est pas signé.
N: Les mises à jour depuis un tel dépôt ne peuvent s'effectuer de manière sécurisée, et sont donc désactivées par défaut.
N: Voir les pages de manuel d'apt-secure(8) pour la création des dépôts et les détails de configuration d'un utilisateur.

OK j’ai réussi à installer les clés grâce à :
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com votre_n°_de_clé
cf. https://doc.ubuntu-fr.org/apt-key#si_malgre_tout_le_probleme_persiste. Et du coup la mise à jour de la liste des paquets de fait très bien. Et ! J’ai libgtk-4-0 dans la liste des paquets et c’est tout simplement magnifique. Donc après 2 jours (enfin 2 jours où je m’y suis réellement mis, sinon c’est depuis quelques semaines) et bah j’ai enfin réussi à avoir GTK.

Super!

Pourquoi, je déconseille l’expérimental ? Eh bien, si on n’y fait pas attention, nous pourrions utiliser une (ou plusieurs) fonctionnalité(s) dans notre code qui pourrai(en)t disparaître de la release finale. Release dont on ne sait pas quand elle sortira. Peut-être avant que l’on ai mis notre logiciel en prod. Auquel cas, on le verra durant nos tests. Peut-être après. Un mois, un an après ? Et si c’est trop loin, le logiciel risque de ne plus fonctionner correctement. Le client s’énerve parce que ça marchait et que là ça marche plus. Et nous, nous devrons faire un effort mémoriel pour se rappeler que cela aurait pu être le cas.

Ou alors, utiliser du stable et testé. Et là, les updates de la version devront garantir que ça fonctionne toujours de la même manière.

Bref, pour utiliser une experimentale, je pense qu’il faut avoir besoin justement d’une feature qui s’y trouve exclusivement. Car cela rentre dans la mission du logiciel. Autrement, ce n’est que vouloir être à la pointe. Alors que le tranchant a plus de latitude.

Mon point de vue à deux balles

1 « J'aime »

Ah en fait c’est pas si résolu que ça…

Tout marchait ultra-bien et puis j’ai une erreur, il me faut libc6 2.29. Bon du coup j’ai tenté d’installer depuis pckg.org mais quand je faisais dpkg -i je recevais des :

dpkg: concernant libc6_2.31-9_amd64.deb contenant libc6:amd64 :
 libc6:amd64 casse (« breaks ») locales (<< 2.31)
  « locales » (version « 2.23-0ubuntu11.2 ») est présent ainsi que « installé ».

dpkg: erreur de traitement de l'archive libc6_2.31-9_amd64.deb (--install) :
 l'installation de libc6:amd64 casserait locales
 et la déconfiguration n'est pas autorisée (--auto-deconfigure pourrait aider)
Des erreurs ont été rencontrées pendant l'exécution :
 libc6_2.31-9_amd64.deb

même en testant plusieurs versions différentes.

Ce que j’ai tendance à faire pour avoir des versions récentes de librairies gnome à tester, c’est plutôt d’utiliser jhbuild ( https://developer.gnome.org/Jhbuild/ ) qui se charge en général de tout compiler avec les dépendances; en l’occurrence donc « jhbuild build gtkmm »; et comme il utilise essentiellement $HOME/jhbuild/ ça évite de mélanger avec les librairies packagées pour le système

1 « J'aime »

OK Merci mais j’obtiens ça quand je (crois) compiler :

someone@P-someone:~/jhbuild/jhbuild$ ./autogen.sh --simple-install
msgfmt: Erreur lors de l'ouverture de « bs.mo » en écriture: Permission non accordée
Makefile.plain:4 : la recette pour la cible « bs.mo » a échouée
make: *** [bs.mo] Erreur 1
WARNING: yelp-tools not available (usually part of package 'yelp-tools')
Configuring jhbuild without autotools
Unable to create file ./Makefile.inc
someone@P-someone:~/jhbuild/jhbuild$```

mh, bizarre comme erreur… en gros il dit que tu n’as pas les droits de modifier un fichier qui est (censé être) dans ton home… tu n’as rien fait en tant que root ? (il ne faut pas, mais sic 'est le cas et que c’est trop tard tu peux probablement fix ton dossier avec chown -R someone:someone ~/jhbuild)

Salut,

J’ai changé l’accès du dossier avec chown, enfin sudo chown sinon ça marchait pas, et j’obtiens ça en faisait sudo ./autogen.sh --simple-install

WARNING: yelp-tools not available (usually part of package 'yelp-tools')
Configuring jhbuild without autotools
Now type `make' to compile jhbuild

il ne faut pas utiliser sudo ^^ c’est ça qui va te reprovoquer des erreurs comme msgfmt: Erreur lors de l'ouverture de « bs.mo » en écriture: Permission non accordée (et du coup je te conseille fortement de refaire le chown)

Mais là c’est relativement clair: soit tu installes yelp-tools (qui a l’air facultatif) avec un apt install yelp-tools, soit tu fais juste make, qui est l’étape suivante dans le guide que j’ai donné.

ce qui donnera

./autogen.sh --simple-install
# on en est la
make
make install

sudo apt-get install docbook-xsl build-essential git-core python-libxml2 apt-file #pour installer les deps de base, le cas echeant
sudo apt-file update # pour maj apt-file
jhbuild sysdeps --install gtkmm #pour installer les deps necessaires au build de gtkmm
jhbuild build gtkmm # pour compiler gtkmm 

Hey,

Bon désolé j’étais passé sur autre chose, mais quand je fais ./autogen.sh, j’obtiens :

WARNING: yelp-tools not available (usually part of package 'yelp-tools')
Configuring jhbuild without autotools
Now type `make' to compile jhbuild

et sans sudo. Du coup je fais make et make install. Ensuite je fais le tout premier apt-get et je suis bloqué parce que j’obtiens :

Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
build-essential est déjà la version la plus récente (12.1ubuntu2).
docbook-xsl est déjà la version la plus récente (1.79.1+dfsg-1).
docbook-xsl passé en « installé manuellement ».
python-libxml2 est déjà la version la plus récente (2.9.3+dfsg1-1ubuntu0.7).
python-libxml2 passé en « installé manuellement ».
Vous pouvez lancer « apt-get -f install » pour corriger ces problèmes :
Les paquets suivants contiennent des dépendances non satisfaites :
 apt-file : Dépend: libconfig-file-perl mais ne sera pas installé
            Dépend: libregexp-assemble-perl mais ne sera pas installé
 gcc-5-multilib : Dépend: libc6-dev-i386 (>= 2.11) mais ne sera pas installé
 libc6-dev-x32 : Dépend: libc6-dev-i386 (= 2.23-0ubuntu11.2) mais ne sera pas installé
E: Dépendances non satisfaites. Essayez « apt-get -f install » sans paquet
(ou indiquez une solution).

Merci, Thib’

là pour le coup je ne peux pas faire grand-chose, c’est ta gestion d’apt sur ta machine qui est en cause (ça peut être dû à des ppa, à ta version d’ubuntu, ou à des updates non terminées, par exemple) - et ça ne se produit pas sur une installation neuve d’ubuntu (je viens d’essayer dans un docker de 20.04)

1 « J'aime »