alternatives

Установка, обновление, настройка Linux

Модераторы: Olej, adminn

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

alternatives

Непрочитанное сообщение Olej » 31 авг 2016, 19:57

alternatives - это мощная система управления версиями установленного ПО.
Она уже упоминалась (и даже вкратце описана) в теме редкие полезные команды.
Но это настолько интересно, что заслуживает отдельного изучения.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

alternatives

Непрочитанное сообщение Olej » 31 авг 2016, 20:11

Olej писал(а):Но это настолько интересно, что заслуживает отдельного изучения.

Код: Выделить всё

olej@nvidia ~ $ lsb_release -ircd
Distributor ID:	LinuxMint
Description:	Linux Mint 17.1 Rebecca
Release:	17.1
Codename:	rebecca
Начиная с того, что в Mint 17, например, вообще нет такой команды:

Код: Выделить всё

olej@nvidia ~ $ which alternatives

olej@nvidia ~ $ apt search alternatives*
p   galternatives                   - инструмент настройки системы альтернатив с
p   jquery-alternative-doc          - Альтернативная документация для jQuery    
p   kalternatives                   - графический интерфейс к системе альтернати
Ни в системе, ни в репозитории...
Зато замечательно существует каталог:

Код: Выделить всё

olej@nvidia ~ $ ls /etc/alternatives
aclocal            fakeroot.es.1.gz                             javadoc                 lzma                   spice-xpi-client
aclocal.1.gz       fakeroot.fr.1.gz                             javadoc.1.gz            lzma.1.gz              ssh-askpass
animate            fakeroot.sv.1.gz                             javah                   lzmore                 ssh-askpass.1.gz
animate.1.gz       fonts-japanese-gothic.ttf                    javah.1.gz              lzmore.1.gz            start-here-16.png
appletviewer       from                                         javap                   mogrify                start-here-22.png
appletviewer.1.gz  from.1.gz                                    javap.1.gz              mogrify.1.gz           start-here-24.png
aptitude           ftp                                          javaws                  montage                start-here-32.png
aptitude.8.gz      ftp.1.gz                                     javaws.1.gz             montage.1.gz           start-here.svg
aptitude.cs.8.gz   gconftool                                    jcmd                    mozilla-flashplugin    stream
aptitude.de.8.gz   gconftool.1.gz                               jcmd.1.gz               mozilla-javaplugin.so  stream.1.gz
aptitude.es.8.gz   ghostscript-current                          jconsole                mt                     tdbbackup
aptitude.fi.8.gz   glamor_conf                                  jconsole.1.gz           mt.1.gz                tdbbackup.8.gz
aptitude.fr.8.gz   global-assembly-cache-tool                   jdb                     native2ascii           telnet
aptitude.gl.8.gz   gnome-text-editor                            jdb.1.gz                native2ascii.1.gz      telnet.1.gz
aptitude.it.8.gz   gnome-text-editor.1.gz                       jexec                   nawk                   text.plymouth
aptitude.ja.8.gz   gnome-www-browser                            jexec-binfmt            nawk.1.gz              tnameserv
aptitude.pl.8.gz   go                                           jhat                    nc                     tnameserv.1.gz
automake           google-chrome                                jhat.1.gz               nc.1.gz                traceroute
automake.1.gz      gstreamer-codec-install                      jinfo                   netcat                 traceroute.1.gz
awk                guile                                        jinfo.1.gz              netcat.1.gz            traceroute6
awk.1.gz           guile.1.gz                                   jmap                    newt-palette           traceroute6.8.gz
builtins.7.gz      haskell-compiler                             jmap.1.gz               orbd                   unlzma
c++                haskell-compiler.1.gz                        jps                     orbd.1.gz              unlzma.1.gz
c++.1.gz           i386-linux-gnu_egl_conf                      jps.1.gz                pack200                unpack200
c89                i386-linux-gnu_gl_conf                       jrunscript              pack200.1.gz           unpack200.1.gz
c89.1.gz           i386-linux-gnu_grub_fb_blacklist             jrunscript.1.gz         pager                  unrar
c99                i386-linux-gnu_libvdpau_nvidia.so            jsadebugd               pager.1.gz             unrar.1.gz
c99.1.gz           i386-linux-gnu_libvdpau_nvidia.so.1          jsadebugd.1.gz          php                    updatedb
cc                 i386-linux-gnu_man_nvidiaxconfig.gz          jstack                  php.1.gz               vi
cc.1.gz            i386-linux-gnu_man_persistenced.gz           jstack.1.gz             pico                   vi.1.gz
cli                i386-linux-gnu_nvidia_app_profile            jstat                   pico.1.gz              view
cli.1.gz           i386-linux-gnu_nvidia_app_profile_keys       jstat.1.gz              policytool             view.1.gz
cli-gacutil.1.gz   i386-linux-gnu_nvidia_bug_report             jstatd                  policytool.1.gz        vi.fr.1.gz
compare            i386-linux-gnu_nvidia-cuda-mps-control       jstatd.1.gz             rcp                    vi.it.1.gz
compare.1.gz       i386-linux-gnu_nvidia-cuda-mps-control.1.gz  kdesu                   rcp.1.gz               vi.ja.1.gz
composite          i386-linux-gnu_nvidia-cuda-mps-server        keytool                 README                 vi.pl.1.gz
composite.1.gz     i386-linux-gnu_nvidia-debugdump              keytool.1.gz            rename                 vi.ru.1.gz
conjure            i386-linux-gnu_nvidia_drv                    libblas.so.3            rename.1.gz            vivaldi
conjure.1.gz       i386-linux-gnu_nvidia_modconf                libblas.so.3gf          rlogin                 vtrgb
convert            i386-linux-gnu_nvidia_persistenced           libgksu-gconf-defaults  rlogin.1.gz            w
convert.1.gz       i386-linux-gnu_nvidia_smi                    liblapack.so.3          rmic                   w.1.gz
cpp                i386-linux-gnu_nvidia-smi.1.gz               liblapack.so.3gf        rmic.1.gz              write
default.plymouth   i386-linux-gnu_nvidia_xconfig                locate                  rmid                   write.1.gz
display            i386-linux-gnu_xorg_extra_modules            locate.1.gz             rmid.1.gz              wsgen
display.1.gz       identify                                     lua-compiler            rmiregistry            wsgen.1.gz
editor             identify.1.gz                                lua-compiler-manual     rmiregistry.1.gz       wsimport
editor.1.gz        idlj                                         lua-interpreter         rmt                    wsimport.1.gz
ex                 idlj.1.gz                                    lua-manual              rmt.8.gz               wx-config
ex.1.gz            import                                       lzcat                   rsh                    x86_64-linux-gnu_gl_conf
ex.fr.1.gz         import.1.gz                                  lzcat.1.gz              rsh.1.gz               x-cursor-theme
ex.it.1.gz         infobrowser                                  lzcmp                   runhaskell             xjc
ex.ja.1.gz         infobrowser.1.gz                             lzcmp.1.gz              runhaskell.1.gz        xjc.1.gz
ex.pl.1.gz         itweb-settings                               lzdiff                  rview                  x-session-manager
ex.ru.1.gz         itweb-settings.1.gz                          lzdiff.1.gz             rzsh                   x-terminal-emulator
extcheck           jar                                          lzegrep                 sar                    x-terminal-emulator.1.gz
extcheck.1.gz      jar.1.gz                                     lzegrep.1.gz            sar.1.gz               x-window-manager
faked.1.gz         jarsigner                                    lzfgrep                 schemagen              x-window-manager.1.gz
faked.es.1.gz      jarsigner.1.gz                               lzfgrep.1.gz            schemagen.1.gz         x-www-browser
faked.fr.1.gz      java                                         lzgrep                  serialver              zsh
faked.sv.1.gz      java.1.gz                                    lzgrep.1.gz             serialver.1.gz         zsh-usrbin
fakeroot           javac                                        lzless                  servertool
fakeroot.1.gz      javac.1.gz                                   lzless.1.gz             servertool.1.gz
И в нём README файл:
Please read the update-alternatives(8) man page for information on this directory and its contents.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: alternatives

