Hoofdstuk 11. Uw Debian GNU/Linux-systeem aanpassen

Inhoudsopgave

11.1. Hoe zorg ik ervoor dat alle programma's dezelfde papiergrootte gebruiken?
11.2. Hoe kan ik toegang verlenen tot randapparatuur zonder de beveiliging in het gedrang te brengen?
11.3. Hoe laad ik bij het opstarten van de computer een tekenset voor de console op de manier van Debian?
11.4. Hoe kan ik de standaardinstellingen configureren van een toepassingsprogramma onder X11?
11.5. Hoe start een Debian-systeem op?
11.6. En wat met Debian en het traditionele System V init?
11.7. Zijn er nog andere methodes om een Debian-systeem op te starten?
11.8. Hoe gaat het systeem voor pakketbeheer om met pakketten die configuratiebestanden voor andere pakketten bevatten?
11.9. Hoe omzeil ik een bestand dat door een pakket geïnstalleerd werd, zodat in de plaats van dat bestand een andere versie gebruikt kan worden?
11.10. Hoe kan ik mijn lokaal gebouwd pakket opgenomen krijgen in de lijst van beschikbare pakketten waar het pakketbeheersysteem weet heeft?
11.11. Dommige gebruikers houden van mawk, anderen houden van gawk; sommigen houden van vim, anderen houden van elvis; sommigen houden van trn, anderen houden van tin. Hoe ondersteunt Debian diversiteit?

11.1. Hoe zorg ik ervoor dat alle programma's dezelfde papiergrootte gebruiken?

Installeer het pakket libpaper1 en het zal u vragen naar een standaardpapiergrootte die voor het hele systeem geldt. Deze instelling wordt opgeslagen in het bestand /etc/papersize.

Gebruikers kunnen de instelling van de papiergrootte omzeilen met de omgevingsvariabele PAPERSIZE. Raadpleeg voor bijkomende informatie de man-pagina papersize(5).

11.2. Hoe kan ik toegang verlenen tot randapparatuur zonder de beveiliging in het gedrang te brengen?

Veel apparaatbestanden in de map /dev behoren toe aan vooraf gedefinieerde groepen. Bijvoorbeeld, /dev/sr0 behoort toe aan de groep cdrom.

Indien u wilt dat een bepaalde gebruiker toegang heeft tot een van deze apparaten, moet u de gebruiker gewoon toevoegen aan de groep waartoe het apparaat behoort, d.w.z. doe:

adduser gebruiker groep

Op die manier hoeft u de bestandspermissies van het apparaat niet te wijzigen.

Indien u dit doet vanuit een gebruikersshell of vanuit een grafische werkomgeving, dan moet u eerst uitloggen en weer inloggen om effectief een lid van die groep te worden. Om na te gaan tot welke groepen u behoort, gebruikt u het commando groups.

Als u de toegangspermissies van een randapparaat wijzigt, moet u weten dat ten gevolge van de introductie van udev, de kans bestaat dat deze bij het opstarten van het systeem voor sommige apparaten aangepast worden. Indien dit het geval is voor de randapparaten waarin u geïnteresseerd bent, dan zult u de regels in /etc/udev moeten aanpassen.

11.3. Hoe laad ik bij het opstarten van de computer een tekenset voor de console op de manier van Debian?

Het pakket kbd ondersteunt dit. Bewerk het bestand/etc/kbd/config.

11.4. Hoe kan ik de standaardinstellingen configureren van een toepassingsprogramma onder X11?

In Debian plaatsen grafische programma's (X-programma's) de informatie over de hulpbronnen van hun toepassing in de map /etc/X11/app-defaults/. Indien u globale aanpassingen wilt maken aan grafische toepassingen, moet u die aanpassingen in deze bestanden plaatsen. Zij staan gemarkeerd als configuratiebestanden, waardoor hun inhoud bewaard blijft bij opwaarderingen.

11.5. Hoe start een Debian-systeem op?

Zoals alle Unix-varianten start Debian op door het programma init uit te voeren. Zoals de meeste Linux-distributies, gebruikt een standaard Debian-systeem systemd als implementatie van init. De traditionele System-V implementatie van init en andere methodes worden ook ondersteund. [5]

Om de volgorde te bepalen waarin diensten worden opgestart, maken traditionele Unix-systemen in System-V stijl gebruik van runlevels. Onder systemd worden deze vervangen door targets. Om het standaard-target te kennen waarnaartoe systemd het systeem zal brengen, gebruikt u het commando

