Alternativy je mechanismus pro výběr preferovaného softwaru z několika možností v některých distribucích Linuxu .
Poprvé se objevil v Debianu , odkud se dostal do distribucí odvozených od Debianu (např. Ubuntu). Byl také portován na Red Hat Linux , odkud se dostal do mnoha distribucí založených na RPM .
Určité funkce může zajišťovat několik programů, avšak z různých důvodů lze jako „hlavní“ (hlavní) použít pouze jeden. Například na libovolném portu může současně „naslouchat“ pouze jeden program, takže například pouze jeden program může fungovat jako poštovní server (přijímat poštu na standardním portu SMTP ). Podobně mají různé poštovní servery různý hardware, ale všechny musí poskytovat rozhraní programu sendmail .
Zpočátku se k tomu používaly ručně vytvořené symbolické odkazy (například /usr/bin/sendmail byl vytvořen jako symbolický odkaz na odpovídající program ze softwarového balíku poštovního serveru (jako Exim , Postfix atd.).
Později byla tato metoda rozšířena na mnoho aplikací a byla standardizována.
update-alternatives napsal Ian Jackson v roce 1995 a je součástí a nedílnou součástí balíčku dpkg (Debian package manager).
Update-alternatives spravuje symbolické odkazy z předdefinovaných názvů na skutečné aplikace. Například /usr/bin/x-www-browser (grafický prohlížeč) může odkazovat na /usr/bin/ firefox , /usr/bin/ konqueror , /usr/bin/ opera nebo jiný prohlížeč. Program, který potřebuje volat prohlížeč, nemusí vědět o celé řadě prohlížečů nebo poskytovat speciální nastavení pro výběr prohlížeče, tento program v případě potřeby jednoduše zavolá /usr/bin/x-www-browser a správně zvolí alternativa umožňuje správci systému určit, který tento prohlížeč by měl být.
V rámci alternativního modelu běžný název (jako /usr/bin/ sendmail , /usr/bin/ed, /usr/bin/x-www-browser ) neukazuje přímo na požadovaný soubor, ale na název v adresář alternatives , který je již symbolickým odkazem na soubor, který poskytuje požadovanou funkcionalitu . Běžný název nemusí být program, může to být například stránka nápovědy, písmo, slovník atd.
Při instalaci každého balíčku, který poskytuje specifickou funkcionalitu, se volá update-alternatives, které ukládá informace o vzhledu (zmizení) jakékoli alternativy. Obvykle se volání provádí v sekcích postinst (skript po instalaci) nebo prerm (skript před odstraněním). Pokud je odstraněn poslední z balíčků poskytujících funkce specifické pro běžný název, odstraní se symbolický odkaz a běžný název. (Například server bez GUI nemusí mít /usr/bin/x-www-browser, chybějící program pro kreslení diagramů nemusí mít odkaz /usr/bin/dia atd.)
Navíc je možné seskupovat závislosti určením primárních (master) a sekundárních (slave). Každý odkaz může být automatický nebo nastavit ručně (manuálně). Když je skupina propojení v automatickém režimu, alternativní systém správy sám rozhodne, který program je preferován. V ručním režimu je alternativa nastavena správcem systému a nemění se. V automatickém režimu je preferovaný program vybrán na základě priority .
Ačkoli /usr/bin/gcc je obvykle symbolický odkaz na jednu z verzí gcc (např. /usr/bin/gcc-4.3), update-alternatives jej nepodporuje jako obecný název (ačkoli /usr /bin/cc) . To je způsobeno vzájemnou nekompatibilitou různých verzí gcc a důležitostí udržování konkrétní verze gcc pro zdraví celého systému. Je na vývojáři distribuce Linuxu, aby určil, který kompilátor je „master“ kompilátor na daném systému. [jeden]