Скомпилируйте и выполните 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
и удивительный двоичный файл в $HOME/root/usr/bin/awesome
,
Если я пытаюсь выполнить Awesome как есть, я получаю сообщение об ошибке, что библиотеки не могут быть загружены. Это нормально, так как они не находятся ни в /usr/lib, ни в /lib. Итак, я побежал export LD_LIBRARY_PATH=$HOME/root/usr/lib:$HOME/root/lib:${LD_LIBRARY_PATH}
и офигенно попробовал бы загрузить.
Тем не менее, я не мог заставить GDM работать awesome
внутри гнома или его замены.
Я сделал это таким образом, чтобы я мог скопировать все в папку $HOME/root, вставить ее на другой компьютер и запустить. Есть ли другой способ (чтобы было меньше потраченного впустую пространства, может быть..) сделать это?
Как я могу сказать GDM exec awesome
без рут-доступа?
Кроме того, могу ли я легко заменить чертовски жестко заданные пути в Awesome путями, которые могут соответствовать моей установке? Желательно с переменной окружения $ HOME в коде.