web-dev-qa-db-fra.com

Est-il possible d'exécuter une application dans le chroot ou le conteneur mais autoriser l'interaction de DBus avec le système hôte?

J'ai besoin d'exécuter l'ancienne version de l'application dans chroot (ou conteneur) et autoriser l'interaction de DBus avec le système hôte. Je ne peux pas installer cette application sur le système hôte en raison de graves problèmes de dépendance.

Détails complets sur les applications:

  • l'application à conteneuriser est GNOME Evolution version 3.2.3 (à partir d'Ubuntu 12.04 LTS)
  • le système hôte est Ubuntu MATE 16.04 LTS, il fonctionnera en arrière indicator-datetime-gtk2, qui communique avec Evolution conteneurisé via D-BUS.

J'espère que c'est techniquement possible avec les montures de liaison de schroot ou LXC/LXD.

Comment dois-je installer une telle configuration?

6
N0rbert

Difficultés à utiliser indicator-datetime-gtk2 (depuis Ubuntu 12.04 LTS) sur Ubuntu MATE 16.04 LTS avec GNOME Evolution

Le MATE DE 1.12.1 utilise GTK2 sur Ubuntu 16.04 LTS, donc le indicator-datetime-gtk2 lui-même peut être porté depuis Ubuntu 12.04 LTS et affiché dans mate-indicator-applet, mais l'intégration avec GNOME Evolution moderne ne fonctionnera pas en raison d'une modification sérieuse de l'API.

Basé sur GTK3 habituel indicator-datetime ou son fork UBports ne s'intégrera pas à GTK2 mate-indicator-applet.

La solution DBUS LXC/LXD semble ne pas être applicable au problème actuel. Il y a un problème avec l'adressage du bus ou la dénomination du service.

La solution pour Ubuntu MATE 16.04 LTS

Je n'ai trouvé qu'une seule solution hacky pour Ubuntu 16.04 LTS MATE - pour installer le panneau Xfce4 et ajouter indicator-datetime applet avec:

Sudo apt-get install indicator-datetime evolution
Sudo apt-get install xfce4-panel xfce4-indicator-plugin --no-install-recommends

avec runnable MATE panels.

Et configurez le panneau Xfce4 ajouté avec les options ci-dessous:

  1. Choisissez Un panneau vide au premier lancement
  2. Faites un clic droit sur le panneau, sélectionnez Ajouter de nouveaux éléments
  3. Recherchez Plugin indicateur et ajoutez-le
  4. Déplacez le panneau Xfce4 dans le coin supérieur droit, Verrouillez le panneau et configurez-le pour masquer automatiquement ( Masquer automatiquement le panneau : Toujours )

Avoir xfce4-panel affiché à chaque démarrage, je l'ai ajouté aux applications de démarrage:

mkdir -p ~/.config/autostart
cat <<EOF > ~/.config/autostart/xfce4-panel.desktop
[Desktop Entry]
Type=Application
Exec=xfce4-panel &
Hidden=false
X-MATE-Autostart-enabled=true
Name=xfce4-panel
EOF

et définissez éventuellement indicator-datetime au format 24 heures avec:

gsettings set com.canonical.indicator.datetime time-format '24-hour'

ce qui donne à l'indicateur de calendrier synchronisable une belle apparence:

  • le calendrier est masqué xfce4-panel with indicator-datetime - hidden
  • le calendrier est affiché xfce4-panel with indicator-datetime - shown
  • GNOME Evolution ouvert - GNOME Evolution with event
1
N0rbert

Consultez le guide suivant sur la façon de

  1. créer un conteneur système avec une ancienne version d'Ubuntu (comme 12.04 ou 14.04), et
  2. configurez-le afin que vous puissiez exécuter des programmes GUI à partir de ce conteneur système et obtenir la sortie sur votre hôte

Voir le guide de https://blog.simos.info/how-to-easily-run-graphics-accelerated-gui-apps-in-lxd-containers-on-your-ubuntu-desktop/ .

Le guide contient un exemple d'exécution d'un ancien utilitaire Tcl/Tk dans un conteneur système Ubuntu 12.04.

1
Simos

Il y a un indicator-datetimeversion pour 16.04 qui mai fonctionne pour vous. Le développement semble avoir bloqué le travail sur la version 16.10 mais cela peut fonctionner pour vous sous 18.04.

0
WinEunuuchs2Unix