Introdução ao "D-Bus"
D-Bus é um sistema de barramento
de mensagens, uma maneira simples para os aplicativos se
comunicarem entre si. D-Bus
fornece um processo de segundo plano de sistema (para eventos como
“novo dispositivo de
hardware adicionado” ou “fila de impressora
mudou”) e um processo de segundo plano de sessão de
login por usuário(a) (para necessidades gerais de "IPC" entre
aplicativos de usuário(a)). Além disso, o barramento de mensagens é
construído sobre uma estrutura geral de passagem de mensagens
um-para-um, a qual pode ser usada por quaisquer dois aplicativos
para se comunicarem diretamente (sem passar pelo processo de
segundo plano do barramento de mensagens).
Esse pacote é conhecido por construir e funcionar corretamente
usando uma plataforma LFS 12.3.
Informação do Pacote
-
Transferência (HTTP):
https://dbus.freedesktop.org/releases/dbus/dbus-1.16.0.tar.xz
-
Transferência (FTP):
-
Soma de verificação MD5 da transferência:
66bfcf1f42d4ebc634ca558d14335e92
-
Tamanho da transferência: 1,3 MB
-
Espaço em disco estimado exigido: 110 MB (adicionar 6 MB para
os testes)
-
Tempo de construção estimado: 0,2 UPC (adicionar 0,4 UPC para
testes)
Dependências do "D-Bus"
Recomendadas
Bibliotecas do Xorg (para aplicativo
dbus-launch)
Opcionais
Para os testes: D-Bus
Python-1.3.2, PyGObject-3.50.0 e Valgrind-3.24.0; para
documentação: Doxygen-1.13.2, xmlto-0.0.29,
Ducktype e
Yelp Tools
Instalação do "D-Bus"
Instale o D-Bus executando os
seguintes comandos (você possivelmente deseje revisar o arquivo
meson_options.txt primeiro e adicionar quaisquer opções adicionais
desejadas à linha setup do meson abaixo):
mkdir build &&
cd build &&
meson setup --prefix=/usr \
--buildtype=release \
--wrap-mode=nofallback \
-D systemd=disabled \
.. &&
ninja
Veja-se abaixo para instruções de teste.
Agora, como o(a) usuário(a) root
:
ninja install
Se você estiver usando uma instalação "DESTDIR", [então] o
dbus-daemon-launch-helper precisa
ser corrigido posteriormente. Emita, como usuário(a) root
:
chown -v root:messagebus /usr/libexec/dbus-daemon-launch-helper &&
chmod -v 4750 /usr/libexec/dbus-daemon-launch-helper
Se você ainda estiver construindo seu sistema em "chroot" ou ainda
não iniciou o processo de segundo plano, mas deseja compilar alguns
pacotes que exigem o D-Bus,
[então] gere o "UUID" do D-Bus,
para evitar avisos ao compilar alguns pacotes, com o seguinte
comando como o(a) usuário(a) root
:
dbus-uuidgen --ensure
Se usar elogind-255.17, [então] crie um link simbólico
para o arquivo /var/lib/dbus/machine-id
:
ln -sfv /var/lib/dbus/machine-id /etc
Finalmente, ainda como o(a) usuário(a) root
, renomeie o diretório da documentação (ele
só existe se as dependências opcionais forem satisfeitas para pelo
menos um formato de documentação) para torná-lo versionado:
if [ -e /usr/share/doc/dbus ]; then
rm -rf /usr/share/doc/dbus-1.16.0 &&
mv -v /usr/share/doc/dbus{,-1.16.0}
fi
Muitos testes estão desabilitados, a menos que D-Bus Python-1.3.2 e PyGObject-3.50.0 tenham sido instalados.
Eles precisam ser executados como um(a) usuário(a) sem privilégios
a partir de uma sessão local com endereço de barramento. Para
executar os testes padrão, emita ninja test.
Se você deseja executar os testes de regressão de unidade, o meson
exige parâmetros adicionais os quais expõem funcionalidades
adicionais nos binários que não se destinam a serem usadas em uma
construção de produção do D-Bus.
Se você gostaria de executar os testes, emita os seguintes comandos
(para os testes, você não precisa construir os documentos):
meson configure -D asserts=true -D intrusive_tests=true &&
ninja test
Explicações do Comando
--wrap-mode=nofallback
:
Essa chave impede meson de usar substitutos de
subprojeto para quaisquer declarações de dependência nos arquivos
de construção, impedindo-o de baixar quaisquer dependências
opcionais que não estejam instaladas no sistema.
-D systemd=disabled
: Não
instale arquivos de suporte do systemd mesmo que libsystemd
exista (ou seja, o pacote elogind-255.17 esteja instalado).
-D intrusive_tests=true
:
Constrói partes extras do código para suportar todos os testes. Não
use em uma construção de produção.
-D asserts=true
: Habilita
código de depuração para executar asserções para declarações
normalmente presumidas serem verdadeiras. Isso evita um aviso de
que '-D asserts=true
' por
si só é útil somente para perfilamento e pode não fornecer
resultados verdadeiros para todos os testes, mas adiciona a própria
OBSERVAÇÃO dele de que isso não deveria ser usado em uma construção
de produção.
Configurando o "D-Bus"
Arquivos de
Configuração
/etc/dbus-1/session.conf
,
/etc/dbus-1/system.conf
e
/etc/dbus-1/system.d/*
Informação de Configuração
Os arquivos de configuração listados acima provavelmente não
deveriam ser modificados. Se mudanças forem necessárias, [então]
você deveria criar /etc/dbus-1/session-local.conf
e(ou)
/etc/dbus-1/system-local.conf
e
fazer quaisquer mudanças desejadas nesses arquivos.
Se quaisquer pacotes instalarem um arquivo .service
do D-Bus fora do diretório padrão /usr/share/dbus-1/services
, esse diretório
deveria ser adicionado à configuração local da sessão. Por
exemplo, /usr/local/share/dbus-1/services
pode ser
adicionado realizando-se os seguintes comandos como o(a)
usuário(a) root
:
cat > /etc/dbus-1/session-local.conf << "EOF"
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Search for .service files in /usr/local -->
<servicedir>/usr/local/share/dbus-1/services</servicedir>
</busconfig>
EOF
Processo de Segundo
Plano de Sessão do "D-Bus"
Para iniciar automaticamente o dbus-daemon quando o sistema
for reinicializado, instale o "script" de inicialização
/etc/rc.d/init.d/dbus
a partir do
pacote blfs-bootscripts-20250225.
make install-dbus
Se essa for a primeira vez que instala o D-Bus no sistema e não estiver operando em
um ambiente chroot, você consegue iniciar imediatamente o
dbus-daemon sem
reinicializar o sistema:
/etc/init.d/dbus start
Observe que esse "script" de inicialização somente inicia o
processo de segundo plano D-Bus
abrangente ao sistema. Cada usuário(a) solicitante de acesso aos
serviços do D-Bus também
precisará executar um processo de segundo plano de sessão.
Existem muitos métodos que você pode usar para iniciar um
processo de segundo plano de sessão usando o comando dbus-launch. Revise a página de
manual do dbus-launch para detalhes a
respeito dos parâmetros e opções disponíveis. Aqui estão algumas
sugestões e exemplos:
-
Adicione dbus-launch à linha no
arquivo ~/.xinitrc
que inicia
seu ambiente gráfico de área de trabalho.
-
Se você usar gdm ou algum outro
gerenciador de tela que chame o arquivo ~/.xsession
, [então] você pode adicionar
dbus-launch à
linha no seu arquivo ~/.xsession
que inicia seu ambiente
gráfico de área de trabalho. A sintaxe seria semelhante ao
exemplo no arquivo ~/.xinitrc
.
-
Os exemplos mostrados anteriormente usam dbus-launch para
especificar um aplicativo a ser executado. Isso tem a
vantagem (ao usar também o parâmetro --exit-with-x11
) de parar o
processo de segundo plano de sessão quando o aplicativo
especificado for interrompido. Você também pode iniciar o
processo de segundo plano de sessão em seus "scripts" de
inicialização de sistema ou os pessoais, adicionando as
seguintes linhas:
# Inicia o processo de segundo plano de sessão do "D-Bus"
eval `dbus-launch`
export DBUS_SESSION_BUS_ADDRESS
Esse método não parará o processo de segundo plano de
sessão quando você sair do seu "shell"; portanto você
deveria adicionar a seguinte linha ao seu arquivo
~/.bash_logout
:
# Mata o processo de segundo plano de sessão do "D-Bus"
kill $DBUS_SESSION_BUS_PID