我想安装惊人的窗口管理器。在我想要配置它的环境中,我没有 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 环境变量。