systemctl get-default

Tijdens het opstarten start systemd de diensten en andere targets die vermeld worden in het standaard target-bestand /lib/systemd/system/default.target. De bestanden voor deze diensten en targets worden geïnstalleerd en de dienst wordt geactiveerd tijdens de pakketinstallatie van Debian. Indien u wilt dat een specifieke dienst niet wordt gestart bij het opstarten, kunt u in plaats van het overeenkomstige pakket te verwijderen, het volgende commando uitvoeren:

systemctl disable dienst.service

waarbij u de naam van het service-bestand gebruikt, zoals het in /lib/systemd/system geïnstalleerd is (gewoonlijk gebaseerd op de naam van het pakket).

The service file /lib/systemd/system/rc-local.service provides an easy way to run customized scripts in the file /etc/rc.local after boot-up, similar to what's offered on Debian systems running System-V style init. Beware: this script will fail if it tries to interact with the console such as asking for a user password or trying to clear the screen.

U kunt de toestand van elke dienst controleren met het commando

service pakket status

. Om een dienst te starten of te stoppen gebruikt u de commando's

service pakket start

en

service pakket stop

. Het commando service werkt op een Debian-systeem met elk ondersteund init-systeem, niet enkel met systemd. Indien u echter verkiest om op elk door systemd ondersteund Linux-systeem hetzelfde commando te gebruiken om de toestand van een dienst te controleren, moet u het volgende commando uitvoeren:

systemctl status pakket.service

om diezelfde informatie te verkrijgen.

Voor bijkomende informatie over systemd voor Debian, raadpleegt u https://wiki.debian.org/systemd.

11.6. En wat met Debian en het traditionele System V init?

Debian ondersteunt het opstarten van de computer met het traditionele System V init via het pakket sysvinit-core. Het configuratiebestand voor System V init (dat /etc/inittab is) bepaalt dat het eerste script dat uitgevoerd moet worden, /etc/init.d/rcS is. Dat script voert alle scripts uit /etc/rcS.d/ uit door subprocessen af te splitsen om initialisatietaken uit te voeren, zoals het controleren en aankoppelen van bestandssystemen, het laden van modules, het starten van netwerkdiensten, het instellen van de klok en andere initialisatietaken.

Nadat het opstartproces voltooid is, voert init alle start-scripts uit die zich in de map bevinden die gespecificeerd wordt door het standaard 'runlevel' (dit 'runlevel' wordt opgegeven door het element id in /etc/inittab). Zoals de meeste vormen van Unix die compatibel zijn met System V, heeft Linux 7 'runlevels':

  • 0 (stop het systeem),

  • 1 (één-gebruikersmodus),

  • 2 tot 5 (verschillende meerdere-gebruikersmodi), en

  • 6 (herstart het systeem).

Op Debian-systemen staat id=2 ingesteld, wat aangeeft dat het standaard-runlevel '2' is als naar de meerdere-gebruikers-toestand overgegaan wordt en dat de scripts uit /etc/rc2.d/ uitgevoerd zullen worden.

Debian past een onderling afhankelijke opstartvolgorde toe via insserv met behulp van de LSB-headers van elk script onder /etc/init.d/, evenals het gelijktijdig parallel opstarten via het gebruik van startpar om het opstartproces te versnellen.

De scripts in elk van de /etc/rcN.d/-mappen zijn gewoon symbolische koppelingen naar scripts in /etc/init.d/. Het zijn echter de namen van de bestanden in elk van de /etc/rcN.d/-mappen die gebruikt worden om aan te geven op welke wijze de scripts in /etc/init.d/ zullen uitgevoerd worden. Meer specifiek worden vooraleer een 'runlevel' binnengegaan wordt, alle scripts uitgevoerd die beginnen met 'K'. Dit zijn scripts die diensten doden. Daarna worden alle scripts die beginnen met 'S' uitgevoerd. Deze scripts starten diensten. Het uit twee cijfers bestaand getal dat na de 'K' of 'S' volgt, geeft de volgorde aan waarin het script uitgevoerd wordt. Scripts met het laagste getal worden eerst uitgevoerd.

Een dergelijke benadering werkt, omdat de scripts in /etc/init.d/ allemaal een argument nodig hebben dat 'start', 'stop', 'reload', 'restart' of 'force-reload' kan zijn en dan de taak uitvoeren die door dat argument opgegeven wordt. Zelfs nadat een systeem opgestart werd kunnen deze scripts gebruikt worden om verschillende processen te controleren.

