48

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

52

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).
    – uvsmtid
    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?
    – kzh
    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.
    – uvsmtid
    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
  • 5
    On Ubuntu 12.04, there is no /var/lib/alternatives, it seems to be /var/lib/dpkg/alternatives.
    – Hibou57
    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 :)
    – gparent
    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.
    – uvsmtid
    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.
    – Kosi2801
    Commented Nov 17, 2014 at 16:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .