1. De hiërarchie van het bestandssysteem

[ Inleiding | Locatie van de boomstructuren | In de boomstructuur | Buiten de boomstructuur | Te doorzoeken locaties toevoegen ]

1.1 Inleiding

KDE bepaalt een hiërarchie binnen het bestandssysteem, die zowel door KDE zelf als door KDE-toepassingen gebruikt en gerespecteerd wordt. Algemeen gesproken gaat het om een eenduidige, vastgelegde mappenstructuur. Meestal zijn er daarvan twee: eentje op systeemniveau en eentje op gebruikersniveau, in de persoonlijke map van de gebruiker. Als systeembeheerder kan je echter bijkomende structuren aanmaken.

KDE en KDE-toepassingen zoeken bestanden door de verschillende mappenstructuren te doorzoeken. Die structuren [nvdv: ik noem ze vanaf nu gewoon directory trees, want echt natuurlijk klinkt ons fijne Nederlands niet altijd] zijn onderling gekenmerkt door een volgorde van prioriteit. Als een bestand aanwezig is in meerdere directory trees, dan krijgt het bestand in de eerstvermelde tree de voorkeur. Normaalgesproken is de tree die zich in de persoonlijke map van de gebruiker bevindt degene met de hoogste prioriteit. Alleszins is het ook daar dat wijzigingen opgeslagen zullen worden.

Ietwat anders gaat het met configuratiebestanden. Worden meerdere configuratiebestanden gevonden met dezelfde naam, dan wordt hun inhoud samengevoegd. Toch speelt ook hier de volgorde van prioriteit een rol: als twee bestanden dezelfde sleutel bepalen, dan zal het bestand met de hoogste voorkeur de waarde voor die sleutel instellen.

1.2 Locatie van de boomstructuren

De locatie van KDE's directory trees wordt bepaald door een aantal omgevingsvariabelen. In KDE 2.x waren er twee, sinds KDE 3.x zijn er daar nog twee bijgekomen.

Omgevingsvariabelen in KDE 2.x:
Bijkomende omgevingsvariabelen in KDE 3.x:

In de dagelijkse communicatie wordt met $KDEHOME naar de directory tree op gebruikersniveau verwezen en met $KDEDIR naar de tree op systeemniveau.

Voorbeeld

Een leidinggevend figuur van een universiteit zou deze instellingen kunnen hebben:

KDEHOME='~/.kde3'
KDEROOTHOME='/root/.kde3'
KDEDIRS='/opt/kde_staff:/opt/kde3'

In dat voorbeeld worden gebruikersinstellingen opgeslagen in de map .kde3 in de persoonlijke map van de gebruiker. Toepassingen die als root draaien, bewaren hun instellingen in /root/.kde3. KDE 3 is geïnstalleerd in /opt/kde3, maar er is een bijkomende directory tree onder /opt/kde_staff. Configuratiebestanden die zich daar bevinden, zullen een hogere prioriteit bezitten dan de bestanden in de systeemmappen onder /opt/kde3. /opt/kde_staff zou bijkomende toepassingen kunnen bevatten, die enkel voor belangrijke personen beschikbaar zouden mogen zijn.

[terug naar boven]

1.3 In de boomstructuur

Elke directory tree waarvan KDE gebruik maakt, is gekenmerkt door een vaste structuur. Mappen die niet relevant zijn voor een bepaalde tree kunnen echter weggelaten worden: de mappen die gebruikt worden voor het bewaren van tijdelijke bestanden vind je bijvoorbeeld meestal onder $KDEHOME terug, maar niet in de andere trees.

KDE voegt de submappen in de verschillende boomstructuren samen en gebruikt het geheel als één enkele KDE-bron. De namen van KDE-bronnen (KDE resources) worden hieronder in tabellen beschreven.

Het gaat grofweg om drie grote categorieën: bestanden die specifiek gelden voor de CPU/architectuur, bestanden die gebonden zijn aan de betreffende host en bestanden die noch met de host, noch met de CPU, noch met de architectuur onlosmakelijk verbonden zijn.

CPU/architectuur-specifieke mappen:
MapKDE-bronBeschrijving
bin/ exe Voor uitvoerbare bestanden van KDE.
cgi-bin/ cgi CGI-scripts die door het KDE Help Center gebruikt kunnen worden.
lib/ lib Voor KDE-bibliotheken.
lib/kde3/ module Voor componenten, plugins en andere objecten die at runtime gebruikt kunnen worden door KDE 3.x-toepassingen.
Host-specifieke mappen:

Deze mappen zijn enkel beschikbaar onder $KDEHOME en zijn normaalgezien gesymlinked naar plekken buiten de $KDEHOME-tree.