Непрочитанное сообщение Olej » 31 авг 2016, 20:16

Olej писал(а): И в нём README файл:
Please read the update-alternatives(8) man page for information on this directory and its contents.

Код: Выделить всё

olej@nvidia ~ $ update-alternatives --help
Использование: update-alternatives [<параметр> …] <команда>

Команды:
  --install <ссылка> <имя> <путь> <приоритет>
    [--slave <ссылка> <имя> <путь>] …
                          добавить группу альтернатив в систему
  --remove <имя> <путь>   удалить <путь> из группы альтернатив с <именем>
  --remove-all <имя>      удалить группу альтернатив с именем <имя> из системы
  --auto <имя>            переключить главную ссылку <имя> в автоматический
                          режим
  --display <имя>         показать информацию о группе <имя>
  --query <имя>           разбираемая машиной версия --display <имя>.
  --list <имя>            показать все назначения группы <имя>
  --config <имя>          показать альтернативы для группы <имя> и попросить
                          пользователя выбрать одно из значений
  --set <имя> <путь>      настроить <путь> как альтернативу <имени>
  --all                   вызвать --config для всех альтернатив

<ссылка> — символьная ссылка, указывающая на /etc/alternatives/<имя>
  (например, /usr/bin/pager).
<имя> — главное имя в этой группе ссылок
  (например, pager).
