GNU/Linux >> Znalost Linux >  >> Linux

Úvod do příkazu alternatives v Linuxu

Abstrakce mohou být pro uživatele užitečné, protože mnoho uživatelů se nestará o to, jak jejich počítač plní úkol, pokud jde o cíl. Ve skutečnosti ani aplikacím není vždy jedno, jak je něčeho dosaženo, pokud jsou všechna jejich systémová volání zodpovězena správně. Teoreticky může správce systému Linux nabídnout mnoho systémových nástrojů podle funkce, nikoli podle přesného názvu spustitelného souboru, ale to často vyžaduje mnoho symbolických odkazů a sledování verzí. Pokud tomu tak není, použijete alternatives příkaz.

alternatives velení začalo svůj život jako, zajímavé je, alternativa. Původně se jednalo o pohodlnou utilitu napsanou v Perlu z projektu Debian Linux s názvem update-alternatives . Red Hat přepsal příkaz bez Perlu a byl šířen v distribucích založených na Fedoře, jako je Red Hat a CentOS, stejně jako v dalších distribucích, které od Red Hatu hledají funkční definici Linux Standard Base (LSB).

Kdy použít příkaz alternatives

Jednoduchý a realistický příklad:v systému máte příkaz s názvem em , který spouští jednoduchý textový editor. Už léta je to oblíbený editor pro vaši uživatelskou základnu, mnoho lidí na něm založilo pracovní postupy a někteří pro něj udržují vysoce přizpůsobené konfigurace. Vaše uživatelská základna vám však nedávno dala jasně najevo, že bez podpory emotikonů ve svých editorech terminálů a em již déle nevydrží nepodporuje Unicode.

Najdete rozvětvení em s podporou Unicode s názvem nem , ale víte, že 99 % vašich uživatelů je zvyklých na em , mají skripty, které volají em , a bude i nadále považovat jakoukoli náhradní aplikaci za em nezáleží na tom, co děláš. Snadným řešením této situace a mnoha dalších podobných příkladů je označit nový nem binární jako preferovaná alternativa k em binární, když em je použit příkaz.

Ruční vytvoření symbolického odkazu se může zdát lákavé, ale není odolné vůči aktualizacím ze správce balíčků a není ani centralizované.

alternatives příkaz je nejužitečnější při správě "obecných" názvů aplikací. Samozřejmě ve světě UNIX není „generický“ vždy obecný o nic víc než „Kleenex“ nebo „Xerox“ ve skutečném světě, takže výrazy jako java , (x)emacs(-nox) , (n)vi(m) , whois a iptables jsou často jedni z prvních, kterým jsou definovány alternativy. Pro skutečně obecné výrazy, jako je EDITOR a CC , alternatives příkaz není považován za vhodné řešení. Pro tyto termíny, protože jsou to proměnné prostředí a měly by být definovány v /etc nebo $HOME/.profile .

Vytvoření nové alternativy

Pokračujeme v příkladu scénáře staré binárky s názvem em je nahrazena novou variantou nem , je snadné vytvořit alternativní záznam. V tomto příkladu musíte přejmenovat původní příkaz, i když v jiných případech to není nutné, protože příkaz není přesně to, co si lidé myslí, že je na prvním místě (java , například se zřídka nachází v /usr/bin přímo). Pokud potřebujete změnit název binárního souboru, správný způsob, jak to udělat, je v jeho souboru RPM spec, takže RPM instaluje příkaz poskytne binární soubor pod novým názvem.

V nouzi, zvláště pokud příkaz stejně vyřazujete, můžete odebrat příkaz ze správy balíků systému a ponechat k dispozici vlastní verzi starého příkazu /opt nebo podobně.

V tomto příkladu předpokládejme, že jste původní editor přejmenovali na em2 (označuje číslo jeho nejnovější verze).

Nyní máte dva binární soubory (em2 a nem ), který má být spojen s jedním příkazem:em . Aby byly různé role terminologie jasné, předpokládejme, že em a nem jsou oba editory ve stylu micro Emacs. V takovém případě může být velmi obecný termín pro vytvářenou alternativu µemacs (pomocí symbolu µ znamená "mikro") nebo uemacs pro jednoduchost.

Vytvořte alternativu k originálu zadáním:

  • umístění pro „obecný“ symbolický odkaz
  • název alternativy (Rozhodl jsem se pro uemacs , aby bylo jasné, že se jedná spíše o referenční název než o konkrétní binární soubor)
  • binární soubor, který se má spustit při volání těchto symbolických odkazů
  • úroveň priority označující, která alternativa je preferována
$ sudo alternatives --install /usr/bin/em uemacs /opt/em-legacy/em2 1

Vytvořte alternativu pro nový binární soubor s vysokou prioritou, protože je to váš preferovaný binární soubor:

$ sudo alternatives --install /usr/bin/em uemacs /usr/local/bin/nem 99

Tyto příkazy vytvoří nový symbolický odkaz, /usr/bin/em , ukazující na /etc/alternatives/em , na které můžete ukázat buď /opt/em-legacy/em2 nebo /usr/local/bin/nem . Lidsky přívětivý odkaz na tento balík alternativ je uemacs , který byl libovolně zvolen správcem systému, protože je popisný a zapamatovatelný. Cíl alternativního symbolického odkazu můžete vybrat pomocí --config možnost:

$ sudo alternatives --config uemacs
[sudo] password for seth: 

There are 2 programs which provide 'uemacs'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/local/bin/nem
   2           /opt/em-legacy/em2

Odebrání alternativy

Někdy jsou alternativy dlouhodobá řešení a jindy mají pouze pomoci uživatelům nebo správcům přejít na něco nového. Pokud z jakéhokoli důvodu potřebujete odstranit alternativu, můžete to udělat pomocí --remove-all možnost, za kterou následuje „obecný“ název alternativy. V tomto příkladu je to uemacs :

$ sudo alternatives --remove-all uemacs

Tím se odstraní vše o uemacs z alternatives subsystém:symbolický odkaz v /usr/bin a /etc/alternatives . Pokud chcete odstranit pouze jednu možnost z alternativy, použijte --remove možnost poskytující alternativní název (uemacs v tomto příkladu) a cestu volby, kterou chcete vypustit:

$ sudo alternatives --remove uemacs /opt/em-legacy/em2

Alternativy

alternatives příkaz má mnohem více funkcí, včetně schopnosti symbolicky propojit závislé komponenty, když je zvolena konkrétní alternativa. Kromě zvládání velkého množství těžkých břemen, alternatives udržuje vaše nekonzistence centralizované. Můžete zkontrolovat, jaké alternativy jsou na místě, takže si nemusíte ze dne na den pamatovat, že emacs je ve skutečnosti emacs-26.3 nebo java není java-1.8 ale /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0 , a tak dále:

$ alternatives --list

Linux je o výběru, flexibilitě a alternatives command je příkladem toho, jak mohou uživatelé i správci těžit z chytrého triku.

Chcete vyzkoušet Red Hat Enterprise Linux? Stáhněte si ji nyní zdarma.


Linux
  1. Úvod do používání tcpdump na příkazovém řádku Linuxu

  2. Úvod do linuxového příkazu chmod

  3. Úvod do linuxového příkazu chown

  1. Zvládněte příkaz Linux ls

  2. Úvod do příkazu diff

  3. 5 Praktické příklady příkazu dd v Linuxu

  1. Úvod do souborového systému Linux

  2. Vyhledejte příkaz v Linuxu

  3. Vraťte zpět příkaz linuxového koše