web-dev-qa-db-ja.com

システム上のすべての設定可能な「代替」(同様のコマンドのシンボリックリンク)を一覧表示する方法はありますか?

RHEL/Fedoraのalternativesコマンド(パッケージchkconfig)は、汎用名を代替実装の1つにリンクするシンボリックリンクを管理します。たとえば、シンボリックリンクのmtaグループは、SendmailとPostfixによって提供できます(つまり、sendmailコマンドを実装するため)。

alternatives --display mta

できる間--displayシンボリックリンクのグループです。最初にその名前を推測する必要があります(つまり、mta)。

選択可能なすべての構成可能なシンボリックリンクグループ(mtaなど)を単純にリストできますか?

その理由は、グループ名を時々忘れてしまうからです。

27
uvsmtid

正確な答えは次のとおりです。

ls /var/lib/alternatives

ディレクトリ/etc/alternativesは、すべてのシンボリックリンクのマスターとスレーブを一緒に混合したフラットな長いリストを維持します。スレーブシンボリックリンクはalternatives --display [symlink]コマンドでは使用できません。

同時に、ディレクトリ/var/lib/alternativesには、ファイル名のリストshortenedの各グループのステータス情報(マスターとスレーブの関係を含む)が含まれていますallのうち、--displayオプションで直接使用できます。たとえば、/var/lib/alternatives/Java

alternatives --display Java
16
uvsmtid

Debian(FedoraまたはRHELではない)で、すべての「マスター代替名」のリストを表示するには:

update-alternatives --get-selections

--get-selectionsマスター代替名とそのステータスをリストします。

また、リストされているそれぞれについて、--list $ALTERNATIVE_NAMEを実行できます。

update-alternatives --list editor

--list nameリンクグループのすべてのターゲットを表示します。

それぞれのグループのすべての選択肢のリストを表示したい場合は、fishシェルで次のコマンドを実行できます。

for alternative in (update-alternatives --get-selections)
    echo $alternative 
    update-alternatives --list (echo $alternative | cut -d" " -f1)
    echo
end | pager

(ba | z)?shの構文も同様です。

代替を変更するには、Sudo update-alternatives --config $ALTERNATIVE_NAMEを実行します

29
kzh

最も簡単な答えは...

ls /etc/alternatives
4
Michael Hampton

Ubuntu 12.04(以前のバージョンもある可能性があるため、確認する必要があります)およびおそらくDebianも(確認する必要があります):

ls /var/lib/dpkg/alternatives

このディレクトリ内のエントリはリンクではないため、構成可能な代替名を取得するためだけにリストしてください。ちなみに、このディレクトリには圧縮ファイルがある可能性があるため、そこに記載されている名前をそのまま使用できるとは限りません。例/var/lib/dpkg/alternatives/psql.1.gz

0
Hibou57