dbus-1.16.0

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]

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

Valgfri

For testene: D-Bus Python-1.3.2, PyGObject-3.50.0, og Valgrind-3.24.0; for dokumentasjon: Doxygen-1.13.2, 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 å gå gjennom filen meson_options.txt først og legge til eventuelle ekstra ønskede alternativer til meson oppsettlinjen nedenfor):

mkdir build &&
cd    build &&

meson setup --prefix=/usr          \
            --buildtype=release    \
            --wrap-mode=nofallback \
            -D systemd=disabled    \
            .. &&
ninja

Se nedenfor for testinstruksjoner.

Nå, som root bruker:

ninja 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.17, opprette en symbolkobling til /var/lib/dbus/machine-id filen:

ln -sfv /var/lib/dbus/machine-id /etc

Til slutt, fortsatt som root bruker, gi nytt navn til dokumentasjonsmappen (det eksisterer bare hvis de valgfrie avhengighetene er oppfylt for minst ett dokumentasjonsformat) for å gjøre det versjonert:

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

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 ninja test.

Hvis du vil kjøre enhetsregresjonstestene, krever meson 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):

meson configure -D asserts=true -D intrusive_tests=true &&
ninja test

Parameterforklaringer

--wrap-mode=nofallback: Denne bryteren forhindrer meson fra å bruke delprosjektets tilbakefall for evt avhengighetserklæringer i byggefilene, og forhindrer det å laste ned eventuell valgfrie avhengigheter som ikke er installert på systemet.

-D systemd=disabled: Ikke installer systemd støttefiler selv om libsystemd eksisterer (dvs. elogind-255.17 pakken er installert).

-D intrusive_tests=true: Bygger ekstra deler av koden for å støtte alle tester. Ikke bruk på en produksjonsbygning.

-D asserts=true: Gjør det mulig å kjøre feilsøkingskode påstander for utsagn som normalt antas å være sanne. Dette forhindrer advarsel om det '-D asserts=true' 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-20241209 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.16.0, 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