Bijvoorbeeld, met het argument 'reload' stuurt het commando

/etc/init.d/sendmail reload

de sendmail-daemon het signaal om zijn configuratiebestand opnieuw in te lezen.

Merk op dat invoke-rc.d niet gebruikt zou moeten worden om de scripts uit /etc/init.d/ aan te roepen. In plaats daarvan moet service gebruikt worden.

11.7. Zijn er nog andere methodes om een Debian-systeem op te starten?

Indien u houdt van System V init, maar niet van de koppelingen in /etc/rc?.d/*, kunt u het pakket file-rc installeren. Dat zet de koppelingen om in één enkel configuratiebestand /etc/runlevel.conf.

Indien u niet van System V en ook niet van systemd houdt, voelt u misschien wel iets voor openrc of runit of daemontools.

11.8. Hoe gaat het systeem voor pakketbeheer om met pakketten die configuratiebestanden voor andere pakketten bevatten?

Sommige gebruikers willen bijvoorbeeld een nieuwe server creëren door een groep Debian-pakketten te installeren evenals een lokaal gemaakt pakket dat uit configuratiebestanden bestaat. Dit is over het algemeen geen goed idee, omdat dpkg niet op de hoogte zal zijn van die configuratiebestanden die zich in een ander pakket bevinden, en dus mogelijk conflicterende configuraties kan neerschrijven wanneer een van de pakketten uit de initiële "groep' opgewaardeerd wordt.

Maak in de plaats daarvan een lokaal pakket dat de configuratiebestanden van de betreffende "groep" Debian-pakketten aanpast. Dan zal dpkg en de rest van het pakketbeheersysteem zien dat de bestanden gewijzigd werden door de lokale "systeembeheerder" en zullen ze geen poging doen om ze te overschrijven wanneer deze pakketten opgewaardeerd worden.

11.9. Hoe omzeil ik een bestand dat door een pakket geïnstalleerd werd, zodat in de plaats van dat bestand een andere versie gebruikt kan worden?

Verondersel dat een systeembeheerder of een lokale gebruiker liever een programma "lokale-login" wil gebruiken in plaats van het programma "login" warin door het Debian-pakket login voorzien wordt.

Overschrijf

  • /bin/login niet met lokale-login.

Het systeem voor pakketbeheer zal geen kennis hebben van deze wijziging en zal uw aangepaste /bin/login gewoon overschrijven als het pakket login (of elk pakket dat voorziet in /bin/login) geïnstalleerd of opgewaardeerd wordt.

Doe liever het volgende:

  • Geef de opdracht:

    dpkg-divert --divert /bin/login.debian /bin/login
    

    om er voor te zorgen dat alle toekomstige installaties van het Debian-pakket login het bestand /bin/login naar /bin/login.debian schrijven.

  • Voer dan de volgende opdracht uit:

    cp login-local /bin/login
    

    om uw eigen lokaal gebouwd programma op zijn plaats te zetten.

Gebruik de opdracht dpkg-divert --list om te zien welke afgeleiden er momenteel actief zijn op uw systeem.

Meer informatie wordt gegeven in de man-pagina dpkg-divert(8).

11.10. Hoe kan ik mijn lokaal gebouwd pakket opgenomen krijgen in de lijst van beschikbare pakketten waar het pakketbeheersysteem weet heeft?

Geef de opdracht:

dpkg-scanpackages BIN_DIR OVERRIDE_FILE [PATHPREFIX] > mijn_Pakketten

waarbij

  • BIN-DIR een map is waar Debian-archiefbestanden (die gewoonlijk de extensie ".deb" hebben) opgeslagen worden.

  • OVERRIDE_FILE is een bestand dat bewerkt wordt door de onderhouders van de distributie en gewoonlijk opgeslagen wordt op een Debian-archief in indices/override.main.gz voor de Debian-pakketten in de distributie "main". Voor lokale pakketten kunt u dit negeren.

  • PATHPREFIX een optionele tekenreeks is die vooraan toegevoegd kan worden voor mijn_Pakketten, het bestand dat aangemaakt wordt.

Eens u het bestand mijn_Pakketten gebouwd heeft, moet u het pakketbeheersysteem erover informeren door het volgende commando te gebruiken:

dpkg --merge-avail mijn_Pakketten

Indien u APT gebruikt, kunt u ook de lokale pakketbron toevoegen aan uw bestand sources.list(5).

11.11. Dommige gebruikers houden van mawk, anderen houden van gawk; sommigen houden van vim, anderen houden van elvis; sommigen houden van trn, anderen houden van tin. Hoe ondersteunt Debian diversiteit?

Er zijn verschillende gevallen waarin twee pakketten voorzien in twee verschillenden versies van een programma, die beide dezelfde kernfunctionaliteit bieden. Gebruikers kunnen het ene verkiezen boven het andere uit gewoonte of omdat de gebruikersinterface van het ene pakket iets meer bevalt dan die van het andere. Andere gebruikers op hetzelfde systeem kunnen een andere keuze maken.

Debian gebruikt een "virtueel" pakketsysteem om systeembeheerders toe te laten hun voorkeursgereedschappen te kiezen (of de gebruikers deze te laten kiezen) als er twee of meer zijn die dezelfde basisfunctionaliteit bieden, en om zonder een specifiek pakket op te geven, toch te voldoen aan de vereisten inzake pakketafhankelijkheden.

Er zouden op een systeem bijvoorbeeld twee verschillende versies van een nieuwslezerprogramma kunnen staan. Het nieuwsserverpakket kan de aanwezigheid op het systeem van een nieuwslezer 'aanbevelen', maar de keuze tussen tin en trn wordt overgelaten aan de individuele gebruiker. Aan de aanbeveling wordt voldaan door zowel het pakket tin als het pakket trn te laten voorzien in het virtuele pakket news-reader. Welk programma aanroepen wordt, wordt bepaald door een koppeling die van een bestand met de virtuele pakketnaam /etc/alternatives/news-reader verwijst naar het gekozen bestand, bijv. /usr/bin/trn.

Een enkele koppeling volstaat niet om het gebruik van een alternatief programma ten volle te ondersteunen. Normaal moeten ook man-pagina's, en eventuele andere ondersteunende bestanden ook geselecteerd worden. Het Perl-script update-alternatives biedt een manier om ervoor te zorgen dat alle bestanden die met een opgegeven pakket verband houden, geselecteerd worden als de systeemstandaard.

Om bijvoorbeeld na te gaan welke uitvoerbare bestanden voorzien in 'x-window-manager', geeft u de opdracht:

update-alternatives --display x-window-manager

Indien u dit wenst te veranderen, geef dan het commando:

update-alternatives --config x-window-manager

en volg de instructies op het scherm (eigenlijk het cijfer invoeren dat naast het item staat dat u meer verkiest).

Indien een pakket om een of andere reden zichzelf niet als 'window manager' bekendmaakt (stel een bugrapport op als dit een fout is), of indien u een windowmanager uit de map /usr/local gebruikt, zullen de keuzemogelijkheden op het scherm uw voorkeurprogramma niet vermelden. U kunt de koppeling bijwerken via commandoregelopties zoals deze:

update-alternatives --install /usr/bin/x-window-manager \
  x-window-manager /usr/local/bin/wmaker-cvs 50

Het eerste argument voor de optie '--install' is de symbolische koppeling die wijst naar /etc/alternatives/NAAM, waarbij NAAM het tweede argument is. Het derde argument is het programma waarnaar /etc/alternatives/NAAM moet verwijzen en het vierde argument is de prioriteit (hogere waarden betekenen een grotere kans dat het alternatief automatisch uitgekozen wordt).

Om een alternatief dat u toevoegde, te verwijderen, geeft u gewoon het commando:

update-alternatives --remove x-window-manager /usr/local/bin/wmaker-cvs


[5] In 2014 stapte Debian voor zijn standaard "init system" over van System V naar systemd. In april 2015 was Debian 8 "jessie" de eerste release met systemd als standaard init. Vier beslissingen van het Technisch Comité van Debian waren daarbij betrokken: Bug #727708 11-02-2014: "Het comité heeft beslist dat in jessie het standaard init systeem voor Linux-architecturen systemd moet zijn." Bug #746715 01-08-2014: "Het technisch comité verwacht van de pakketonderhouders dat zij de verschillende beschikbare init systemen zullen blijven ondersteunen", en redelijke bijdragen zullen incorporeren. Bug #746578 15-11-2014: "Het comité heeft beslist dat systemd-shim als eerste alternatieve vereiste voor libpam-systemd vermeld moet worden in plaats van systemd-sysv." Deze beslissing maakte makkelijker om een Debian systeem zonder systemd draaiend te houden. Bug #76219404-11-2017: "Over het automatisch omschakelen van init-systeem tijdens de opwaardering"