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.2.
Informação do Pacote
-
Transferência (HTTP):
https://dbus.freedesktop.org/releases/dbus/dbus-1.14.10.tar.xz
-
Transferência (FTP):
-
Soma de verificação MD5 da transferência:
46070a3487817ff690981f8cd2ba9376
-
Tamanho da transferência: 1,3 MB
-
Espaço em disco estimado exigido: 23 MB (adicionar 25 MB para
testes)
-
Tempo de construção estimado: 0,2 UPC (adicionar 1,5 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.48.2 e Valgrind-3.23.0; para
documentação: Doxygen-1.12.0, xmlto-0.0.29,
Ducktype e
Yelp Tools
Instalação do "D-Bus"
Instale o D-Bus executando os
seguintes comandos (você possivelmente revise a saída gerada a
partir de ./configure
--help primeiro e adicione quaisquer parâmetros
desejados ao comando configure mostrado abaixo):
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--runstatedir=/run \
--disable-doxygen-docs \
--disable-xml-docs \
--disable-static \
--with-systemduserunitdir=no \
--with-systemdsystemunitdir=no \
--docdir=/usr/share/doc/dbus-1.14.10 \
--with-system-socket=/run/dbus/system_bus_socket &&
make
Veja-se abaixo para instruções de teste.
Agora, como o(a) usuário(a) root
:
make 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.5, [então] crie um link simbólico
para o arquivo /var/lib/dbus/machine-id
:
ln -sfv /var/lib/dbus/machine-id /etc
Muitos testes são desabilitados, a menos que D-Bus
Python-1.3.2 e PyGObject-3.48.2 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 make
check.
Se você deseja executar os testes de regressão de unidade, [então]
o "configure" 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,
[então] emita os seguintes comandos (para os testes, você não
precisa construir os documentos):
make distclean &&
PYTHON=python3 ./configure --enable-tests \
--enable-asserts \
--disable-doxygen-docs \
--disable-xml-docs &&
make &&
make check
Um teste, test-autolaunch, é conhecido por falhar. Também existiram
informes de que os testes possivelmente falhem se executados dentro
de um shell do Midnight Commander. Você possivelmente receba
mensagens de erro de falta de memória ao executar os testes. Elas
são normais e podem ser seguramente ignoradas.
Explicações do Comando
--disable-doxygen-docs
:
Essa chave desabilita a construção e instalação da documentação do
"doxygen", se você tiver o doxygen
instalado. Se doxygen estiver
instalado e você desejar construí-la, [então] remova esse
parâmetro.
--disable-xml-docs
: Essa
chave desabilita a construção e instalação da documentação "HTML",
se você tiver o xmlto instalado.
Se xmlto estiver instalado e você
desejar construí-la, [então] remova esse parâmetro.
--disable-static
: Essa
chave impede a instalação das versões estáticas das bibliotecas.
--with-systemd{user,system}unitdir=no
:
Essas chaves desabilitam a instalação de unidades do "systemd" em
sistemas baseados em "elogind".
--with-system-socket=/run/dbus/system_bus_socket
:
Esse parâmetro especifica o local do soquete do barramento do
sistema.
--enable-tests
: Constrói
partes extras do código para suportar todos os testes. Não use em
uma construção de produção.
--enable-embedded-tests
: Constrói
partes extras do código para suportar somente testes de unidade.
Não use em uma construção de produção.
--enable-asserts
: Habilita
código de depuração para executar asserções para declarações
normalmente presumidas serem verdadeiras. Isso evita um aviso que
'--enable-tests
' 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-20240416.
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