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