update\-alternatives

Section: dpkg\-suite (1)
Updated: 2019-04-02
Page Index
 

NAAM

update-alternatives - onderhoud symbolische koppelingen die standaardcommando's definiëren  

OVERZICHT

update-alternatives [optie...] commando  

BESCHRIJVING

update-alternatives creëert, verwijdert, onderhoudt en toont informatie over de symbolische koppelingen die het Debian systeem van alternatieven vormen.

Het is mogelijk dat verschillende programma's die dezelfde of vergelijkbare functies vervullen, op hetzelfde moment op hetzelfde systeem geïnstalleerd zijn. Op veel systemen zijn bijvoorbeeld tezelfdertijd meerdere teksteditors geïnstalleerd. Dit biedt de gebruikers van een systeem keuzemogelijkheden en laat iedere gebruiker toe desgewenst een andere editor te gebruiken. Maar het maakt het ook moeilijk voor een programma om een goede keuze te maken betreffende de op te starten editor indien de gebruiker geen specifieke voorkeur opgegeven heeft.

Debian's systeem van alternatieven is erop gericht dit probleem op te lossen. Een algemene naam in het bestandssysteem wordt onderling gedeeld door alle bestanden die inwisselbare functionaliteit bieden. Het systeem van alternatieven samen met de systeembeheerder bepalen naar welk effectief bestand door deze algemene naam verwezen wordt. Indien bijvoorbeeld zowel de editor ed(1) als nvi(1) op het systeem geïnstalleerd zijn, zal het systeem van alternatieven er voor zorgen dat de algemene naam /usr/bin/editor standaard naar /usr/bin/nvi verwijst. De systeembeheerder kan dit aanpassen en hem in plaats daarvan naar /usr/bin/ed doen verwijzen. In dat geval zal het alternatievensysteem deze instelling niet wijzigen totdat het er expliciet om gevraagd wordt.

De algemene naam is geen rechtstreekse symbolische koppeling naar het geselecteerde alternatief. Hij is eerder een symbolische koppeling naar een naam in de map alternatives die op zijn beurt een symbolische koppeling is naar het eigenlijke bestand waarnaar verwezen wordt. Dit wordt gedaan zodat de wijzigingen van de systeembeheerder beperkt kunnen blijven tot de map /etc: de FHS (zie aldaar) legt uit waarom dit een goede zaak is.

Telkens een pakket dat voorziet in een bestand met een specifieke functionaliteit, wordt geïnstalleerd, gewijzigd of verwijderd, wordt update-alternatives aangeroepen om de informatie over dat bestand bij te werken in het alternatievensysteem. update-alternatives wordt gewoonlijk aangeroepen vanuit het script postinst (configure/configureren) of prerm (remove/verwijderen en deconfigure/de-configureren) uit Debian pakketten.

Het is dikwijls nuttig om een aantal alternatieven te synchroniseren, zodat ze als groep aangepast worden. Als er bijvoorbeeld verschillende versies van de editor vi(1) geïnstalleerd zijn, moet de man-pagina waarnaar verwezen wordt door /usr/share/man/man1/vi.1 overeenkomen met het uitvoerbaar programma waarnaar door /usr/bin/vi verwezen wordt. update-alternatives handelt dit af met behulp van master (hoofd-) en slave (secundaire of slaaf-) koppelingen. Als de hoofdkoppeling gewijzigd wordt, worden eventuele ermee verband houdende secundaire koppelingen ook gewijzigd. Een hoofdkoppeling en zijn ermee verbonden secundaire koppelingen vormen samen een link group (koppelingengroep).

Elke koppelingengroep bevindt zich op gelijk welk moment in de tijd in één van twee modi: automatische modus of manuele modus. Als een groep zich in automatische modus bevindt, dan zal wanneer pakketten geïnstalleerd of verwijderd worden, het alternatievensysteem automatisch beslissen of en hoe de koppelingen bijgewerkt moeten worden. In de manuele modus zal het alternatievensysteem de keuze van de systeembeheerder behouden en vermijden om de koppelingen te wijzigen (behalve wanneer iets defect is).

