update-alternatives - symbolische koppelingen onderhouden welke
standaardcommando's bepalen
update-alternatives [optie...] commando
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.
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.
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 /etc/alternatives, die de symbolische
koppelingen bevat.
- administratieve
map
- 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 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.
- --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.
- --altdir
map
- Duidt de alternatievenmap aan als die anders dan de standaard moet zijn.
Standaard is dit «/etc/alternatives».
- --admindir
map
- Specificeert de administratieve map als die anders dan de standaard moet
zijn. Standaard is deze «/var/lib/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 (/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).
- 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.
- 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.
- /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.
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.
$ 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
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.
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
ln(1), FHS (the Filesystem Hierarchy Standard - de
standaardisatie van bestandsorganisatie en mappenstructuur op unix-achtige
systemen).