是否可以在 chroot 或容器中运行某些应用程序,但允许 DBus 与主机系统交互?

N0r*_*ert 6 chroot lxc mate lxd 16.04

我需要在chroot(或容器)中运行旧版本的应用程序并允许 DBus 与主机系统交互。由于严重的依赖性问题,我无法在主机系统上安装此应用程序。

有关应用程序的完整详细信息:

  • 要容器化的应用程序是 GNOME Evolution 版本 3.2.3(来自 Ubuntu 12.04 LTS)
  • 主机系统是 Ubuntu MATE 16.04 LTS,它将运行向后移植indicator-datetime-gtk2,它通过 D-BUS 与容器化的 Evolution 通信。

我希望使用schroot's bind mounts 或 LXC/LXD在技​​术上是可行的。

我应该如何设置这样的配置?

N0r*_*ert 0

indicator-datetime-gtk2在带有 GNOME Evolution 的 Ubuntu MATE 16.04 LTS 上使用(从 Ubuntu 12.04 LTS 开始)时遇到困难

\n\n

MATE DE 1.12.1 在 Ubuntu 16.04 LTS 上使用 GTK2,因此其indicator-datetime-gtk2本身可能是从 Ubuntu 12.04 LTS 移植的,如图所示mate-indicator-applet,但由于 API 发生了严重变化,与现代 GNOME Evolution 的集成将无法工作。

\n\n

通常基于 GTK3indicator-datetime或其UBports 的分支不会集成到基于 GTK2 的mate-indicator-applet.

\n\n

DBUS LXC/LXD 解决方案似乎不适用于当前问题。总线寻址或服务命名有问题。

\n\n

Ubuntu MATE 16.04 LTS 的解决方案

\n\n

我只找到了一种适用于 Ubuntu 16.04 LTS MATE 的 hacky 解决方案 - 安装 Xfce4 面板并向indicator-datetime其中添加小程序:

\n\n
sudo apt-get install indicator-datetime evolution\nsudo apt-get install xfce4-panel xfce4-indicator-plugin --no-install-recommends\n
Run Code Online (Sandbox Code Playgroud)\n\n

以及可运行的 MATE 面板。

\n\n

并使用以下选项配置添加的 Xfce4 面板:

\n\n
    \n
  1. 第一次启动时选择一个空面板
  2. \n
  3. 右键单击面板,选择添加新项目
  4. \n
  5. 搜索指标插件并添加
  6. \n
  7. 将 Xfce4 面板移动到右上角,锁定面板并设置为自动隐藏(自动隐藏面板: \xe2\x86\x92始终
  8. \n
\n\n

为了xfce4-panel在每次启动时显示,我已将其添加到启动应用程序中:

\n\n
mkdir -p ~/.config/autostart\ncat <<EOF > ~/.config/autostart/xfce4-panel.desktop\n[Desktop Entry]\nType=Application\nExec=xfce4-panel &\nHidden=false\nX-MATE-Autostart-enabled=true\nName=xfce4-panel\nEOF\n
Run Code Online (Sandbox Code Playgroud)\n\n

并可选择设置indicator-datetime为 24 小时格式:

\n\n
gsettings set com.canonical.indicator.datetime time-format \'24-hour\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

这提供了漂亮的自动隐藏可同步日历指示器:

\n\n
\n
    \n
  • 日历被隐藏带有日期时间指示器的 xfce4-面板 - 隐藏
  • \n
  • 显示日历带有日期时间指示器的 xfce4-panel - 显示
  • \n
  • GNOME 进化开启 -GNOME Evolution 与事件
  • \n
\n
\n