Een koppelingengroep bevindt zich in de automatische modus als die voor het eerst op het systeem geïntroduceerd wordt. Indien de systeembeheerder aan de automatische instellingen van het systeem veranderingen aanbrengt, zal dit de volgende keer dat update-alternatives uitgevoerd wordt op de groep van de gewijzigde koppeling, opgemerkt worden en de groep zal automatisch omgeschakeld worden naar manuele modus.

Aan elk alternatief is een prioriteit gekoppeld. Als een koppelingengroep zich in de automatische modus bevindt, dan zijn het de alternatieven met de hoogste prioriteit waarnaar verwezen zal worden door leden van die groep.

Als de optie --config gebruikt wordt, zal update-alternatives een lijst geven met al de keuzemogelijkheden voor de koppelingengroep waarvan de opgegeven naam de naam is van het hoofdalternatief. De huidige keuze wordt gemarkeerd met een'*'. Daarna zult u gevraagd worden naar uw keuze voor deze koppelingengroep. Afhankelijk van de gemaakte keuze, kan het zijn dat de koppelingengroep niet langer in de modus auto (automatische modus) verkeert. U zult de optie --auto moeten gebruiken om terug te keren naar de automatische modus (of u kunt --config opnieuw uitvoeren en het item selecteren dat als automatisch gemarkeerd staat).

Indien u op een niet-interactieve manier wilt configureren, kunt u in de plaats daarvan de optie --set gebruiken (zie hierna).

Verschillende pakketten die hetzelfde bestand leveren, moeten dat op een coöperatieve manier doen. Het gebruik van update-alternatives is met andere woorden in dergelijke gevallen verplicht voor alle betrokken pakketten. Het is niet mogelijk om een bepaald bestand uit een pakket te vervangen dat geen gebruik maakt van het update-alternatives mechanisme.  

TERMINOLOGIE

Aangezien de activiteit van update-alternatives behoorlijk ingewikkeld is, kunnen een aantal specifieke termen helpen bij het verduidelijken van zijn werking.
algemene naam (of alternatief-koppeling)
Een naam, zoals /usr/bin/editor, die via het systeem van alternatieven verwijst naar één of een aantal bestanden met een gelijkaardige functie.
alternatief-naam
De naam van een symbolische koppeling in de map alternatives.
alternatief (of alternatief-pad)
De naam van een specifiek bestand in het bestandssysteem, dat met behulp van het alternatievensysteem via een algemene naam benaderbaar gemaakt kan worden.
alternatievenmap
Een map, standaard /etc/alternatives, die de symbolische koppelingen bevat.
beheersmap
Een map, standaard /var/lib/dpkg/alternatives, die de statusinformatie voor update-alternatives bevat.
koppelingengroep
Een reeks symbolische koppelingen die met elkaar verband houden en waarvan het de bedoeling is dat ze als groep bijgewerkt worden.
hoofdkoppeling (master link)
De alternatief-koppeling uit een koppelingengroep die bepaalt hoe de andere koppelingen uit de groep geconfigureerd worden.
secundaire koppeling (of slaafkoppeling) (slave link)
Een alternatief-koppeling uit een koppelingengroep die gecontroleerd wordt door de instelling van de hoofdkoppeling.
automatische modus
Als een koppelingengroep zich in automatische modus bevindt, verzekert het alternatievensysteem dat de koppelingen uit de groep verwijzen naar het voor de groep passende alternatief met de hoogste prioriteit.
manuele modus
Als een koppelingengroep zich in manuele modus bevindt, zal het alternatievensysteem geen enkele wijziging aanbrengen aan de instellingen van de systeembeheerder.
 

COMMANDO'S

