Consolekit e DBus no Gentoo
Embora pareça um problema sem importância, ainda é perceptível o sofrimento de alguns usuários para fazer funcionar o sistema de forma correta no Gentoo. Eu mesmo demorei pra aprender como fazer funcionar a mágica de plugar um pendrive e poder abrir num gerenciador de arquivos com poderes de gravação sem ser root. Se esse for o seu caso, leia este pequeno artigo.
Eu resolvi escrever sobre isso, pois mesmo estando no forum do Gentoo não é tão fácil encontrar. Mas para quem quiser conferir, a postagem original pode ser encotrada aqui. Então mãos à obra.
Ative as USE flags abaixo globalmente:
USE="consolekit dbus pam policykit udev"
Verifique as seguintes opções do kernel, para sys-fs/udisks:
CONFIG_USB_SUSPEND=y CONFIG_IDE=n
E para sys-auth/consolekit:
CONFIG_AUDITSYSCALL=y
Acrescente "gnome-base/gvfs gdu" em /etc/portage/package.use, e então remova os pacotes obsoletos e desnecessários e recompile tudo com as novas USE flags:
# emerge -C hal hal-info policykit devicekit devicekit-disks devicekit-power # emerge -av gvfs udisks upower # emerge -avDNut world
Você precisa ter instalado um agente responsável pela autenticação, para evitar mensagens como: "Not authorized" ao plugar um pendrive.
Para desktops GTK+:
# emerge -av polkit-gnome
Alternativa:
# emerge -av lxpolkit
Para KDE:
# emerge -av polkit-kde-agent
Se você não quer nenhum agente instalado, você precisa ler a documentação após a instalação do polkit:
$ man 8 pklocalauthority
Reinicie os serviços abaixo (lembrando que para o dbus, é necessário estar com o ambiente gráfico fechado para evitar que trave):
# /etc/init.d/hald stop - (se ainda estiver em uso) # rc-update del hald - (se ainda estiver em uso) # rc-update add dbus default - (se já não estiver) # rc-update add consolekit default # /etc/init.d/consolekit restart # /etc/init.d/dbus restart
Método para iniciar o xfce com startx:
$ cat ~/.xinitrc:
exec ck-launch-session startxfce4
E então:
$ startx
Método para iniciar o openbox com startx:
$ cat ~/.xinitrc::
exec ck-launch-session dbus-launch --sh-syntax --exit-with- session openbox-session
$ startx
Ou se você usa fluxbox (com slim ou xdm):
$cat ~/.xinitrc::
exec ck-lauch-session dbus-lauch startfluxbox
E se você usa kdm ou gdm não é necessário criar o arquivo ~/.xinitrc, pois ambos inicializam as sessões automaticamente. Basta refazer o login.
Por fim, você deve ver uma sessão do consolekit ativa após se logar e dar o comando:
$ ck-list-sessions::
Session1: unix-user = '1000' realname = '(null)' seat = 'Seat1' session-type = '' active = FALSE x11-display = '' x11-display-device = '' display-device = '/dev/tty1' remote-host-name = '' is-local = TRUE on-since = '2010-12-25T09:44:12.519713Z' login-session-id = '1' idle-since-hint = '2011-01-02T16:04:09.020983Z' Session3: unix-user = '1000' realname = '(null)' seat = 'Seat1' session-type = '' active = TRUE x11-display = ':0' x11-display-device = '/dev/tty7' display-device = '/dev/tty1' remote-host-name = '' is-local = TRUE on-since = '2011-01-02T16:03:40.847555Z' login-session-id = '1'
Problemas conhecidos que impedem o funcionamento correto do dbus:
Entradas em /etc/fstab conflitam com sys-fs/udisks. Por exemplo, se você quer que seu cdrom seja gerenciado pelo udisks (e suporte a gerenciador de arquivos, como nautilus, pcmanfm or Thunar)você deve remover as entradas relacionadas ao cdrom em /etc/fstab. E obviamente, a qualquer dispositivo removível.
É necessário recompilar dev-libs/dbus-glib após a atualização do dev-libs/glib:
# emerge -av1 dbus-glib
Feito todo o trabalho, tudo precisa funcionar. Como eu disse no início do artigo, eu tive problemas com pendrives, hd externos, e até mesmo com o nm-applet (gerenciador gráfico para o networkmanager), pois todos eles requerem uma sessão do dbus iniciada.
Tendo qualquer problema, comente.