在非root环境下编译并执行Awesome

在非root环境下编译并执行Awesome

我想安装惊人的窗口管理器。在我想要配置它的环境中,我没有 root 访问权限。这是我所在学院的所有用户的共享环境。

我可以在我的笔记本电脑上安装一个虚拟机(我已经这样做了),以便以 root 身份在某个地方更轻松地做事。

就我而言,我想要执行窗口管理器的环境是 Ubuntu,因此我在虚拟机中安装了该发行版。

我尝试了以下方法:

[vm]$ sudo apt-get install awesome
The following packages are about to be installed:
  awesome libev3 libid3tag0 libimlib2 liblua5.1-0 libxcb-icccm1 libxcb-image0
  libxcb-keysyms1 libxcb-property1 libxcb-randr0 libxcb-xinerama0
  libxcb-xtest0 libxdg-basedir1 menu rlwrap
Do you want to continue [Y/n]? n

我现在有 awesome 的依赖项列表,所以我下载了它们全部。为此,我做了以下操作。

[vm]$ pkgs="awesome libev3 libid3tag0 libimlib2 liblua5.1-0 libxcb-icccm1 libxcb-image0
  libxcb-keysyms1 libxcb-property1 libxcb-randr0 libxcb-xinerama0
  libxcb-xtest0 libxdg-basedir1 menu rlwrap" # this is just for not writing it all ;)
[vm]$ sudo apt-get install --download-only $pkgs
....
[vm]$ mkdir -p /tmp/x_debs
[vm]$ for pkg in $pkgs; do cp /var/cache/apt/archives/$pkg* /tmp/x_debs/; done
[ copies all *.deb from my dependencies to /tmp/x_debs ]

现在,我要安装依赖项。为此,我在主文件夹中设置了一个伪 dpkg 安装:

[vm]$ mkdir $HOME/root
[vm]$ mkdir -p $HOME/root/var/lib/dpkg/{triggers,updates}
[vm]$ touch $HOME/root/var/lib/dpkg/{available,status}

现在我尝试使用 dpkg 安装,但是无法安装:

[vm]$ dpkg --force-not-root --root=$HOME/root --recursive -i /tmp/x_debs

尝试设置软件包权限并运行 chroot 时失败。由于我在这台机器上拥有 root 访问权限,因此我以特权运行它:

[vm]$ sudo dpkg --root=$HOME/root --recursive -i /tmp/x_debs

然后我在里面安装了很多东西(即所有东西:依赖项和自己的 WM)$HOME/root。特别是,在 中安装了 xcb-* 库$HOME/root/usr/lib,在 中安装了 awesome 二进制文件$HOME/root/usr/bin/awesome

如果我尝试按原样执行 awesome,则会收到无法加载库的错误。这很正常,因为它们不在 /usr/lib 中,也不在 /lib 中。所以我运行了export LD_LIBRARY_PATH=$HOME/root/usr/lib:$HOME/root/lib:${LD_LIBRARY_PATH}awesome尝试加载。

但是,我无法让 gdmawesome在 gnome 中运行或替换它。

我这样做是为了可以复制 $HOME/root 文件夹中的所有内容,将其粘贴到另一台机器上并运行它。还有其他方法(也许可以减少浪费的空间……)来做到这一点吗?

我怎样才能告诉 gdm exec awesome无需 root 访问权限?

此外,我是否可以轻松地用适合我的安装的路径替换 Awesome 上该死的硬编码路径?最好使用代码中的 $HOME 环境变量。

相关内容