--install koppeling naam pad prioriteit [--slave koppeling naam pad]...
Voeg een groep alternatieven toe aan het systeem. koppeling is de algemene naam voor de hoofdkoppeling. naam is de naam van zijn symbolische koppeling in de alternatievenmap. pad is het alternatief dat voor de hoofdkoppeling aangevoerd wordt. De argumenten na --slave zijn de algemene naam, de naam van de symbolische koppeling in de alternatievenmap en het alternatief-pad van een slaaf-koppeling. Nul of meer --slave-opties kunnen opgegeven worden. Elk van hen moet door drie argumenten gevolgd worden. Merk op dat het hoofdalternatief moet bestaan. Zo niet, dan zal de aanroep mislukken. Indien evenwel een slaaf-alternatief niet bestaat, dan zal de overeenkomstige slaaf-alternatief-koppeling gewoon niet geïnstalleerd worden (er zal wel een waarschuwing gegeven worden). Indien een echt bestand geïnstalleerd is waar een alternatief-koppeling geïnstalleerd moet worden, wordt dat behouden tenzij de optie --force gebruikt wordt.
Indien de opgegeven alternatief-naam reeds bestaat in de registers van het alternatievensysteem, dan zal de verstrekte informatie toegevoegd worden als een nieuwe reeks van alternatieven voor de groep. Anders zal een nieuwe groep in automatische modus toegevoegd worden met die informatie. Indien de groep zich in automatische modus bevindt en de pas toegevoegde alternatieven een grotere prioriteit hebben dan om het even welke andere geïnstalleerde alternatieven voor die groep, dan zullen de symbolische koppelingen bijgewerkt worden zodat ze verwijzen naar de pas toegevoegde alternatieven.
--set naam pad
Stel het programma pad in als alternatief voor naam. Dit is het equivalent voor --config, maar het is non-interactief en dus bruikbaar in scripts.
--remove naam pad
Verwijder een alternatief en alle eraan gekoppelde secundaire (of slaaf-) koppelingen. naam is een naam in de alternatievenmap en pad is een absolute bestandsnaam waaraan naam gekoppeld zou kunnen zijn. Indien naam inderdaad gekoppeld is aan pad, dan wordt naam bijgewerkt, zodat die verwijst naar een ander geschikt alternatief (en wordt de groep opnieuw in automatische modus geplaatst), of verwijderd als er geen dergelijk alternatief meer voorhanden is. Gelieerde slaafkoppelingen zullen navenant bijgewerkt of verwijderd worden. Indien de koppeling momenteel niet naar pad verwijst, worden geen koppelingen gewijzigd. Enkel de informatie over het alternatief wordt dan verwijderd.
--remove-all naam
Verwijder alle alternatieven en alle ermee verbonden secundaire (of slaaf-) koppelingen. naam is een naam in de alternatievenmap.
--all
Voer --config uit op alle alternatieven. Het kan nuttig zijn om dit te combineren met --skip-auto om alle alternatieven te inspecteren en te configureren, die niet in automatische modus geconfigureerd zijn. Ook worden defecte alternatieven getoond. Een eenvoudige manier om alle defecte alternatieven te repareren is dus het aanroepen van yes '' | update-alternatives --force --all.
--auto naam
Schakel de koppelingengroep achter het alternatief voor naam om naar automatische modus. In dit proces worden de hoofdkoppeling en zijn slaafkoppelingen bijgewerkt zodat ze verwijzen naar de geïnstalleerde alternatieven met de hoogste prioriteit.
--display naam
Toon informatie over de koppelingengroep. De getoonde informatie bevat de modus van de groep (auto of manueel), de hoofdkoppeling en de slaafkoppelingen, het alternatief waarnaar de hoofdkoppeling momenteel verwijst, de andere alternatieven die beschikbaar zijn (en hun overeenkomstige slaaf-alternatieven) en het momenteel geïnstalleerde alternatief met de hoogste prioriteit.
--get-selections
Som alle namen op van de hoofdalternatieven (die welke een koppelingengroep controleren) en hun status (sinds versie 1.15.0). Elke regel kan tot 3 velden bevatten (door één of meer spaties van elkaar gescheiden). Het eerste veld is de naam van het alternatief. Het tweede is de status ervan (ofwel auto ofwel manual). Het laatste bevat het momenteel gekozen alternatief (let op: dit is een bestandsnaam en kan dus spaties bevatten).
--set-selections
Lees op standaardinvoer configuratie voor alternatieven in de door --get-selections gegenereerde indeling en herconfigureer ze dienovereenkomstig (sinds versie 1.15.0).
--query naam
Geef informatie weer over de koppelingengroep zoals --display dat doet, maar dan op een manier die door een machine ontleed kan worden (sinds versie 1.15.0, zie hierna bij het onderdeel INDELING GEGEVENSOPVRAGING).
--list naam
Geef alle doelen van de koppelingengroep weer.
--config naam
Toon de beschikbare alternatieven voor een koppelingengroep en laat de gebruiker toe om interactief te selecteren welke er gebruikt moet worden. De koppelingengroep wordt bijgewerkt.
--help
Toon info over het gebruik en sluit af.
--version
Toon de versie en sluit af.
 

