51

The alternatives command (package chkconfig) on RHEL/Fedora manages symlinks which link a generic name to one of the alternative implementations. For example, mta group of symlinks can be provided by Sendmail and Postfix (to implement i.e. sendmail command):

alternatives --display mta 

While I can --display a group of symlinks, I need to guess its name first (i.e. mta).

Can I simply list all possible configurable symlink groups (like mta) to pick from?

The reason is that I forget some group names occasionally.

4 Answers 4

56

On Debian (but not Fedora or RHEL), to see a list of all "master alternative names":

update-alternatives --get-selections 

--get-selections list master alternative names and their status.

And for each of those listed, you can run --list $ALTERNATIVE_NAME, e.g.

update-alternatives --list editor 

--list name Display all targets of the link group.

If you would like to see a list of all alternatives in their respective groups, you could run the following in fish shell:

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

The (ba|z)?sh syntax should be something similar.

To change the alternatives, run sudo update-alternatives --config $ALTERNATIVE_NAME

3
  • 1
    On my Fedora 12 update-alternatives is a symlink to alternatives: /usr/sbin/update-alternatives -> alternatives. So, option --get-selections does not show anything (exit with error showing usage). Commented Jul 3, 2016 at 13:43
  • 1
    I didn't read the question properly. Sorry. This is for Debian. I was trying to find the same thing as you and I can't up with this answer. I wonder if I should delete my answer? Commented Jul 3, 2016 at 13:45
  • Up to you. If you think it is correct under some circumstances and might be useful for anyone else, it is worth to just leave it. Commented Jul 3, 2016 at 14:06
20

The exact answer is (RHEL):

ls /var/lib/alternatives 

Directory /etc/alternatives maintains flat long list of all symlinks mixing masters and slaves together. Slave symlinks cannot be used with alternatives --display [symlink] command.

At the same time directory /var/lib/alternatives contains status information (including master-slave relationship) for each group in shortened list of file names all of which can be directly used with --display option. For example, /var/lib/alternatives/java:

alternatives --display java 
2
  • 6
    On Ubuntu 12.04, there is no /var/lib/alternatives, it seems to be /var/lib/dpkg/alternatives. Commented Jul 12, 2014 at 8:59
  • 1
    Great answer, Thanks! One addition: on Debian and Armbian it's /etc/alternatives instead of /var/lib/alternatives Commented Aug 20, 2017 at 2:00
7

The simplest answer would be...

ls /etc/alternatives 
2
  • 1
    It's always more obvious when you already know the answer :) Commented Mar 5, 2013 at 16:06
  • It was also my first guess. But it didn't satisfy me. The list is too long containing master and slave links altogether. Commented Mar 7, 2013 at 3:18
0

On Ubuntu 12.04 (may be some prior versions too, to be checked) and probably Debian too (to be checked):

ls /var/lib/dpkg/alternatives 

List it just to get configurable alternative names, as entries in this directories are not links. By the way, there may be compressed file in this directory, so the names listed there, can't always be used as‑is. Ex. I have a /var/lib/dpkg/alternatives/psql.1.gz

1
  • Not really helpful, as the question clearly states that it applies to RedHat Enterprise Linux. The RHEL way of configuring is properly described in the other answers. Commented Nov 17, 2014 at 16:18

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.