GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでのalternativesコマンドの概要

多くのユーザーは、目標を達成している限り、コンピューターがタスクをどのように達成するかを気にしないため、抽象化はユーザーに役立ちます。実際、アプリケーションでさえ、すべてのシステムコールが正しく応答されている限り、何かがどのように達成されるかを常に気にするわけではありません。理論的には、Linux sysadminは、実行可能ファイルの正確な名前ではなく、機能に応じて多くのシステムツールを提供できますが、多くの場合、多くのシンボリックリンクとバージョン追跡が必要になります。そうでない限り、alternativesを使用します コマンド。

alternatives コマンドは、興味深いことに、代替手段としてその人生を始めました。もともと、これはupdate-alternativesと呼ばれるDebianLinuxプロジェクトからPerlで書かれた便利なユーティリティでした。 。 Red HatはPerlなしでコマンドを書き直し、Red HatやCentOSなどのFedoraベースのディストリビューション、およびLinux Standard Base(LSB)の機能定義をRedHatに求める他のディストリビューション全体に伝播されました。

> 代替コマンドを使用する場合

シンプルで現実的な例:システムにemというコマンドがあります 、シンプルなテキストエディタを起動します。これは何年にもわたってユーザーベースの頼りになるエディターであり、多くの人々がそれを中心にワークフローをベースにしており、高度にカスタマイズされた構成を維持している人もいます。ただし、最近、ユーザーベースから、ターミナルエディタとemで絵文字がサポートされていないと生き残れないことが明らかになりました。 Unicodeをサポートしていません。

Unicode対応のemのフォークが見つかります nemと呼ばれます 、しかしあなたはあなたのユーザーの99%がemに慣れていることを知っています 、emを呼び出すスクリプトがあります 、および置換アプリケーションをemと見なし続けます あなたが何をしても。この状況とそれに類似した他の多くの例の簡単な解決策は、新しいnemを指定することです。 emの推奨される代替手段としてのバイナリ emの場合はバイナリ コマンドが使用されます。

シンボリックリンクを手動で作成するのは魅力的なように思えるかもしれませんが、パッケージマネージャーからの更新に抵抗することも、一元化することもできません。

alternatives コマンドは、「一般的な」アプリケーション名を管理する場合に最も役立ちます。もちろん、UNIXの世界では、「generic」は必ずしも「Kleenex」や「Xerox」が現実の世界にある以上に一般的であるとは限らないため、 java (x)emacs(-nox)(n)vi(m) whois 、および iptables 多くの場合、それらの代替案を最初に定義したもののいくつかです。 EDITORなどの真に一般的な用語の場合 およびCCalternatives コマンドは適切な解決策とは見なされません。これらの用語については、環境変数であり、/etcで定義する必要があるためです。 または$HOME/.profile

新しい代替案の作成

emと呼ばれる古いバイナリのシナリオ例を続けます 新しいバリアントnemに取って代わられています 、代替エントリを作成するのは簡単です。この例では、元のコマンドの名前を変更する必要がありますが、他の例では、コマンドはそもそも人々が思っているものとは正確に一致しないため、これは必要ありません(java たとえば、/usr/binに配置されることはめったにありません。 直接)。バイナリの名前を変更する必要がある場合、それを行う正しい方法は、RPM仕様ファイルにあり、コマンドをインストールするRPMが新しい名前でバイナリを提供するようにします。

ピンチでは、特にコマンドを段階的に廃止する場合は、システムのパッケージ管理からコマンドを削除し、古いコマンドのカスタムバージョンを利用可能な/optのままにしておくことができます。 または同様のもの。

この例では、元のエディターの名前をem2に変更したと仮定します。 (最新のバージョン番号を示します)。

これで、2つのバイナリ(em2 およびnem )1つのコマンドに関連付ける:em 。用語のさまざまな役割を明確に保つために、em およびnem どちらもマイクロEmacsスタイルのエディタです。その場合、作成される代替案の非常に一般的な用語は、µemacsである可能性があります。 (µ記号を使用して「マイクロ」を意味します)またはuemacs 簡単にするために。

次の情報を提供して、オリジナルの代替案を作成します。

  • 「一般的な」シンボリックリンクの場所
  • 代替の名前(uemacsを決定しました 、特定のバイナリではなく参照名であることを明確にするため)
  • これらのシンボリックリンクが呼び出されたときに実行されるバイナリ
  • どの代替案が優先されるかを示す優先度レベル
$ sudo alternatives --install /usr/bin/em uemacs /opt/em-legacy/em2 1

新しいバイナリの代替を作成します。これは、優先されるバイナリであるため、優先度が高くなります。

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

これらのコマンドは、新しいシンボリックリンク/usr/bin/emを作成します 、/etc/alternatives/emを指しています 、次にどちらかを指すことができます /opt/em-legacy/em2 または/usr/local/bin/nem 。この選択肢のバンドルへの人間に優しい参照は、uemacsです。 、説明的で記憶に残るため、システム管理者が任意に選択しました。 --configを使用して、代替シンボリックリンクの宛先を選択できます オプション:

$ 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
代替の削除

代替案が長期的な解決策である場合もあれば、ユーザーや管理者が新しいものに移行するのを支援するためだけの場合もあります。何らかの理由で代替を削除する必要がある場合は、--remove-allを使用して削除できます。 オプションの後に、代替の「一般的な」名前が続きます。この例では、それはuemacsです :

$ sudo alternatives --remove-all uemacs

これにより、uemacsに関するすべてが削除されます alternativesから サブシステム:/usr/binのシンボリックリンク および/etc/alternatives 。選択肢から1つの選択肢のみを削除する場合は、--removeを使用します オプション、代替名を提供(uemacs この例では)、ドロップする選択肢のパス:

$ sudo alternatives --remove uemacs /opt/em-legacy/em2
代替案

alternatives コマンドには、特定の選択肢が選択されたときに依存コンポーネントをシンボリックリンクする機能など、さらに多くの機能があります。多くの手間のかかる作業に加えて、alternatives 不整合を一元的に保ちます。どの代替案が用意されているかを確認できるので、emacsを毎日覚えておく必要はありません。 実際にはemacs-26.3 、またはそのjava java-1.8ではありません ただし、/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0 、など:

$ alternatives --list

Linuxは、選択と柔軟性、そしてalternativesがすべてです コマンドは、ユーザーと管理者の両方が巧妙な手先の早業からどのように利益を得ることができるかの例です。

Red Hat Enterprise Linuxを試してみませんか?今すぐ無料でダウンロードしてください。


Linux
  1. Linuxコマンドラインでのtcpdumpの使用の概要

  2. Linuxのchmodコマンドの概要

  3. Linuxのchownコマンドの概要

  1. Linuxlsコマンドをマスターする

  2. diffコマンドの概要

  3. Linuxでのddコマンドの5つの実用例

  1. Linuxファイルシステムの概要

  2. Linux での locate コマンド

  3. Linux のごみ箱コマンドを元に戻す