OPTIES

--altdir map
Duidt de alternatievenmap aan als die anders dan de standaard moet zijn.
--admindir map
Duidt de beheersmap aan als die anders dan de standaard moet zijn.
--log bestand
Duidt het logbestand aan (sinds versie 1.15.0) als dat anders dan de standaard (/var/log/alternatives.log) moet zijn.
--force
Laat toe om een echt bestand te vervangen of te verwijderen dat geïnstalleerd is waar een alternatief-koppeling geïnstalleerd of verwijderd moet worden.
--skip-auto
Voor alternatieven die in automatische modus behoorlijk geconfigureerd zijn, de configuratievraag overslaan. Deze optie is enkel relevant in combinatie met --config of --all.
--quiet
Geen commentaar genereren tenzij er zich fouten voordoen.
--verbose
Genereer meer commentaar bij wat er gedaan wordt.
--debug
Zelfs nog meer commentaar genereren bij wat er gedaan wordt, nuttig bij het debuggen (sinds versie 1.19.3).
 

AFSLUITSTATUS

0
De gevraagde actie werd succesvol uitgevoerd.
2
Er deden zich problemen voor tijdens het ontleden van de commandoregel of het uitvoeren van de actie.
 

OMGEVING

DPKG_ADMINDIR
Indien dit ingesteld is en de optie --admindir niet opgegeven werd, zal dit gebruikt worden als de hoofdmap voor beheersdoeleinden.
 

BESTANDEN

/etc/alternatives/
De standaardmap voor alternatieven. Kan gewijzigd worden met de optie --altdir.
/var/lib/dpkg/alternatives/
De standaardmap voor beheersdoeleinden. Kan gewijzigd worden met de optie --admindir.
 

INDELING GEGEVENSOPVRAGING

De indeling die gebruikt wordt bij --query is een RFC822-achtige vlakke indeling. Ze bestaat uit n + 1 blokken, waarbij n het aantal beschikbare alternatieven is uit de opgevraagde koppelingengroep. Het eerste blok bevat de volgende velden:
Name: naam
De naam van het alternatief in de alternatievenmap.
Link: koppeling
De algemene naam van het alternatief.
Slaves: lijst-van-slaven
Als dit veld aanwezig is, bevatten de volgende regels alle slaaf-koppelingen die gelieerd zijn met de hoofdkoppeling van het alternatief. Per regel wordt één slaaf vermeld. Elke regel bevat één spatie, de algemene naam van het slaaf-alternatief, opnieuw een spatie en het pad naar de slaaf-koppeling.
Status: status
The status van het alternatief (auto of manual) (automatisch of manueel).
Best: beste-keuze
Het pad naar het beste alternatief voor deze koppelingengroep. Komt niet voor als er geen alternatieven beschikbaar zijn.
Value: momenteel-geselecteerd-alternatief
Het pad naar het momenteel geselecteerde alternatief. Het kan ook de magische waarde none hebben. Die wordt gebruikt als de koppeling niet bestaat.

De andere blokken geven de beschikbare alternatieven weer in de opgevraagde koppelingengroep:

Alternative: pad-van-dit-alternatief
Het pad naar het alternatief uit dit blok.
Priority: waarde-van-prioriteit
De prioriteitswaarde van dit alternatief.
Slaves: lijst-van-slaven
Als dit veld voorkomt, bevatten de volgende regels alle slaaf-alternatieven die gelieerd zijn aan de hoofdkoppeling van het alternatief. Per slaaf wordt één regel gebruikt. Elke regel bevat één spatie, de algemene naam van het slaaf-alternatief, opnieuw een spatie en het pad naar het slaaf-alternatief.
 

Voorbeeld

$ update-alternatives --query editor
Name: editor
Link: /usr/bin/editor
Slaves:
 editor.1.gz /usr/share/man/man1/editor.1.gz
 editor.fr.1.gz /usr/share/man/fr/man1/editor.1.gz
 editor.it.1.gz /usr/share/man/it/man1/editor.1.gz
 editor.pl.1.gz /usr/share/man/pl/man1/editor.1.gz
 editor.ru.1.gz /usr/share/man/ru/man1/editor.1.gz
Status: auto
Best: /usr/bin/vim.basic
Value: /usr/bin/vim.basic

Alternative: /bin/ed
Priority: -100
Slaves:
 editor.1.gz /usr/share/man/man1/ed.1.gz

Alternative: /usr/bin/vim.basic
Priority: 50
Slaves:
 editor.1.gz /usr/share/man/man1/vim.1.gz
 editor.fr.1.gz /usr/share/man/fr/man1/vim.1.gz
 editor.it.1.gz /usr/share/man/it/man1/vim.1.gz
 editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz
 editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz
 

DIAGNOSTIEK

Als update-alternatives gebruikt wordt met --verbose, dan ratelt het onophoudelijk over zijn activiteiten op zijn standaard uitvoerkanaal. Indien er zich problemen voordoen, produceert update-alternatives foutmeldingen op zijn standaard foutkanaal en geeft het een afsluitstatus 2 terug. Deze diagnostiek zou eenvoudig te verstaan moeten zijn. Mocht u dit niet vinden, gelieve dat dan als een bug te rapporteren.  

VOORBEELDEN

Er zijn verschillende pakketten die een teksteditor leveren die compatibel is met vi, bijvoorbeeld nvi en vim. Welke er gebruikt wordt, wordt geregeld door de koppelingengroep vi, die koppelingen bevat naar het programma zelf en naar de ermee verband houdende man-pagina.

Om weer te geven welke beschikbare pakketten vi leveren en wat de huidige instelling ervoor is, gebruikt u de actie --display:

update-alternatives --display vi

Om een specifieke vi-toepassing te kiezen, gebruikt u als systeembeheerder dit commando en vervolgens kiest u een nummer uit de lijst:

update-alternatives --config vi

Om terug te keren naar een situatie waarbij de vi-toepassing automatisch gekozen wordt, doet u als systeembeheerder dit:

update-alternatives --auto vi
 

ZIE OOK

ln(1), FHS, the Filesystem Hierarchy Standard. (Standaardisatie van bestandsorganisatie en mappenstructuur op unix-achtige systemen)


 

Index

NAAM
OVERZICHT
BESCHRIJVING
TERMINOLOGIE
COMMANDO'S
OPTIES
AFSLUITSTATUS
OMGEVING
BESTANDEN
INDELING GEGEVENSOPVRAGING
Voorbeeld
DIAGNOSTIEK
VOORBEELDEN
ZIE OOK