MapKDE-bronBeschrijving
socket-<HOSTNAME> socket Deze map bevat communicatie-sockets. Het bestandssysteem waarvan $KDEHOME gebruik maakt kan daartoe ongeschikt zijn, daarom verwijst deze map standaard naar een andere locatie.
tmp-<HOSTNAME> tmp Deze map bevat tijdelijke bestanden. Het bestandssysteem waarvan $KDEHOME gebruik maakt, zou zich op het netwerk kunnen bevinden. Om systeemprestaties niet onnodig negatief te beïnvloeden, verwijst deze map standaard naar een andere, lokaal gelegen plek.
cache-<HOSTNAME> cache Nieuw in KDE 3.2. Deze map bevat gecachete informatie, zoals HTTP-objecten, geformateerde help-pagina's en de cache van de systeemconfiguratie (ksycoca). Deze informatie is niet strikt noodzakelijk, daarom verwijst deze map standaard naar een andere locatie buiten $KDEHOME, om het maken van reservekopieën niet nodeloos te bemoeilijken en om schijfruimte te besparen.
En verder...

De meerderheid van de systeemmappen bevat gegevens die niet specifiek CPU/architectuur- of hostgebonden zijn. Al deze mappen worden voorafgegaan door /share.

MapKDE-bronBeschrijving
share/applnk/ apps Bevat .desktop-bestanden die het KDE-menu beschrijven.
share/apps/ data Bevat toepassingsspecifieke gegevens. Elke toepassing heeft hier een eigen submap waarin hij zijn bestanden kan bewaren.
share/config/ config Bevat configuratiebestanden. Configuratiebestanden worden meestal genoemd naar de toepassing waartoe ze behoren, gevolgd door "rc". Er zijn ook component-specifieke bestanden, waarheen dus verwezen wordt door alle toepassingen die van die component gebruik maken. Een geval apart is kdeglobals, dat door alle KDE-toepassingen ingelezen wordt.
share/config/session/ - Deze map wordt gebruikt bij het sessiebeheer en is normaalgezien enkel voorhanden onder $KDEHOME. Aan het einde van een sessie bewaren KDE-toepassingen hier hun status. De bestandsnamen beginnen met de toepassingsnaam, gevolgd door een getal. De sessie-beheerder, ksmserver, slaat verwijzingen naar deze getallen op bij het bewaren van sessies in ksmserverrc.
share/doc/HTML/ html Bevat de documentatie van KDE-toepassingen. Documentatie wordt gecategoriseerd volgens taal en naar de toepassingen waartoe hij behoort. Normaalgezien bevat deze map minstens twee bestanden: "index.docbook", dat de documentatie in ongeformateerd DocBook-formaat bevat, en "index.cache.bz2", dezelfde documentatie in de vorm van met bzip2 gecomprimeerd HTML. De HTML-versie wordt gebruikt door khelpcenter. Is de HTML-versie niet beschikbaar, dan wordt die opnieuw gegenereerd op basis van de DocBook-versie, maar dat vergt wat tijd.
share/icons/ icon Bevat iconen, gecategoriseerd volgens uiterlijke stijl, afmetingen en gebruikscategorie.
share/mimelnk mime Bevat .desktop-bestanden die mimetypes beschrijven.
share/services/ services Bevat .desktop-bestanden die "services" beschrijven. "Services" en toepassingen lijken erg op elkaar; het belangrijkste verschil is dat services normaalgezien enkel gebruikt worden door toepassingen of door andere services, terwijl toepassingen meestal door de gebruiker eigenhandig opgestart worden. Services worden niet opgesomd in het KDE-menu.
share/servicetypes/ servicetypes Bevat .desktop-bestanden die "servicetypes" beschrijven. Een "servicetype" staat meestal voor een bepaalde programmeer-interface. Toepassingen en services beschrijven in hun .desktop-bestanden welk servicetype ze aanbieden.
share/sounds/ sound Bevat geluidsbestanden.
share/templates/ templates Bevat sjablonen voor verschillende bestandtypes. Een sjabloon (template) bestaat uit een .desktop-bestand dat het bestandtype beschrijft en een verwijzing bevat naar een ander bestand in de submap .source. De sjablonen in deze map verschijnen in het menu onder "Create New..." ("Nieuw..."), beschikbaar op het bureaublad en in de bestandsbrowser Konqueror. Wanneer de gebruiker een sjabloon kiest, wordt het bronbestand gekopieerd.
share/wallpapers/ wallpaper Bevat afbeeldingen die gebruikt kunnen worden als bureaublad-achtergrond.

[terug naar boven]

1.4 Buiten de boomstructuur

Zoals hogerop reeds gezegd werd, zijn er drie host-specifieke mappen die meestal middels een symlink naar andere locaties verwijzen. Als die locaties niet bestaan, zullen onderstaande symlinks en mappen aangemaakt worden met lnusertemp. Omdat zowel /tmp als /var/tmp world writable (door eender wie beschrijfbaar) zijn, bestaat de kans dat de mappen al bestaan, maar een andere gebruiker toebehoren. In dat geval zal lnusertemp een nieuwe map met een alternatieve naam aanmaken, en dan natuurlijk daarheen laten verwijzen.

SymlinkVerwijst naar...BeschrijvingAangemaakt met...
$KDEHOME/socket-<HOSTNAME> /tmp/ksocket-<GEBRUIKER>/

