Introduksjon til D-Bus
D-Bus er et meldingsbusssystem, en
enkel måte for applikasjoner å snakke med hverandre. D-Bus leverer både en systemnisse (for
hendelser som f.eks «ny
maskinvareenhet lagt til» eller «skriver kø endret») og
en per-bruker-pålogging-sesjon nisse (for generell IPC-behov blant
brukerapplikasjoner). Dessuten er meldingsbussen bygget på toppen
av et generelt rammeverk for en-til-en meldingsoverføring, som kan
brukes av to applikasjoner for å kommunisere direkte (uten å gå
gjennom meldingsbuss-demon).
Notat
Utviklingsversjoner av BLFS kan ikke bygge eller kjøre noen
pakker riktig hvis LFS eller avhengigheter har blitt oppdatert
siden den siste stabile versjonene av bøkene.
Pakkeinformasjon
D-Bus Avhengigheter
Anbefalt
Xorg Biblioteker (for dbus-launch programmet)
Valgfri
For testene: D-Bus Python-1.3.2, PyGObject-3.50.0, og Valgrind-3.24.0; for
dokumentasjon: Doxygen-1.12.0, xmlto-0.0.29,
Ducktype, og
Yelp Tools
Installasjon av D-Bus
Installer D-Bus ved å kjøre
følgende kommandoer (det kan være lurt å se gjennom utdataene fra
./configure --help
først og legg til ønskede parametere til configure kommandoen vist
nedenfor):
./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
Se nedenfor for testinstruksjoner.
Nå, som root
bruker:
make install
Hvis du bruker en DESTDIR installasjon, dbus-daemon-launch-helper må
fikses etterpå. Utsted, som root
bruker:
chown -v root:messagebus /usr/libexec/dbus-daemon-launch-helper &&
chmod -v 4750 /usr/libexec/dbus-daemon-launch-helper
Hvis du fortsatt bygger systemet ditt i chroot eller du ikke har
startet nissen ennå, men du vil kompilere noen pakker som krever
D-Bus, generer D-Bus UUID for å unngå advarsler ved
kompilering av noen pakker med følgende kommando som root
bruker:
dbus-uuidgen --ensure
Hvis du bruker elogind-255.5, opprette en symbolkobling til
/var/lib/dbus/machine-id
filen:
ln -sfv /var/lib/dbus/machine-id /etc
Mange tester er deaktivert med mindre både D-Bus
Python-1.3.2 og PyGObject-3.50.0 har blitt installert. Det
må kjøres som en uprivilegert bruker fra en lokal økt med
bussadresse. For å kjøre standard tester utsted make check.
Hvis du vil kjøre enhetsregresjonstestene, krever konfigureringen
tilleggsparametere som viser tilleggsfunksjonalitet i binærfiler
som ikke er ment å brukes i en produksjonsbygning av D-Bus. Hvis du ønsker å kjøre testene, utsted
følgende kommandoer (for testene trenger du ikke å bygge
dokumenter):
make distclean &&
PYTHON=python3 ./configure --enable-tests \
--enable-asserts \
--disable-doxygen-docs \
--disable-xml-docs &&
make &&
make check
En test, test-autolaunch, er kjent for å mislykkes. Det har vært
rapporter om at testene kan mislykkes hvis de kjøres i et Midnight
Commander skall. Du kan få feilmeldinger om at minnet er tomt når
kjører testene. Disse er normale og kan trygt ignoreres.
Parameterforklaringer
--disable-doxygen-docs
:
Denne bryteren deaktiverer at doxygen dokumentasjon bygges og
installeres, hvis du har doxygen
installert. Hvis doxygen er
installert, og du ønsker å bygge dem, fjern denne parameteren.
--disable-xml-docs
: Denne
bryteren deaktiverer at html dokumentasjon bygges og installeres,
hvis du har xmlto installert. Hvis
xmlto er installert, og du ønsker
å bygge dem, fjern denne parameteren.
--disable-static
: Denne
bryteren forhindrer installasjon av statiske versjoner av
bibliotekene.
--with-systemd{user,system}unitdir=no
:
Disse brytere deaktiverer installasjon av systemenheter på elogind
baserte systemer.
--with-system-socket=/run/dbus/system_bus_socket
:
Denne parameteren spesifiserer plasseringen av systembuss socket.
--enable-tests
: Bygger
ekstra deler av koden for å støtte alle tester. Ikke bruk på en
produksjonsbygning.
--enable-embedded-tests
: Bygger ekstra
deler av koden for kun å støtte enhetstester. Ikke bruk på en
produksjonsbygning.
--enable-asserts
: Gjør det
mulig å kjøre feilsøkingskode påstander for utsagn som normalt
antas å være sanne. Dette forhindrer advarsel om det '--enable-tests
' på egen hånd er bare
nyttig for profilering og gir kanskje ikke sanne resultater for
alle tester, men legger til sin egen MERK at dette ikke skal brukes
i et produksjonsbygg.
Konfigurere D-Bus
Konfigurasjonsfiler
/etc/dbus-1/session.conf
,
/etc/dbus-1/system.conf
og
/etc/dbus-1/system.d/*
Konfigurasjonsinformasjon
Konfigurasjonsfilene oppført ovenfor bør sannsynligvis ikke bli
modifisert. Hvis det kreves endringer, bør du opprette
/etc/dbus-1/session-local.conf
og/eller /etc/dbus-1/system-local.conf
og lage
eventuelle ønskede endringer i disse filene.
Hvis noen pakker installerer en D-Bus .service
fil utenfor standard /usr/share/dbus-1/services
mappen, den mappen
skal legges til den lokale sesjonskonfigurasjonen. For eksempel,
/usr/local/share/dbus-1/services
kan legges til ved å utføre følgende kommandoer som root
bruker:
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
D-Bus Øktnisse
For å starte dbus-daemon automatisk når
systemet startes på nytt, installer /etc/rc.d/init.d/dbus
oppstartsskript fra
blfs-bootscripts-20240913 pakken.
make install-dbus
Hvis dette er første gang D-Bus
installeres på systemet, og du ikke opererer i et chroot miljø,
kan du starte umiddelbart dbus-daemon uten å starte
systemet på nytt:
/etc/init.d/dbus start
Merk at dette oppstartsskriptet bare starter system-brede
D-Bus nissen. Hver bruker som
krever tilgang til D-Bus
tjenester må også kjøre en sesjonsnisse også. Det er mange
metoder du kan bruke for å starte en sesjonsnisse ved hjelp av
dbus-launch
kommandoen. Gjennomgå dbus-launch manualsiden for
detaljer om tilgjengelige parametere og alternativer. Her er noen
forslag og eksempler:
-
Legg til dbus-launch til linjen i
~/.xinitrc
filen som starter
det grafiske skrivebordsmiljøet.
-
Hvis du bruker gdm eller en annen
skjermbehandler som kaller ~/.xsession
filen, kan du legge til
dbus-launch
til linjen i din ~/.xsession
fil som starter det grafiske skrivebordsmiljøet. Syntaksen
vil være lik eksemplet i ~/.xinitrc
filen.
-
Eksemplene vist tidligere bruker dbus-launch for å
spesifisere et program som skal kjøres. Dette har fordelen
(når du også bruker --exit-with-x11
parameteren)
å stoppe sesjonsnissen når det angitte programmet stoppes.
Du kan også starte sesjonsnissen i systemet ditt eller
personlige oppstartsskript ved å legge til følgende linjer:
# Start the D-Bus session daemon
eval `dbus-launch`
export DBUS_SESSION_BUS_ADDRESS
This method will not stop the session daemon when you exit
your shell, therefore you should add the following line to
your ~/.bash_logout
file:
# Kill the D-Bus session daemon
kill $DBUS_SESSION_BUS_PID
Innhold
Installerte Programmer:
dbus-cleanup-sockets, dbus-daemon,
dbus-launch, dbus-monitor, dbus-run-session, dbus-send,
dbus-test-tool, dbus-update-activation-environment, og
dbus-uuidgen
Installert Bibliotek:
libdbus-1.so
Installerte Mapper:
/etc/dbus-1, /usr/{include,lib}/dbus-1.0,
/usr/lib/cmake/DBus1, /usr/share/dbus-1, /usr/share/xml/dbus-1,
/usr/share/doc/dbus-1.14.10, og /var/{lib,run}/dbus
Korte Beskrivelser
dbus-cleanup-sockets
|
brukes til å rydde opp etterlatte sockets i en mappe
|
dbus-daemon
|
er D-Bus meldingsbuss
nisse
|
dbus-launch
|
brukes til å starte dbus-daemon fra et
skallskript. Det vil normalt bli kalt opp fra en brukers
påloggingsskript
|
dbus-monitor
|
brukes til å overvåke meldinger som går gjennom en
D-Bus meldingsbuss
|
dbus-run-session
|
starter en prosess som en ny D-Bus økt
|
dbus-send
|
brukes til å sende en melding til en D-Bus meldingsbuss
|
dbus-test-tool
|
er en D-Bus
trafikkgenerator og testverktøy; det er et
flerbruksverktøy for feilsøking og profilering
D-Bus
|
dbus-update-activation-environment
|
brukes til å oppdatere miljøet som brukes til
D-Bus sesjonstjenester;
den oppdaterer listen over miljøvariabler som brukes av
dbus-daemon
--session når den aktiverer økttjenester
uten å bruke systemd
|
dbus-uuidgen
|
brukes til å generere en universell unik ID
|
libdbus-1.so
|
inneholder API funksjonene som brukes av D-Bus meldingsnisse. D-Bus er først et bibliotek som gir
en-til-en kommunikasjon mellom to applikasjoner;
dbus-daemon
er en applikasjon som bruker dette biblioteket for å
implementere en meldingsbuss nisse
|