Eu quero instalar o gerenciador de janelas Awesome . No ambiente em que quero configurá-lo, não tenho acesso root. É um ambiente compartilhado para todos os usuários da Faculdade em que eu estudo.
Eu sou capaz, difícil, de instalar uma máquina virtual (que eu fiz) no meu laptop, de modo a ser o root em algum lugar que eu possa fazer as coisas mais fáceis.
No meu caso, o ambiente no qual eu quero executar o gerenciador de janelas é um Ubuntu, então eu instalei essa distro em uma máquina virtual.
Eu tentei o seguinte:
[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
Agora tenho a lista de dependências incríveis, então baixei todas elas. Para isso, fiz o seguinte.
[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 ]
Agora, quero instalar as dependências. Para isso, eu configurei uma instalação falsa do dpkg na minha pasta pessoal:
[vm]$ mkdir $HOME/root
[vm]$ mkdir -p $HOME/root/var/lib/dpkg/{triggers,updates}
[vm]$ touch $HOME/root/var/lib/dpkg/{available,status}
Agora tentei instalar com o dpkg, mas não consegui:
[vm]$ dpkg --force-not-root --root=$HOME/root --recursive -i /tmp/x_debs
Ele falhou ao tentar definir permissões para os pacotes e executar o chroot. Como eu tenho acesso root nesta máquina, eu corri com privilégios:
[vm]$ sudo dpkg --root=$HOME/root --recursive -i /tmp/x_debs
Então eu tinha muitas coisas (isto é, tudo: dependências e o próprio WM) instaladas dentro de $HOME/root
.
Particularmente, as bibliotecas xcb- * foram instaladas em $HOME/root/usr/lib
e o incrível binário em $HOME/root/usr/bin/awesome
.
Se eu tentar executar o máximo, recebo como erro que as bibliotecas não puderam ser carregadas.
Isso é normal, pois eles não estão em / usr / lib nem em / lib. Então eu corri export LD_LIBRARY_PATH=$HOME/root/usr/lib:$HOME/root/lib:${LD_LIBRARY_PATH}
e awesome iria tentar carregar.
No entanto, não consegui fazer o gdm executar awesome
no gnome ou substituí-lo.
Eu fiz desta forma para copiar tudo na pasta $ HOME / root, colá-lo na outra máquina e executá-lo. Existe alguma outra maneira (de ter menos espaço desperdiçado talvez ...) para fazer isso?
Como posso dizer ao gdm para exec awesome
sem acesso root?
Além disso, posso substituir facilmente os caminhos gravados no Awesome por caminhos que podem caber na minha instalação? De preferência com a variável de ambiente $ HOME no código.