<путь> — расположение одного альтернативного файла назначения
  (например, /usr/bin/less).
<приоритет> — целое; чем больше значение, тем больше приоритет в
  автоматическом режиме.

Параметры:
  --altdir <каталог>     использовать альтернативный каталог
  --admindir <каталог>   изменить административный каталог
  --log <файл>           сменить файл протокола
  --force                разрешить замену файлов альтернативными
                         ссылками
  --skip-auto            не предлагать альтернативы, если они правильно
                         настроены в автоматическом режиме
                         (уместно только для --config)
  --verbose              подробности при работе, больше сообщений
  --quiet                минимальный вывод на экран при работе
  --help                 показать это сообщение
  --version              показать номер версии

Код: Выделить всё

olej@nvidia ~ $ update-alternatives --list awk
/usr/bin/gawk
/usr/bin/mawk

Код: Выделить всё

olej@nvidia ~ $ update-alternatives --display awk
awk - автоматический режим
  ссылка сейчас указывает на /usr/bin/gawk
/usr/bin/gawk — приоритет 10
  подчинённый awk.1.gz: /usr/share/man/man1/gawk.1.gz
  подчинённый nawk: /usr/bin/gawk
  подчинённый nawk.1.gz: /usr/share/man/man1/gawk.1.gz
/usr/bin/mawk — приоритет 5
  подчинённый awk.1.gz: /usr/share/man/man1/mawk.1.gz
  подчинённый nawk: /usr/bin/mawk
  подчинённый nawk.1.gz: /usr/share/man/man1/mawk.1.gz
Текущая «лучшая» версия: «/usr/bin/gawk».

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: alternatives

Непрочитанное сообщение Olej » 31 авг 2016, 20:27

Olej писал(а):

Код: Выделить всё

olej@nvidia ~ $ lsb_release -ircd
Distributor ID:	LinuxMint
Description:	Linux Mint 17.1 Rebecca
Release:	17.1
Codename:	rebecca
Начиная с того, что в Mint 17, например, вообще нет такой команды:

Код: Выделить всё

olej@nvidia ~ $ update-alternatives
update-alternatives: требуется --display, --query, --list, --get-selections, --config, --set, --set-selections, --install, --remove, --all, --remove-all или --auto
Для получения информации по использованию программы используйте «update-alternatives --help».
Но это по смыслу очень близко к тому, что в Fedora:

Код: Выделить всё

[olej@dell ~]$ lsb_release -ircd
Distributor ID:	Fedora
Description:	Fedora release 23 (Twenty Three)
Release:	23
Codename:	TwentyThree

Код: Выделить всё

[olej@dell ~]$ alternatives
alternatives, версия 1.7,  (C) 2001 Red Hat, Inc.
Может свободно распространяться в рамках GNU Public License.

формат: alternatives --install <ссылка> <имя> <путь> <приоритет>
                    [--initscript <служба>]
                    [--family <family>]
                    [--slave <ссылка> <имя> <путь>]*
       alternatives --remove <имя> <путь>
       alternatives --auto <имя>
       alternatives --config <имя>
       alternatives --display <имя>
       alternatives --set <имя> <путь>
       alternatives --list

общие параметры: --verbose --test --help --usage --version
                --altdir <каталог> --admindir <каталог>

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: alternatives

Непрочитанное сообщение Olej » 31 авг 2016, 20:40

Alternatives
Alternatives — механизм выбора предпочтительного ПО среди нескольких вариантов в некоторых дистрибутивах Linux.

