GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Einführung in den Alternativen-Befehl in Linux

Abstraktionen können für Benutzer hilfreich sein, da es vielen Benutzern egal ist, wie ihr Computer eine Aufgabe erfüllt, solange er zielgerichtet ist. Tatsächlich ist es sogar Anwendungen egal, wie etwas erreicht wird, solange alle ihre Systemaufrufe korrekt beantwortet werden. Theoretisch kann ein Linux-Systemadministrator viele Systemtools eher nach Funktion als nach dem genauen Namen der ausführbaren Datei anbieten, aber das erfordert oft viel Symlinking und Versionsverfolgung. Sofern dies nicht der Fall ist, verwenden Sie die alternatives Befehl.

Die alternatives command begann sein Leben interessanterweise als Alternative. Ursprünglich war dies ein in Perl geschriebenes praktisches Hilfsprogramm aus dem Debian-Linux-Projekt mit dem Namen update-alternatives . Red Hat hat den Befehl ohne Perl neu geschrieben und er wurde in Fedora-basierten Distributionen wie Red Hat und CentOS sowie anderen Distributionen verbreitet, die sich für die funktionale Definition der Linux Standard Base (LSB) an Red Hat wenden.

Wann sollte der Alternativbefehl verwendet werden

Ein einfaches und realistisches Beispiel:Sie haben auf Ihrem System einen Befehl namens em , wodurch ein einfacher Texteditor gestartet wird. Es ist seit Jahren der bevorzugte Editor für Ihre Benutzerbasis, viele Leute haben Workflows darauf aufgebaut und einige pflegen hochgradig angepasste Konfigurationen dafür. Ihre Benutzerbasis hat Ihnen jedoch kürzlich klar gemacht, dass sie ohne Emoji-Unterstützung in ihren Terminal-Editoren und em nicht länger überleben können unterstützt kein Unicode.

Sie finden einen Unicode-fähigen Fork von em genannt nem , aber Sie wissen, dass 99 % Ihrer Benutzer an em gewöhnt sind , haben Skripte, die em aufrufen , und wird jede Ersatzanwendung weiterhin als em betrachten egal was du tust. Die einfache Lösung für diese Situation und viele andere ähnliche Beispiele besteht darin, den neuen nem festzulegen binär als bevorzugte Alternative zu em binär, wenn die em Befehl verwendet wird.

Das manuelle Erstellen eines Symlinks mag verlockend erscheinen, aber das ist weder resistent gegen Updates von einem Paketmanager, noch ist es zentralisiert.

Die alternatives Der Befehl ist am nützlichsten, wenn "allgemeine" Anwendungsnamen verwaltet werden. Natürlich ist „generisch“ in der UNIX-Welt nicht immer generisch, genauso wenig wie „Kleenex“ oder „Xerox“ in der realen Welt, also Begriffe wie Java , (x)emacs(-nox) , (n)vi(m) , whois und iptables gehören oft zu den ersten, für die Alternativen definiert wurden. Für wirklich allgemeine Begriffe wie EDITOR und CC , die alternatives Befehl wird nicht als geeignete Lösung angesehen. Für diese Begriffe, weil sie Umgebungsvariablen sind und in /etc definiert werden sollten oder $HOME/.profile .

Erstellen einer neuen Alternative

Fahren Sie mit dem Beispielszenario einer alten Binärdatei namens em fort durch die neue Variante nem ersetzt , ist es einfach, einen alternativen Eintrag zu erstellen. In diesem Beispiel müssen Sie den ursprünglichen Befehl umbenennen, obwohl dies in anderen Fällen nicht erforderlich ist, da der Befehl nicht genau das ist, was die Leute ursprünglich von ihm halten (java befindet sich beispielsweise selten in /usr/bin direkt). Wenn Sie den Namen einer Binärdatei ändern müssen, tun Sie dies am besten in ihrer RPM-Spezifikationsdatei, sodass das RPM, das den Befehl installiert, die Binärdatei unter dem neuen Namen bereitstellt.

Zur Not, insbesondere wenn Sie den Befehl sowieso auslaufen lassen, könnten Sie den Befehl aus der Paketverwaltung des Systems entfernen und einfach eine benutzerdefinierte Version des alten Befehls verfügbar halten /opt oder ähnliches.

