.RI [ options ]
.B --display
.I name
+.B update-alternatives
+.RI [ options ]
+.B --config
+.I name
.SH DESCRIPTION
.B update-alternatives
creates, removes, maintains and displays information about the symbolic
When a link group is in automatic mode,
the alternatives pointed to by members of the group
will be those which have the highest priority.
+.PP
+When using the
+.I --config
+option, update-alternatives will list all of the choices for the given
+alternative. You will then be prompted for which of the choices to use
+for the alternative. Once you make a change, the alternative will no
+longer be in
+.I auto
+mode. You will need to use the
+.I --auto
+option in order to return to the automatic state.
.SH TERMINOLOGY
Since the activities of
.B update-alternatives
update-alternatives --remove <name> <path>
update-alternatives --auto <name>
update-alternatives --display <name>
+ update-alternatives --config <name>
<name> is the name in /etc/alternatives.
<path> is the name referred to.
<link> is the link pointing to /etc/alternatives/<name>.
@ARGV >= 2 || &badusage("--remove needs <name> <path>");
($name,$apath,@ARGV) = @ARGV;
$mode= 'remove';
- } elsif (m/^--(display|auto)$/) {
+ } elsif (m/^--(display|auto|config)$/) {
&checkmanymodes;
@ARGV || &badusage("--$1 needs <name>");
$mode= $1;
exit 0;
}
+if ($mode eq 'config') {
+ if (!$dataread) {
+ &pr("No alternatives for $name.");
+ } else {
+ &config_alternatives($name);
+ exit 0;
+ }
+}
+
$best= '';
for ($i=0; $i<=$#versions; $i++) {
if ($best eq '' || $priorities[$i] > $bestpri) {
sub rename_mv {
return (rename($_[0], $_[1]) || (system(("mv", $_[0], $_[1])) == 0));
}
+
+sub config_message {
+ printf(STDOUT "\nYou have %s package(s) which", $#versions+1);
+ printf(STDOUT " provide the $name command:\n");
+ printf(STDOUT " Selection Command-Name Command\n");
+ printf(STDOUT "-----------------------------------------------\n");
+ for ($i=0; $i<=$#versions; $i++) {
+ if (readlink("$altdir/$name") eq $versions[$i]) {
+ printf(STDOUT "* %s %s %s\n", $i+1,
+ $name, $versions[$i]);
+ } else {
+ printf(STDOUT " %s %s %s\n", $i+1,
+ $name, $versions[$i]);
+ }
+ }
+ printf(STDOUT "\nWhich selection to supply `$name'?\n");
+ printf(STDOUT "Or press ENTER to keep the current (*) selection.\n");
+}
+
+sub config_alternatives {
+ do {
+ &config_message;
+ $preferred=<STDIN>;
+ chop($preferred);
+ } until $preferred eq '' || ($preferred>=1 && $preferred<=$#versions+1);
+ if ($preferred ne '') {
+ system("ln -sf $versions[$preferred-1] $altdir/$name");
+ if ($?) {
+ &quit("unable to change link for alternative");
+ }
+ }
+}
+
exit(0);