update-alternatives(1)

NAAM
update-alternatives - symbolische koppelingen onderhouden welke standaardcommando's bepalen

OVERZICHT
update-alternatives [optie...] commando

BESCHRIJVING
update-alternatives creëert, verwijdert, onderhoudt en toont informatie over de symbolische koppelingen die het 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.

Het 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 /usr/pkg/share/dpkg: de FHS (zie aldaar) legt uit waarom dit een goede zaak is.

Bij het installeren, wijzigen of verwijderen van elk pakket dat een bestand met een bepaalde functionaliteit levert, wordt update-alternatives aangeroepen om informatie over dat bestand in het systeem voor alternatieven bij te werken. update-alternatives wordt gewoonlijk aangeroepen vanuit de volgende scripts van de Debian pakketbeheerder, postinst (configure) om het alternatief te installeren en vanuit prerm en postrm (remove) om het alternatief te verwijderen. Opmerking: in de meeste (zo niet alle) gevallen mogen geen andere acties van beheerderscripts update-alternatives aanroepen, in het bijzonder upgrade en disappear niet, aangezien elke andere dergelijke actie de handmatige status van een alternatief kan verloren laten gaan, of het alternatief tijdelijk kan laten heen en weer schakelen, of volledig laten overschakelen wanneer meerdere van hen dezelfde prioriteit hebben.

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 alternatievenkoppeling)
    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 /usr/pkg/share/dpkg/alternatives, die de symbolische koppelingen bevat.

administratieve map
    Een map, standaard /var/db/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 alternatievenkoppeling uit een koppelingengroep die bepaalt hoe de andere koppelingen uit de groep geconfigureerd worden.

secundaire koppeling (of slaafkoppeling) (slave link)
    Een alternatievenkoppeling 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]...
    Een groep alternatieven toevoegen 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-alternatievenkoppeling gewoon niet geïnstalleerd worden (er zal wel een waarschuwing gegeven worden). Indien een echt bestand geïnstalleerd is waar een alternatievenkoppeling 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
    Het programma pad instellen als alternatief voor naam. Dit is het equivalent voor --config, maar het is non-interactief en dus bruikbaar in scripts.

--remove naam pad
    Een alternatief en alle eraan gekoppelde secundaire (of slaaf-)koppelingen verwijderen. 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
    Alle alternatieven en alle ermee verbonden secundaire (of slaaf-)koppelingen verwijderen. naam is een naam in de alternatievenmap.

--all
    --config uitvoeren 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
    De koppelingengroep achter het alternatief voor naam omschakelen 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
    Informatie over de koppelingengroep tonen. 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
    Alle namen opsommen 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
    Op standaardinvoer configuratie voor alternatieven lezen in de door --get-selections gegenereerde indeling en deze dienovereenkomstig herconfigureren(sinds versie 1.15.0).

--query naam
    Informatie weergeven 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
    Alle doelen van de koppelingengroep weergeven.

--config naam
    De beschikbare alternatieven voor een koppelingengroep tonen en de gebruiker toelaten om interactief te selecteren welke er gebruikt moet worden. De koppelingengroep wordt bijgewerkt.

--help
    Info tonen over het gebruik en afsluiten.

--version
    De versie tonen en afsluiten.

OPTIES

--altdir map
    Duidt de alternatievenmap aan als die anders dan de standaard moet zijn. Standaard is dit «/usr/pkg/share/dpkg/alternatives».

--admindir map
    Specificeert de administratieve map als die anders dan de standaard moet zijn. Standaard is deze «/var/db/dpkg/alternatives» indien DPKG_ADMINDIR niet werd ingesteld.

--instdir map
    Specificeert de installatiemap waar alternatievenkoppelingen gecreëerd zullen worden (sinds versie 1.20.1). Standaard is dat «/» indien DPKG_ROOT niet werd ingesteld.

--root map
    Specificeert de basismap (sinds versie 1.20.1). Hiermee worden ook de alternatieven, installatie- en administratieve mappen aangepast. Standaard is dat «/» indien DPKG_ROOT niet werd ingesteld.

--log bestand
    Duidt het logbestand aan (sinds versie 1.15.0) als dat anders dan de standaard (/usr/pkg/var/log/alternatives.log) moet zijn.

--force
    Toestaan om een echt bestand te vervangen of te verwijderen dat geïnstalleerd is waar een alternatievenkoppeling 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
    Meer commentaar genereren 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_ROOT
    Indien dit ingesteld is en de opties --instdir of --root niet opgegeven werden, zal dit gebruikt worden als de hoofdmap voor het bestandssysteem.

DPKG_ADMINDIR
    Indien dit ingesteld is en de optie --admindir niet opgegeven werd, zal dit gebruikt worden als de administratieve basismap.

BESTANDEN

/usr/pkg/share/dpkg/alternatives/
    De standaardmap voor alternatieven. Kan gewijzigd worden met de optie --altdir.

/var/db/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 onderdelen, waarbij n het aantal beschikbare alternatieven is uit de opgevraagde koppelingengroep. Het eerste onderdeel 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
    De 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 onderdelen geven de beschikbare alternatieven weer in de opgevraagde koppelingengroep:

Alternative: pad-van-dit-alternatief
    Het pad naar het alternatief uit dit onderdeel.

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 - de standaardisatie van bestandsorganisatie en mappenstructuur op unix-achtige systemen).