You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/metadata/news/2022-12-27-alternatives-int.../2022-12-27-alternatives-int...

100 lines
6.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Title: Нововведение: пакеты app-alternatives
Author: Sam James <sam@gentoo.org>
Translator: Alexey Sokolov <alexey+gentoo@asokolov.org>
Posted: 2022-12-27
Revision: 1
News-Item-Format: 2.0
В Gentoo будет новая категория пакетов под названием «app-alternatives» для
случаев, когда пользователь хочет поменять символическую ссылку, указывающую
на распространённую программу, доступную в разных пакетах.
По традиции, для этого использовался eselect, но, хотя eselect всё ещё бывает
нужен, он плохо подходит для случаев, таких как /bin/awk и /bin/sh, потому что
а) он предотвращает использование корневой файловой системы в режиме только
для чтения, б) что более важно с точки зрения системы управления пакетами, он
зависит от осиротевших символических ссылок: ни один пакет не владеет файлами
/bin/awk, /bin/sh и т. д. Это не надёжно, и в некоторых случаях может привести
к мёртвой ссылке или даже к отсутствию ссылки [0].
При использовании для этих целей пакетного менеджера вместо ручной
конфигурации вовне система станет более надёжной.
Начальный список пакетов с поддержкой альтернатив такой:
- app-alternatives/awk
- app-alternatives/bzip2
- app-alternatives/bc
- app-alternatives/cpio
- app-alternatives/gzip
- app-alternatives/lex
- app-alternatives/sh
- app-alternatives/tar
- app-alternatives/yacc
Стабилизация этих пакетов, а также пакетов, от них зависящих, происходит в
баге 886017 [1].
## Требования для обновления
Настройка по умолчанию для систем Gentoo выглядит так:
FEATURES="protect-owned"; это работает подобно FEATURES="collision-protect",
но позволяет конфликты между файлами-сиротами. В этом случае возникнет
одноразовый конфликт, когда пакет из app-alternatives/ присвоит себе
символическую ссылку, которая до этого не принадлежала ни одному пакету.
Похожая ситуация была при миграции на libxcrypt, когда обновления ломались у
пользователей при использовании старой, более агрессивной настройки
FEATURES="collision-protect".
Мы рекомендуем вам обновить свою конфигурацию, и убрать «collision-protect» из
FEATURES. Вместо этого можете явно включить «protect-owned» или не указывать
там ничего, потому что это итак настройка по умолчанию. Также можно выключить
«collision-protect» временно, только для этого обновления, и затем включить
обратно.
ВНИМАНИЕ: Пользователи, использующие collision-protect, должны убрать его из
FEATURES в /etc/portage/make.conf, либо установить
FEATURES="-collision-protect". collision-protect находит конфликты между
файлами, даже когда ни один пакет не владеет файлом.
## Миграция
Для миграции достаточно убрать eselect-awk и eselect-sh из world, и обновить
систему как обычно:
1. # emerge --deselect app-eselect/eselect-awk app-eselect/eselect-sh
2. # emerge --depclean app-eselect/eselect-awk app-eselect/eselect-sh
3. # emerge --sync
4. # emerge -a -uvDU @world (или похожая команда для стандартного обновления
системы)
## Конфигурация
Если вы не заинтересованны в использовании разных реализаций перечисленных
выше инструментов, эту секцию можно пропустить.
По умолчанию никакая конфигурация не требуется, но вы можете настраивать
поведение пакетов из app-alternatives/, как раньше использовали для этого,
например, eselect-sh и eselect-awk.
Теперь для этого будет использоваться /etc/portage/package.use.
Пожалуйста, просмотрите USE-флаги, доступные для различных пакетов из
app-alternatives, таких как app-alternatives/sh, и настройте их на ваше
усмотрение.
Например, чтобы /bin/gzip был предоставлен пакетом app-arch/pigz, это
автоматически параллелизует gzip, нужен такой текст в /etc/portage/package.use:
```
# https://wiki.gentoo.org/wiki/Gzip#Parallelization
# Пусть /bin/gzip будет ссылкой на pigz для ускорения сжатия
app-alternatives/gzip -reference pigz
```
## Дополнительные материалы
Больше технических подробностей описано в вики [2].
[0] https://wiki.gentoo.org/wiki/Project:Base/Alternatives#Why.3F
[1] https://bugs.gentoo.org/886017
[2] https://wiki.gentoo.org/wiki/Project:Base/Alternatives