Maakt een map aan voor lokale communicatie-sockets en een symlink die daarheen verwijst. De samengevoegde lengte van de naam van de map en eender welke communicatie-socket mag niet langer zijn dan 106 tekens.

Standaard wordt deze map aangemaakt onder /tmp; je kan andere locaties instellen door middel van de omgevingsvariabele $KDETMP.

lnusertemp socket
$KDEHOME/tmp-<HOSTNAME> /tmp/kde-<GEBRUIKER>/

Maakt een map aan voor tijdelijke bestanden en een symlink die daarheen verwijst. Ter wille van de prestatie van het systeem is het aan te bevelen deze map op een lokaal bestandssysteem te hebben, maar dat is niet strikt noodzakelijk.

In KDE versies tot en met KDE 3.1 bevindt zich hier ook de cache van de systeemconfiguratie (ksycoca en ksycocastamp). Het is aan te bevelen deze bestanden NIET te verwijderen bij het opstarten van het systeem, omdat dat het opstarten van KDE erg zal vertragen.

Standaard wordt deze map aangemaakt onder /tmp; je kan andere locaties instellen door middel van de omgevingsvariabele $KDETMP.

lnusertemp tmp
$KDEHOME/cache-<HOSTNAME> /var/tmp/kdecache-<GEBRUIKER>/

Nieuw in KDE 3.2. Maakt een map aan voor cache-bestanden en een symlink die daarheen verwijst. Ter willen van de prestatie van het systeem is het aan te bevelen deze map op een lokaal bestandssysteem te hebben, maar dat is niet strikt noodzakelijk.

Sinds KDE 3.2 bevindt zich hier ook de cache van de systeemconfiguratie (ksycoca en ksycocastamp).

Standaard wordt deze map aangemaakt onder /var/tmp; je kan andere locaties instellen door middel van de omgevingsvariabele $KDEVARTMP.

lnusertemp cache

KDE maakt gebruik van twee belangrijke bestanden die zich buiten de KDE-boomstructuren bevinden en die deel uitmaken van KDE's desktop communication protocol DCOP. Het gaat om volgende bestanden:

In de context van een Kiosk-omgeving kan het nuttig zijn om persoonlijke mappen read-only (enkel-lezen) te maken. In dat geval moeten $ICEAUTHORITY en $DCOPAUTHORITY naar beschrijfbare locaties verwijzen, want KDE zal weigeren op te starten als de persoonlijke map niet beschrijfbaar is. Sinds KDE 3.1.4 kan je dat gedrag vermijden door de omgevingsvariabele $KDE_HOME_READONLY in te stellen op eender welke niet-lege waarde.

Er zijn meldingen bekend die erop wijzen dat persoonlijke mappen die gemount zijn op bepaalde versies van Netware-bestandssystemen geen hardlinks ondersteunen. Dat veroorzaakt problemen bij het genereren van $HOME/.ICEauthority en leidt dus tot de onmogelijkheid om in te loggen in KDE. Je kan de situatie oplossen door $ICEAUTHORITY naar een bestand buiten de persoonlijke map te laten verwijzen, bijvoorbeeld ergens onder /tmp. Merk op dat elke gebruiker zijn eigen unieke bestand moet hebben.

[terug naar boven]

1.5 Te doorzoeken locaties toevoegen

KDE-toepassingen zoeken gegevens op door middel van de resource names (bronnen-namen) die reeds beschreven werden in de sectie In de boomstructuur. KDE zal deze namen omzetten naar eigenlijke mappen, door de locaties van mappenstructuren te combineren met de mappen die opgesomd werden in de hogerop opgestelde tabellen.

Voorbeeld

Een gebruiker heeft volgende instellingen van directory trees:

KDEHOME='~/.kde3'
KDEDIRS='/opt/kde_staff:/opt/kde3'

Zoekt een toepassing nu naar een "wallpaper"-bestand, dan wordt aan elk van de vermelde directory trees share/wallpapers/ toegevoegd. Daarna worden alle resulterende mappen op het bestand doorzocht:

Door meer directory trees aan de omgevingsvariabele $KDEDIRS toe te voegen, kan je meerdere mappen laten doorzoeken. Vaak is het wenselijk om maar één enkele map voor een zoektocht toe te voegen en geen hele mappenstructuur. Afzonderlijke mappen kan je toevoegen in het configuratiebestand kdeglobals, in de sectie "Directories". Wijs daartoe één of meerdere mappen toe aan de sleutel "dir_", gevolgd door de naam van de KDE-bron. Meerdere mappen scheid je met een komma (,).

Voorbeeld

Om de map /data/photos toe te voegen aan de systeembron "wallpapers", zet je deze twee lijnen in kdeglobals:

[Directories]
dir_wallpaper=/data/photos

Wanneer een toepassing nu op zoek gaat naar "wallpaper"-bestanden, dan zal hij deze locaties raadplegen:

[terug naar boven]

[ Terug naar de inhoudsopgave | Verder naar sectie 2, "Configuratiebestanden" ]
Over deze site | Laatst gewijzigd: 22 juni 2004, 13:11 door: Tom Verbreyt