Страница 2 из 2
Re: alternatives
Добавлено: 20 июл 2020, 20:37
Olej
Альтернативы и их переключение оказались незаменимой вещью при выборе соответствий реализаций NetCat (традиционной и OpenBSD) и их согласовании на 2-х удалённых хостах сети при передаче между ними.
См.
nc - сетевой cat
Re: alternatives
Добавлено: 19 апр 2021, 21:17
Olej
Olej писал(а): ↑20 июл 2020, 20:37
Альтернативы и их переключение оказались незаменимой вещью при выборе соответствий реализаций NetCat (традиционной и OpenBSD)
Снова потребовалось перестроить OpenBSD NetCat на традиционный...
Но на этот раз решил обойтись командами, без GUI!
Код: Выделить всё
olej@nvme:~/2021/rus.linux.net.hist/timeweb$ 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).
<приоритет> — целое; чем больше значение, тем больше приоритет в
автоматическом режиме.
Options:
--altdir <directory> change the alternatives directory.
--admindir <directory> change the administrative directory.
--log <file> change the log file.
--force allow replacing files with alternative links.
--skip-auto skip prompt for alternatives correctly configured
in automatic mode (relevant for --config only)
--quiet quiet operation, minimal output.
--verbose verbose operation, more output.
--debug debug output, way more output.
--help show this help message.
--version show the version.
До:
Код: Выделить всё
olej@nvme:~/2021/rus.linux.net.hist/timeweb$ nc -h
OpenBSD netcat (Debian patchlevel 1.206-1ubuntu1)
usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
[-m minttl] [-O length] [-P proxy_username] [-p source_port]
[-q seconds] [-s source] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout]
[-X proxy_protocol] [-x proxy_address[:port]] [destination] [port]
...
Код: Выделить всё
olej@nvme:~/2021/rus.linux.net.hist/timeweb$ update-alternatives --display nc
nc - автоматический режим
link best version is /bin/nc.openbsd
ссылка сейчас указывает на /bin/nc.openbsd
link nc is /bin/nc
slave nc.1.gz is /usr/share/man/man1/nc.1.gz
slave netcat is /bin/netcat
slave netcat.1.gz is /usr/share/man/man1/netcat.1.gz
/bin/nc.openbsd — приоритет 50
подчинённый nc.1.gz: /usr/share/man/man1/nc_openbsd.1.gz
подчинённый netcat: /bin/nc.openbsd
подчинённый netcat.1.gz: /usr/share/man/man1/nc_openbsd.1.gz
/usr/bin/ncat — приоритет 40
подчинённый nc.1.gz: /usr/share/man/man1/ncat.1.gz
подчинённый netcat: /usr/bin/ncat
подчинённый netcat.1.gz: /usr/share/man/man1/ncat.1.gz
Меняю:
Код: Выделить всё
olej@nvme:~/2021/rus.linux.net.hist/timeweb$ sudo update-alternatives --config nc
Есть 2 варианта для альтернативы nc (предоставляет /bin/nc).
Выбор Путь Приор Состояние
------------------------------------------------------------
* 0 /bin/nc.openbsd 50 автоматический режим
1 /bin/nc.openbsd 50 ручной режим
2 /usr/bin/ncat 40 ручной режим
Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: используется /usr/bin/ncat для предоставления /bin/nc (nc) в ручном режиме
После:
Код: Выделить всё
olej@nvme:~/2021/rus.linux.net.hist/timeweb$ nc -h
Ncat 7.80 ( https://nmap.org/ncat )
Usage: ncat [options] [hostname] [port]
...
Re: alternatives
Добавлено: 05 апр 2022, 16:06
Olej
Вот ещё интересный пример использования - различные эмуляторы терминалов в системе:
- Снимок экрана от 2021-07-08 01-29-21.png (101.23 КБ) 1436 просмотров
Код: Выделить всё
olej@ACER:~/2021_WORK/rus.linux.net.hist/timeweb$ update-alternatives --display x-terminal-emulator
x-terminal-emulator - автоматический режим
link best version is /usr/bin/gnome-terminal.wrapper
ссылка сейчас указывает на /usr/bin/gnome-terminal.wrapper
link x-terminal-emulator is /usr/bin/x-terminal-emulator
slave x-terminal-emulator.1.gz is /usr/share/man/man1/x-terminal-emulator.1.gz
/usr/bin/gnome-terminal.wrapper — приоритет 40
подчинённый x-terminal-emulator.1.gz: /usr/share/man/man1/gnome-terminal.1.gz
/usr/bin/lxterminal — приоритет 20
подчинённый x-terminal-emulator.1.gz: /usr/share/man/man1/lxterminal.1.gz
/usr/bin/mate-terminal.wrapper — приоритет 30
подчинённый x-terminal-emulator.1.gz: /usr/share/man/man1/mate-terminal.1.gz
/usr/bin/mlterm — приоритет 20
подчинённый x-terminal-emulator.1.gz: /usr/share/man/man1/mlterm.1.gz
/usr/bin/xfce4-terminal.wrapper — приоритет 40
подчинённый x-terminal-emulator.1.gz: /usr/share/man/man1/xfce4-terminal.1.gz
Re: alternatives
Добавлено: 27 окт 2022, 23:39
Olej
Olej писал(а): ↑05 апр 2022, 16:06
Вот ещё интересный пример использования
Детальный разбор альтернатив в переопределении версий компилятора GCC - а это крайне важно бывает - расписан здесь:
GCC версии.
alternatives
Добавлено: 31 окт 2023, 21:04
Olej
Olej писал(а): ↑31 авг 2016, 20:11
Начиная с того, что в Mint 17, например, вообще нет такой команды:
В RPM-дистрибутивах альтернативы управляются другой CLI-командой... Вот, например, для GoLang:
Код: Выделить всё
[olej@xenix etc]$ cat /etc/fedora-release
Fedora release 38 (Thirty Eight)
Код: Выделить всё
[olej@xenix etc]$ cat /etc/system-release
Fedora release 38 (Thirty Eight)
Код: Выделить всё
[olej@xenix ~]$ alternatives --display go
go - статус «авто».
ссылка указывает на /usr/lib/golang/bin/go
/usr/lib/golang/bin/go - приоритет 90
follower gofmt: /usr/lib/golang/bin/gofmt
Оптимальная версия — /usr/lib/golang/bin/go.
Код: Выделить всё
[olej@xenix ~]$ sudo alternatives --config go
[sudo] пароль для olej:
Обнаружена 1 программа, предоставляющая «go».
Выбор Команда
-----------------------------------------------
*+ 1 /usr/lib/golang/bin/go
Enter - сохранить текущий выбор[+], или укажите номер:
Но логика точно та же...
alternatives
Добавлено: 18 дек 2023, 00:17
Olej
Olej писал(а): ↑12 май 2017, 16:24
вернулся я к теме (столь важной!) alternatives
Очень часто приходится переключать версии, менять альтернативы для сетевого NetCat (см.
nc - сетевой cat). Но делать это зачастую приходится удалённо в терминальной сессии SSH. А поэтому переключать нужно CLI командой.
Вот свежая установка:
Код: Выделить всё
olej@nvme:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Linuxmint
Description: LMDE 6 (faye)
Release: 6
Codename: faye
Выполняю команду и получаю ошибку:
Код: Выделить всё
olej@nvme:~$ nc -l -p 40000 -c 'xargs -n1 echo'
nc: invalid option -- 'c'
usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
[-m minttl] [-O length] [-P proxy_username] [-p source_port]
[-q seconds] [-s sourceaddr] [-T keyword] [-V rtable] [-W recvlimit]
[-w timeout] [-X proxy_protocol] [-x proxy_address[:port]]
[destination] [port]
Это не та реализация netcat
Код: Выделить всё
olej@nvme:~$ aptitude search netcat
v netcat -
v netcat:i386 -
i netcat-openbsd - TCP/IP swiss army knife
p netcat-openbsd:i386 - TCP/IP swiss army knife
p netcat-traditional - инструмент для TCP/IP4 на все случаи жизни
p netcat-traditional:i386 - инструмент для TCP/IP4 на все случаи жизни
alternatives
Добавлено: 18 дек 2023, 00:21
Olej
Olej писал(а): ↑18 дек 2023, 00:17
Это не та реализация netcat
Доустанавливаю:
Код: Выделить всё
olej@nvme:~$ sudo apt install netcat-traditional
[sudo] пароль для olej:
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
linux-headers-6.1.0-12-amd64 linux-headers-6.1.0-12-common linux-image-6.1.0-12-amd64
Для их удаления используйте «sudo apt autoremove».
Следующие НОВЫЕ пакеты будут установлены:
netcat-traditional
Обновлено 0 пакетов, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 67,9 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 146 kB.
Пол:1 http://debian.volia.net/debian bookworm/main amd64 netcat-traditional amd64 1.10-47 [67,9 kB]
Получено 67,9 kB за 0с (207 kB/s)
Выбор ранее не выбранного пакета netcat-traditional.
(Чтение базы данных … на данный момент установлено 413348 файлов и каталогов.)
Подготовка к распаковке …/netcat-traditional_1.10-47_amd64.deb …
Распаковывается netcat-traditional (1.10-47) …
Настраивается пакет netcat-traditional (1.10-47) …
Обрабатываются триггеры для man-db (2.11.2-2) …
Теперь реализации есть обе:
Код: Выделить всё
olej@nvme:~$ aptitude search netcat | grep ^i
i netcat-openbsd - TCP/IP swiss army knife
i netcat-traditional - инструмент для TCP/IP4 на все случаи жизни
Но альтернатива пока установлена по прежнему на OpenBSD:
Код: Выделить всё
olej@nvme:~$ update-alternatives --display nc
nc - автоматический режим
лучшая версия ссылки — /bin/nc.openbsd
ссылка сейчас указывает на /bin/nc.openbsd
ссылка nc — /bin/nc
подчинённая nc.1.gz — /usr/share/man/man1/nc.1.gz
подчинённая netcat — /bin/netcat
подчинённая netcat.1.gz — /usr/share/man/man1/netcat.1.gz
/bin/nc.openbsd — приоритет 50
подчинённый nc.1.gz: /usr/share/man/man1/nc_openbsd.1.gz
подчинённый netcat: /bin/nc.openbsd
подчинённый netcat.1.gz: /usr/share/man/man1/nc_openbsd.1.gz
/bin/nc.traditional — приоритет 10
подчинённый nc.1.gz: /usr/share/man/man1/nc.traditional.1.gz
подчинённый netcat: /bin/nc.traditional
подчинённый netcat.1.gz: /usr/share/man/man1/nc.traditional.1.gz
Нужно менять (в командном режиме через SSH
).
alternatives
Добавлено: 18 дек 2023, 00:25
Olej
Olej писал(а): ↑18 дек 2023, 00:21
Нужно менять
Код: Выделить всё
olej@nvme:~$ sudo update-alternatives --config nc
Есть 2 варианта для альтернативы nc (предоставляет /bin/nc).
Выбор Путь Приор Состояние
------------------------------------------------------------
* 0 /bin/nc.openbsd 50 автоматический режим
1 /bin/nc.openbsd 50 ручной режим
2 /bin/nc.traditional 10 ручной режим
Нажмите «enter», чтобы не менять текущий выбор[*], или введите нужное число: 2
update-alternatives: используется /bin/nc.traditional для предоставления /bin/nc (nc) в ручном режиме
И вот теперь:
Код: Выделить всё
olej@nvme:~$ update-alternatives --display nc
nc - ручной режим
лучшая версия ссылки — /bin/nc.openbsd
ссылка сейчас указывает на /bin/nc.traditional
ссылка nc — /bin/nc
подчинённая nc.1.gz — /usr/share/man/man1/nc.1.gz
подчинённая netcat — /bin/netcat
подчинённая netcat.1.gz — /usr/share/man/man1/netcat.1.gz
/bin/nc.openbsd — приоритет 50
подчинённый nc.1.gz: /usr/share/man/man1/nc_openbsd.1.gz
подчинённый netcat: /bin/nc.openbsd
подчинённый netcat.1.gz: /usr/share/man/man1/nc_openbsd.1.gz
/bin/nc.traditional — приоритет 10
подчинённый nc.1.gz: /usr/share/man/man1/nc.traditional.1.gz
подчинённый netcat: /bin/nc.traditional
подчинённый netcat.1.gz: /usr/share/man/man1/nc.traditional.1.gz
Вот как через ссылки это решается:
Код: Выделить всё
olej@nvme:~$ ls -l /usr/bin/nc
lrwxrwxrwx 1 root root 20 мар 11 2022 /usr/bin/nc -> /etc/alternatives/nc
Код: Выделить всё
olej@nvme:~$ ls -l /etc/alternatives/nc
lrwxrwxrwx 1 root root 19 дек 17 23:09 /etc/alternatives/nc -> /bin/nc.traditional
alternatives
Добавлено: 09 фев 2024, 15:45
Olej
То как устанавливались альтернативы для свежей версии GoLang:
Go: инструментарий (продолжение), для справки по формату команд (освежить в памяти
):
Код: Выделить всё
olej@R420:~$ update-alternatives --display go
go - автоматический режим
лучшая версия ссылки — /home/olej/goroot/bin/go
ссылка сейчас указывает на /home/olej/goroot/bin/go
ссылка go — /usr/bin/go
/home/olej/goroot/bin/go — приоритет 80
/lib/go-1.13/bin/go — приоритет 60
/lib/go-1.18/bin/go — приоритет 75
Код: Выделить всё
olej@R420:~$ sudo update-alternatives --install /usr/bin/go go /usr/local/go/bin/go 85 --slave /usr/bin/gofmt gofmt /usr/local/go/bin/gofmt
update-alternatives: используется /usr/local/go/bin/go для предоставления /usr/bin/go (go) в автоматическом режиме
Код: Выделить всё
olej@R420:~$ update-alternatives --display go
go - автоматический режим
лучшая версия ссылки — /usr/local/go/bin/go
ссылка сейчас указывает на /usr/local/go/bin/go
ссылка go — /usr/bin/go
подчинённая gofmt — /usr/bin/gofmt
/home/olej/goroot/bin/go — приоритет 80
/lib/go-1.13/bin/go — приоритет 60
/lib/go-1.18/bin/go — приоритет 75
/usr/local/go/bin/go — приоритет 85
подчинённый gofmt: /usr/local/go/bin/gofmt
Код: Выделить всё
olej@R420:~$ go version
go version go1.22.0 linux/amd64
alternatives
Добавлено: 09 фев 2024, 15:50
Olej
Olej писал(а): ↑09 фев 2024, 15:45
То как устанавливались альтернативы для свежей версии GoLang
И то как удаляются уже ненужные:
Код: Выделить всё
olej@R420:~$ sudo update-alternatives --remove go /home/olej/goroot/bin/go
[sudo] пароль для olej:
Код: Выделить всё
olej@R420:~$ sudo update-alternatives --list go
/lib/go-1.13/bin/go
/lib/go-1.18/bin/go
/usr/local/go/bin/go
Код: Выделить всё
olej@R420:~$ update-alternatives --display go
go - автоматический режим
лучшая версия ссылки — /usr/local/go/bin/go
ссылка сейчас указывает на /usr/local/go/bin/go
ссылка go — /usr/bin/go
подчинённая gofmt — /usr/bin/gofmt
/lib/go-1.13/bin/go — приоритет 60
/lib/go-1.18/bin/go — приоритет 75
/usr/local/go/bin/go — приоритет 85
подчинённый gofmt: /usr/local/go/bin/gofmt