update-alternatives - zarządzanie dowiązaniami
symbolicznymi określającymi domyślne polecenia
update-alternatives [opcja...] polecenie
update-alternatives tworzy, usuwa, wyświetla
informacje o dowiązaniach symbolicznych składających
się na system alternatyw Debiana oraz nimi zarządza.
Kilka programów mających tę samą lub
podobną funkcjonalnoś może zosta zainstalowanych w
systemie w tym samym czasie. Na przykład w wielu systemach jest
zainstalowanych jednocześnie kilka edytorów tekstu. Stanowi to
ułatwienie dla użytkowników takiego systemu, z
których każdy może uruchomi inny edytor, jeśli
ma na to ochotę. Z drugiej strony jest to jednak utrudnienie dla
programów chcących podją właściwą
decyzję, który edytor uruchomi, jeżeli
użytkownik nie określił swoich preferencji co do
edytora.
Celem systemu alternatyw Debiana jest rozwiązanie tego
problemu. Ogólna nazwa w systemie plików jest
współdzielona przez wszystkie pliki dostarczające
zmieniającą się funkcjonalnoś. System alternatyw
oraz administrator systemu określają, do którego
obecnego pliku prowadzi ta ogólna nazwa. Na przykład,
jeżeli zainstalowano zarówno edytor ed(1) jak i
nvi(1), to system alternatyw spowoduje, że nazwa ogólna
/usr/bin/editor będzie się odnosi do
/usr/bin/nvi. Administrator systemu może zmieni to ustawienie
na /usr/bin/ed, a system alternatyw tego nie zmieni, chyba że
administrator każe mu tak zrobi.
Nazwa ogólna nie jest bezpośrednim
dowiązaniem symbolicznym do wybranej alternatywy, ale jest
dowiązaniem do pliku w katalogu alternatyw,
które z kolei jest dowiązaniem do właściwego
pliku. Jest tak zrobione dlatego, żeby zmiany wprowadzane przez
administratora systemu były ograniczone do katalogu /etc:
standard FHS wymienia powody, aby tak zrobi.
When each package providing a file with a particular functionality
is installed, changed or removed, update-alternatives is called to
update information about that file in the alternatives system.
update-alternatives is usually called from the postinst
(configure) or prerm (remove and deconfigure) scripts in Debian
packages.
Często użyteczne jest, aby pewna liczba alternatyw
była zsynchronizowana, tak żeby była zmieniana jako
grupa. Na przykład jeżeli jest zainstalowane kilka wersji
edytora vi(1), to strona podręcznika
/usr/share/man/man1/vi.1 powinna odpowiada wersji programu
zainstalowanego jako /usr/bin/vi. update-alternatives
obsługuje to przy pomocy dowiązań
głównych i podrzędnych - zmiana
dowiązania głównego powoduje zmianę skojarzonych
dowiązań podrzędnych. Dowiązanie
główne i skojarzone z nim dowiązania podrzędne
tworzą grupę dowiązań.
Każda grupa dowiązań jest zawsze w jednym z
dwóch trybów: automatycznym lub ręcznym. W trybie
automatycznym podczas instalacji lub usuwania pakietu system alternatyw
automatycznie zdecyduje, czy i jak aktualizowa dowiązania. W trybie
ręcznym system alternatyw nie będzie zmieniał
dowiązań i zostawi wszystkie decyzje administratorowi
systemu.
Grupa dowiązań jest trybie automatycznym, kiedy jest
po raz pierwszy wprowadzana do systemu. Jeżeli administrator systemu
wprowadzi zmiany do automatycznych ustawień, będą one
wzięte pod uwagę podczas następnego uruchomienia
update-alternatives na takiej zmienionej grupie
dowiązań, a grupa ta automatycznie przejdzie w tryb
ręczny.
Z każdą alternatywą skojarzony jest
priorytet. Jeżeli grupa dowiązań jest w trybie
automatycznym, to wybraną alternatywą będzie ta,
która ma najwyższy priorytet.
When using the --config option, update-alternatives
will list all of the choices for the link group of which given name
is the master alternative name. The current choice is marked with a
‘*’. You will then be prompted for your choice regarding this
link group. Depending on the choice made, the link group might no longer be
in auto mode. You will need to use the --auto option in order
to return to the automatic mode (or you can rerun --config and select
the entry marked as automatic).
Aby skonfigurowa nieinteraktywnie, można uży opcji
--set (patrz niżej).
Różne pakiety dostarczające tych samych
plików powinny współpracowa ze sobą w tym
zakresie. Oznacza to, że używanie programu
update-alternatives jest obowiązkowe dla wszystkich
takich pakietów - nie jest możliwe nadpisanie pewnych
plików w pakiecie, który nie używa mechanizmu
update-alternatives.
Ponieważ operacje programu update-alternatives
są doś złożone, poniżej podane są
terminy, które pomogą je zrozumie.
- nazwa ogólna (lub
dowiązanie alternatywy)
- Nazwa, taka jak /usr/bin/editor, która odnosi się
przez system alternatyw do jednego z kilku plików o podobnej
funkcjonalności.
- nazwa
alternatywy
- Nazwa dowiązania symbolicznego w katalogu alternatyw.
- alternatywa (lub
ścieżka alternatywy)
- Nazwa określonego pliku w systemie plików, który w
systemie alternatyw może by dostępny przez nazwę
ogólną.
- katalog
alternatyw
- Katalog zawierający dowiązania symboliczne, domyślnie
/etc/alternatives.
- katalog
administracyjny
- Katalog zawierający informacje o stanie update-alternatives,
domyślnie /var/lib/dpkg/alternatives.
- grupa
dowiązań
- Zbiór powiązanych dowiązań symbolicznych,
zarządzany jako grupa.
- dowiązanie
główne
- Dowiązanie alternatywy w grupie dowiązań,
które określa sposób konfigurowania innych
dowiązań z tej grupy.
- dowiązanie
podrzędne
- Dowiązanie alternatywy w grupie dowiązań,
które jest kontrolowane przez ustawienie głównego
dowiązania.
- tryb automatyczny
- Kiedy grupa dowiązań jest w trybie automatycznym, system
alternatyw zapewni, że dowiązania z tej grupy
wskazują na alternatywę o najwyższym
priorytecie.
- tryb
ręczny
- Kiedy grupa dowiązań jest w trybie ręcznym, system
alternatyw nic nie zmieni w ustawieniach wprowadzonych przez
administratora systemu.
- --install
dowiązanie nazwa ścieżka priorytet
[--slave dowiązanie nazwa
ścieżka]...
- Dodaje grupę alternatyw do systemu. dowiązanie jest
ogólną nazwą głównego
dowiązania, nazwa jest nazwą dowiązania
symbolicznego w katalogu alternatyw, a ścieżka jest
wprowadzaną alternatywą dla głównego
dowiązania. Argumentami opcji --slave są nazwa
ogólna, nazwa dowiązania symbolicznego w katalogu alternatyw
i ścieżka alternatywy dla dowiązania
podrzędnego. Można poda zero lub więcej opcji
--slave, po każdej muszą następowa jej trzy
argumenty. Należy zauważy, że główna
alternatywa musi istnie, inaczej wywołanie się nie
powiedzie. Jednak jeśli nie będzie istnie podrzędna
alternatywa, odpowiednie dowiązanie podrzędne po prostu nie
zostanie zainstalowane (ale nadal będzie wyświetlane
ostrzeżenie). Jeśli w miejscu gdzie powinno by zainstalowane
dowiązanie alternatywy istnieje rzeczywisty plik, jest on
zachowywany, chyba że użyta jest opcja --force.
- Jeżeli określona nazwa alternatywy już istnieje w
systemie alternatyw, to podana informacja będzie dodana jako nowy
zbiór alternatyw dla tej grupy. W przeciwnym wypadku zostanie
utworzona nowa grupa, ustawiona w tryb automatyczny. Jeżeli grupa
jest w trybie automatycznym, a priorytet nowo dodawanych alternatyw jest
większy od priorytetu każdej z innych zainstalowanych
alternatyw w tej grupie, to dowiązania symboliczne
będą zaktualizowane tak, żeby prowadziły do
nowo dodanych alternatyw.
- --set nazwa
ścieżka
- Ustawia program ścieżka jako alternatywę dla
nazwy. Jest to nieinteraktywny, a więc możliwy do
użycia w skryptach, odpowiednik opcji --config.
- --remove nazwa
ścieżka
- Usuwa alternatywę i wszystkie dowiązania podrzędne z
nią skojarzone. nazwa jest nazwą w katalogu
alternatyw, ścieżka jest absolutną
nazwą pliku, do której nazwa mogłaby by
dowiązaniem. Jeżeli nazwa rzeczywiście jest
dowiązaniem do ścieżki, to nazwa
zostanie zaktualizowana, tak żeby wskazywała na inną
odpowiednią alternatywę (zaś grupa jest ustawiana
ponownie w tryb automatyczny), albo zostanie usunięta jeżeli
nie pozostanie ani jedna alternatywa. Skojarzone dowiązania
podrzędne zostaną odpowiednio zaktualizowane lub
usunięte. Jeżeli dowiązanie nie prowadzi obecnie do
ścieżki, to żadne dowiązania nie
będą aktualizowane; zostanie tylko usunięta
informacja o alternatywie.
- --remove-all
nazwa
- Usuwa wszystkie dowiązania alternatyw i wszystkie skojarzone z nimi
dowiązania podrzędne. nazwa jest nazwą w
katalogu alternatyw.
- --all
- Wywołuje --config dla wszystkich alternatyw. Można to
użytecznie połączy z --skip-auto aby przejrze
i skonfigurowa wszystkie alternatywy, które nie są
skonfigurowane w tryb automatyczny. Wyświetlane są
również nieaktualne alternatywy. Dlatego prostym sposobem
naprawienia uszkodzonych alternatyw jest wywołanie yes ”
| update-alternatives --force --all.
- --auto
nazwa
- Przełącza grupę dowiązań dla
alternatywy w tryb automatyczny. Podczas tego procesu,
główne dowiązanie wraz z jego dowiązaniami
podrzędnymi będą zaktualizowane tak, aby wskazywa na
alternatywę o najwyższym priorytecie.
- --display
nazwa
- Display information about the link group. Information displayed includes
the group's mode (auto or manual), the master and slave links, which
alternative the master link currently points to, what other alternatives
are available (and their corresponding slave alternatives), and the
highest priority alternative currently installed.
- --get-selections
- List all master alternative names (those controlling a link group) and
their status (since version 1.15.0). Each line contains up to 3 fields
(separated by one or more spaces). The first field is the alternative
name, the second one is the status (either auto or manual),
and the last one contains the current choice in the alternative (beware:
it's a filename and thus might contain spaces).
- --set-selections
- Read configuration of alternatives on standard input in the format
generated by --get-selections and reconfigure them accordingly
(since version 1.15.0).
- --query
nazwa
- Display information about the link group like --display does, but
in a machine parseable way (since version 1.15.0, see section QUERY
FORMAT below).
- --list
nazwa
- Wyświetla wszystkie cele w grupie dowiązań.
- --config
nazwa
- Wyświetla dostępne alternatywy w grupie
dowiązań i pozwala użytkownikowi interaktywnie wybra,
której należy uży. Grupa dowiązań
zostanie odpowiednio zaktualizowana.
- --help
- Wyświetla informację o użytkowaniu i kończy
działanie.
- --version
- Wyświetla informację o wersji i pomyślnie
kończy działanie.
- --altdir
katalog
- Określa katalog alternatyw, jeżeli ma by inny niż
domyślny.
- --admindir
katalog
- Określa katalog administracyjny, jeżeli ma by inny
niż domyślny.
- --log
plik
- Specifies the log file (since version 1.15.0), when this is to be
different from the default (/var/log/alternatives.log).
- --force
- Allow replacing or dropping any real file that is installed where an
alternative link has to be installed or removed.
- --skip-auto
- Pomija pytania o konfigurację alternatyw, które są
właściwie skonfigurowane w trybie automatycznym. Ta opcja ma
znaczenie tylko przy --config lub --all.
- --quiet
- Do not generate any comments unless errors occur.
- --verbose
- Generate more comments about what is being done.
- --debug
- Generate even more comments, helpful for debugging, about what is being
done (since version 1.19.3).
- 0
- Akcja zakończyła się powodzeniem.
- 2
- Wystąpiły problemy podczas przetwarzania linii
poleceń lub wykonywania akcji.
ŚRODOWISKO
- DPKG_ADMINDIR
- Jeśli ustawione oraz nie podano opcji --admindir, to
będzie użyte jako bazowy katalog administracyjny.
- /etc/alternatives/
- Domyślny katalog alternatyw. Można go zmieni opcją
-altdir.
- /var/lib/dpkg/alternatives/
- Domyślny katalog administracyjny. Można go zmieni
opcją -admindir.
The --query format is using an RFC822-like flat format.
It's made of n + 1 blocks where n is the number of
alternatives available in the queried link group. The first block contains
the following fields:
- Name:
nazwa
- Nazwa alternatywy w katalogu alternatyw.
- Link:
dowiązanie
- Nazwa ogólna alternatywy.
- Slaves:
lista-alternatyw-podrzędnych
- Gdy to pole jest obecne, następne wiersze zawierają
wszystkie podrzędne dowiązania związane z
głównym dowiązaniem alternatywy. W każdym
wierszu podana jest jedna podrzędna alternatywa. Każdy
wiersz zawiera jedną spację, ogólną
nazwę alternatywy podrzędnej, kolejną spację i
w końcu ścieżkę do dowiązania
podrzędnego.
- Status:
status
- Status alternatywy (auto lub manual).
- Best: najlepszy
wybór
- Ścieżka najlepszej alternatywy dla tej grupy
dowiązań. Nie jest wyświetlana, jeśli nie ma
dostępnych żadnych alternatyw.
- Value: aktualnie
wybrana alternatywa
- Ścieżka aktualnie wybranej alternatywy. Może
również przyjmowa specjalną wartoś none
- jest ona używana jeśli dowiązanie nie
istnieje.
Inne bloki opisują dostępne alternatywy w grupie
dowiązań, do której odnosi się zapytanie:
- Alternative:
ścieżka-alternatywy
- Ścieżka do alternatywy opisywanej w tym bloku.
- Priority:
wartoś-priorytetu
- Wartoś priorytetu alternatywy.
- Slaves:
lista-alternatyw-podrzędnych
- When this field is present, the next lines hold all slave
alternatives associated to the master link of the alternative. There is
one slave per line. Each line contains one space, the generic name of the
slave alternative, another space, and the path to the slave
alternative.
$ update-alternatives --query editor
Name: editor
Link: /usr/bin/editor
Slaves:
editor.1.gz /usr/share/man/man1/editor.1.gz
editor.fr.1.gz /usr/share/man/fr/man1/editor.1.gz
editor.it.1.gz /usr/share/man/it/man1/editor.1.gz
editor.pl.1.gz /usr/share/man/pl/man1/editor.1.gz
editor.ru.1.gz /usr/share/man/ru/man1/editor.1.gz
Status: auto
Best: /usr/bin/vim.basic
Value: /usr/bin/vim.basic
Alternative: /bin/ed
Priority: -100
Slaves:
editor.1.gz /usr/share/man/man1/ed.1.gz
Alternative: /usr/bin/vim.basic
Priority: 50
Slaves:
editor.1.gz /usr/share/man/man1/vim.1.gz
editor.fr.1.gz /usr/share/man/fr/man1/vim.1.gz
editor.it.1.gz /usr/share/man/it/man1/vim.1.gz
editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz
editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz
Po podaniu --verbose, update-alternatives wypisuje
nieustannie informacje o podejmowanych działaniach na swoim
standardowym wyjściu. Jeżeli wystąpi
błąd, update-alternatives wyświetla komunikaty
błędów na standardowym wyjściu
błędów i kończy działanie z kodem
wyjścia 2. Wypisywana diagnostyka powinna wszystko wyjaśnia,
jeżeli tak nie jest, proszę zgłosi to jako
błąd.
Istnieje klika pakietów, które dostarczają
edytora tekstu kompatybilnego z edytorem vi, na przykład
nvi i vim. To, który pakiet będzie
używany, kontrolowane jest przez grupę dowiązań
vi, zawierającą dowiązania do samego programu i
odpowiadających mu stron podręcznika.
Aby wyświetli listę dostępnych
pakietów, które dostarczają vi oraz jego
bieżące ustawienie, należy uży akcji
--display:
update-alternatives --display vi
Aby wybra określoną implementację edytora
vi, należy uży tego polecenia jako użytkownik
root i wybra liczbę z listy:
update-alternatives --config vi
Aby przywróci automatyczne wybieranie implementacji
programu vi, należy jako użytkownik root wykona:
update-alternatives --auto vi
ln(1), FHS - standard hierarchii systemu plików.
Piotr Roszatycki <dexter@debian.org>, 1999
Bartosz Feński <fenio@debian.org>, 2004-2005
Robert Luberda <robert@debian.org>, 2006-2008
Wiktor Wandachowicz <siryes@gmail.com>, 2008
Michał Kułach <michal.kulach@gmail.com>, 2012