Nehmen Sie für dieses Beispiel an, dass Sie den ursprünglichen Editor in em2 umbenannt haben (bezeichnet die neueste Versionsnummer).

Jetzt haben Sie zwei Binärdateien (em2 und nem ) mit einem Befehl verknüpft werden:em . Um die verschiedenen Rollen der Terminologie klar zu halten, gehen Sie davon aus, dass em und nem sind beide Micro-Editoren im Emacs-Stil. In diesem Fall könnte ein sehr allgemeiner Begriff für die erstellte Alternative µemacs sein (wobei das µ-Symbol für "Mikro" steht) oder uemacs der Einfachheit halber.

Erstellen Sie eine Alternative für das Original, indem Sie Folgendes angeben:

  • Ein Ort für den "generischen" Symlink
  • einen Namen für die Alternative (ich habe mich für uemacs entschieden , um deutlich zu machen, dass es sich eher um einen Referenznamen als um eine bestimmte Binärdatei handelt)
  • die Binärdatei, die ausgeführt werden soll, wenn diese Symlinks aufgerufen werden
  • eine Prioritätsstufe, um anzugeben, welche Alternative bevorzugt wird
$ sudo alternatives --install /usr/bin/em uemacs /opt/em-legacy/em2 1

Erstellen Sie eine Alternative für die neue Binärdatei mit hoher Priorität, da es Ihre bevorzugte Binärdatei ist:

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

Diese Befehle erstellen einen neuen Symlink, /usr/bin/em , die auf /etc/alternatives/em zeigen , auf die Sie wiederum auf entweder zeigen können /opt/em-legacy/em2 oder /usr/local/bin/nem . Der benutzerfreundliche Verweis auf dieses Bündel von Alternativen ist uemacs , das willkürlich vom Systemadministrator ausgewählt wurde, weil es beschreibend und einprägsam ist. Sie können das Ziel des alternativen Symlinks mit --config auswählen Möglichkeit:

$ 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

Entfernen einer Alternative

Manchmal sind Alternativen langfristige Lösungen, und manchmal sollen sie Benutzern oder Administratoren nur helfen, auf etwas Neues umzusteigen. Wenn Sie aus irgendeinem Grund eine Alternative entfernen müssen, können Sie dies mit --remove-all tun Option, gefolgt vom "allgemeinen" Namen der Alternative. In diesem Beispiel ist das uemacs :

$ sudo alternatives --remove-all uemacs

Dies entfernt alles über uemacs aus den alternatives Subsystem:der symbolische Link in /usr/bin und /etc/alternatives . Wenn Sie nur eine Auswahl aus einer Alternative entfernen möchten, verwenden Sie den --remove Option, indem Sie den alternativen Namen angeben (uemacs in diesem Beispiel) und den Pfad der Auswahl, die Sie löschen möchten:

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

Alternativen

Die alternatives Der Befehl verfügt über viele weitere Funktionen, einschließlich der Möglichkeit, abhängige Komponenten symbolisch zu verknüpfen, wenn eine bestimmte Alternative ausgewählt wird. Zusätzlich zur Bewältigung vieler schwerer Aufgaben gibt es alternatives hält Ihre Inkonsistenzen zentralisiert. Sie können überprüfen, welche Alternativen vorhanden sind, damit Sie sich nicht jeden Tag an emacs erinnern müssen ist eigentlich emacs-26.3 , oder das java ist nicht java-1.8 aber /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0 , und so weiter:

$ alternatives --list

Bei Linux dreht sich alles um Auswahl und Flexibilität und die alternatives Befehl ist ein Beispiel dafür, wie sowohl Benutzer als auch Administratoren von einigen cleveren Tricks profitieren können.

Möchten Sie Red Hat Enterprise Linux ausprobieren? Jetzt kostenlos herunterladen.


Linux
  1. Eine Einführung in die Verwendung von tcpdump auf der Linux-Befehlszeile

  2. Einführung in den Linux-Befehl chmod

  3. Einführung in den Linux-Befehl chown

  4. Meistern Sie den Linux-ls-Befehl

  5. Eine Einführung in den diff-Befehl

Der Timer-Befehl in Linux

Der Linux-Curl-Befehl

Wesentliche Beispiele des ps-Befehls in Linux

Was ist der Kill-Befehl in Linux?

Verstehen des Zeitbefehls in Linux

Verwendung des grep-Befehls unter Linux