Впервые появился в Debian, откуда попал в дистрибутивы производные от debian (такие, как ubuntu). Так же был перенесён в Red Hat Linux, откуда попал во многие RPM-based дистрибутивы.
...
Изначально для этого использовались создаваемые вручную символические ссылки (например, /usr/bin/sendmail делался симлинком на соответствующую программу из пакета программ почтового сервера (такого, как Exim, Postfix и т. д.).

В дальнейшем этот метод был расширен на многие применения и был стандартизирован.

update-alternatives написан Яном Джексоном (Ian Jackson) в 1995 и входит в состав пакета dpkg (менеджера пакетов Debian) и является его неотъемлемой частью.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: alternatives

Непрочитанное сообщение Olej » 12 май 2017, 16:08

Olej писал(а): Но это по смыслу очень близко к тому, что в Fedora:

Код: Выделить всё

olej@nvidia ~/2017_WORK $ update-alternatives --help
Использование: update-alternatives [<параметр> …] <команда>

Команды:
  --install <ссылка> <имя> <путь> <приоритет>
    [--slave <ссылка> <имя> <путь>] …
                          добавить группу альтернатив в систему
  --remove <имя> <путь>   удалить <путь> из группы альтернатив с <именем>
  --remove-all <имя>      удалить группу альтернатив с именем <имя> из системы
  --auto <имя>            переключить главную ссылку <имя> в автоматический
                          режим
  --display <имя>         показать информацию о группе <имя>
  --query <имя>           разбираемая машиной версия --display <имя>.
  --list <имя>            показать все назначения группы <имя>
  --config <имя>          показать альтернативы для группы <имя> и попросить
                          пользователя выбрать одно из значений
  --set <имя> <путь>      настроить <путь> как альтернативу <имени>
  --all                   вызвать --config для всех альтернатив

<ссылка> — символьная ссылка, указывающая на /etc/alternatives/<имя>
  (например, /usr/bin/pager).
<имя> — главное имя в этой группе ссылок
  (например, pager).
<путь> — расположение одного альтернативного файла назначения
  (например, /usr/bin/less).
<приоритет> — целое; чем больше значение, тем больше приоритет в
  автоматическом режиме.

Параметры:
  --altdir <каталог>     использовать альтернативный каталог
  --admindir <каталог>   изменить административный каталог
  --log <файл>           сменить файл протокола
  --force                разрешить замену файлов альтернативными
                         ссылками
  --skip-auto            не предлагать альтернативы, если они правильно
                         настроены в автоматическом режиме
                         (уместно только для --config)
  --verbose              подробности при работе, больше сообщений
  --quiet                минимальный вывод на экран при работе
  --help                 показать это сообщение
  --version              показать номер версии

Код: Выделить всё

olej@nvidia ~/2017_WORK $ lsb_release -a
No LSB modules are available.
Distributor ID:	LinuxMint
Description:	Linux Mint 18.1 Serena
Release:	18.1
Codename:	serena

Код: Выделить всё

olej@nvidia ~/2017_WORK $ update-alternatives --version
Debian update-alternatives, версия 1.18.4.

Это свободное программное обеспечение. См. условия распространения в
Универсальной общественной лицензии GNU версии 2 или более поздней.
НИКАКИЕ гарантии не предоставляются.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: alternatives

Непрочитанное сообщение Olej » 12 май 2017, 16:24

Но вернулся я к теме (столь важной!) alternatives, что подсказали GUI клиента для управления альтернативами:

Код: Выделить всё

olej@nvidia ~/2017_WORK $ apt list galternatives
Вывод списка… Готово
galternatives/xenial,xenial 0.13.5+nmu4 all

Код: Выделить всё

olej@nvidia ~/2017_WORK $ apt install galternatives
[sudo] пароль для olej: 
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
НОВЫЕ пакеты, которые будут установлены:
  galternatives
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 24,2 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 159 kB.
Пол:1 http://archive.ubuntu.com/ubuntu xenial/universe amd64 galternatives all 0.13.5+nmu4 [24,2 kB]
Получено 24,2 kБ за 0с (76,3 kБ/c)      
Выбор ранее не выбранного пакета galternatives.
(Чтение базы данных … на данный момент установлено 268506 файлов и каталогов.)
Подготовка к распаковке …/galternatives_0.13.5+nmu4_all.deb …
Распаковывается galternatives (0.13.5+nmu4) …
Обрабатываются триггеры для man-db (2.7.5-1) …
Обрабатываются триггеры для desktop-file-utils (0.22-1ubuntu5.1) …
Обрабатываются триггеры для gnome-menus (3.13.3-6ubuntu3.1) …
Обрабатываются триггеры для mime-support (3.59ubuntu1) …
Настраивается пакет galternatives (0.13.5+nmu4) …
У меня при запуске он выбрасывает окно запроса пароля администрирования ... причём с окно с такой силой модальности :lol: , что пока оно открыто - не даёт переключиться ни на другое окон, ни на другой рабочий стол... (это задумка такая, фича? :-o - потому как администрирование критической важности ... или это показатель сырости и новизны разработки?).
Изображение
Как видно по картинке, он всё позволяет менять влёт! ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: alternatives

Непрочитанное сообщение Olej » 12 май 2017, 16:47

Olej писал(а):alternatives - это мощная система управления версиями установленного ПО.
Она уже упоминалась (и даже вкратце описана) в теме редкие полезные команды.
Но это настолько интересно, что заслуживает отдельного изучения.
Это настолько мощная техника управления версиями установленного ПО (и достаточно новая и плохо описанная), что разбросанные по форуму ссылки нужно бы собрать воедино:
редкие полезные команды - общие сведения + конкретно переключение мажду JDK от Sun/Oracle и OpenJDK;
Инструменты Go (здесь и далее) - о том, как вручную управлять версиями установленного у себя ПО, в частности, как переключаться между реализациями языка Go от проекта Golang и от проекта GCC Go.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

alternatives

Непрочитанное сообщение Olej » 12 май 2017, 17:32

Olej писал(а):Но вернулся я к теме (столь важной!) alternatives, что подсказали GUI клиента для управления альтернативами:
То же самое, но в Fedora 25:

Код: Выделить всё

[olej@xenix etc]$ cat /etc/system-release 
Fedora release 25 (Twenty Five)

[olej@xenix etc]$ dnf list '*alternatives*'
Последняя проверка окончания срока действия метаданных: 6 days, 22:01:14 назад, Fri May  5 19:28:58 2017.
Доступные пакеты
galternatives.noarch                                                          0.13.4-21.fc25                                                          fedora

[olej@xenix etc]$ sudo dnf install galternatives
Последняя проверка окончания срока действия метаданных: 2:15:19 назад, Fri May 12 15:15:19 2017.
Зависимости разрешены.
============================================================================================================================================================
 Package                                   Архитектура                      Версия                                   Репозиторий                      Размер
============================================================================================================================================================
Установка:
 galternatives                             noarch                           0.13.4-21.fc25                           fedora                            43 k
 pygtk2-libglade                           x86_64                           2.24.0-15.fc25                           fedora                            30 k

Результат операции
============================================================================================================================================================
Установка  2 Пакеты

Объем загрузки: 73 k
Объем изменений: 147 k
Продолжить? [д/Н]: y
Загрузка пакетов:
(1/2): galternatives-0.13.4-21.fc25.noarch.rpm                                                                               72 kB/s |  43 kB     00:00    
(2/2): pygtk2-libglade-2.24.0-15.fc25.x86_64.rpm                                                                             51 kB/s |  30 kB     00:00    
------------------------------------------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                                                                 38 kB/s |  73 kB     00:01     
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Установка    : pygtk2-libglade-2.24.0-15.fc25.x86_64                                                                                                  1/2 
  Установка    : galternatives-0.13.4-21.fc25.noarch                                                                                                    2/2 
  Проверка     : galternatives-0.13.4-21.fc25.noarch                                                                                                    1/2 
  Проверка     : pygtk2-libglade-2.24.0-15.fc25.x86_64                                                                                                  2/2 

Установлено:
  galternatives.noarch 0.13.4-21.fc25                                         pygtk2-libglade.x86_64 2.24.0-15.fc25                                        

Выполнено!
Вложения
a1.png

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: alternatives

Непрочитанное сообщение Olej » 25 дек 2018, 17:34

Olej писал(а):Но вернулся я к теме (столь важной!) alternatives, что подсказали GUI клиента для управления альтернативами:
Снова:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/dlib/dist$ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux buster/sid
Release:	testing
Codename:	buster

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/dlib/dist$ apt list galternatives
Вывод списка… Готово
galternatives/testing 1.0.2 all

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/dlib/dist$ aptitude search galternatives
p   galternatives                                                          - инструмент настройки системы альтернатив с графическим интерфейсом              

Ответить

Вернуться в «Администрирование Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей