alterator-alternatives-1.0/ 0000755 0000000 0000000 00000000000 11146235022 0016040 5 ustar 00root root 0000000 0000000 alterator-alternatives-1.0/Makefile 0000644 0000000 0000000 00000000260 11146235022 0017476 0 ustar 00root root 0000000 0000000 NAME=alternatives INSTALL=/usr/bin/install TEST_REQUIRES=alternatives all: clean: install: install-module check: check-module include /usr/share/alterator/build/module.mak alterator-alternatives-1.0/applications/ 0000755 0000000 0000000 00000000000 11146235022 0020526 5 ustar 00root root 0000000 0000000 alterator-alternatives-1.0/applications/alternatives.desktop 0000644 0000000 0000000 00000000335 11146235022 0024623 0 ustar 00root root 0000000 0000000 [Desktop Entry] Encoding=UTF-8 Type=Application Categories=X-Alterator-System Icon=alternatives Terminal=false Name=Alternatives subsystem X-Alterator-URI=/alternatives X-Alterator-Weight=10 X-Alterator-Help=alternatives alterator-alternatives-1.0/backend3/ 0000755 0000000 0000000 00000000000 11146235022 0017512 5 ustar 00root root 0000000 0000000 alterator-alternatives-1.0/backend3/alternatives 0000755 0000000 0000000 00000002241 11146235022 0022140 0 ustar 00root root 0000000 0000000 #!/bin/sh alterator_api_version=1 . alterator-sh-functions . /usr/share/alternatives/functions alternatives_list() { alternatives-list| sed -ne 's,^\(.*\) points to.*,\1,p'| sort } on_message() { case "$in_action" in list) case "$in__objects" in /) alternatives_list|write_enum ;; avail_candidate) [ -n "$in_name" ] || in_name="$(alternatives_list|head -n1)" [ -n "$in_name" ] || return grep -h "^$in_name[[:space:]]" "$auto_dir"/* | sed 's,[[:space:]]\+,\t,g' | cut -f2| write_enum ;; esac ;; read) [ -n "$in_name" ] || in_name="$(alternatives_list|head -n1)" [ -n "$in_name" ] || return write_string_param name "$in_name" local alternative="/$in__objects" ! grep -qs "^$in_name[[:space:]].*manual$" "$manual_file" write_bool_param manual "$?" write_string_param current "$(alternatives-list "$in_name" | sed -ne 's,^.* points to \(.*\)$,\1,p')" ;; write) if test_bool "$in_manual"; then alternatives-manual "$in_name" "$in_current" else alternatives-auto "$in_name" fi >/dev/null 2>/dev/null alternatives-update ;; esac } message_loop alterator-alternatives-1.0/design/ 0000755 0000000 0000000 00000000000 11146235022 0017311 5 ustar 00root root 0000000 0000000 alterator-alternatives-1.0/design/styles/ 0000755 0000000 0000000 00000000000 11146235022 0020634 5 ustar 00root root 0000000 0000000 alterator-alternatives-1.0/design/styles/alternatives.css 0000644 0000000 0000000 00000000214 11146235022 0024044 0 ustar 00root root 0000000 0000000 .selector-chooser { width: 100%; } .selector-data { width: 100%; } .alternatives-list { width:50%; } .candidates-list { width:50%; } alterator-alternatives-1.0/help/ 0000755 0000000 0000000 00000000000 11146235022 0016770 5 ustar 00root root 0000000 0000000 alterator-alternatives-1.0/help/ru_RU/ 0000755 0000000 0000000 00000000000 11146235022 0020024 5 ustar 00root root 0000000 0000000 alterator-alternatives-1.0/help/ru_RU/alternatives.html 0000644 0000000 0000000 00000005141 11146235022 0023414 0 ustar 00root root 0000000 0000000
Система управления пакетами (в данном случае — RPM) не допускает ситуации, когда один и тот же файл принадлежит одновременно нескольким пакетам — такая ситуация называется файловый конфликт. Тем не менее иногда требуется попеременно обращаться к нескольким разным файлам, используя один и тот же путь в файловой системе. Например, разные версии компилятора удобно вызывать как cc, разные реализации эмуляторов терминала — как xvt. Для этих целей была создана подсистема альтернатив. Альтернатива — это и есть тот самый разделяемый путь в файловой системе.
В группе пакетов перечисляются претенденты на путь в файловой системе — кандидаты, а также вес кандидата. Подсистема альтернатив обеспечивает выбор того из возможных кандидатов, вес которого больше остальных. Возможно перевести управление в ручной режим и явно указать необходимого кандидата, в этом случае вес не имеет значения.
Существуют так называемые зависимые альтернативы. Например, при переключении альтернативы компилятора, автоматически переключаются альтернативы на все руководства к нему (manual pages). Однако ничто не препятствует и такие альтернативы переключать в ручном режиме.
alterator-alternatives-1.0/help/uk_UA/ 0000755 0000000 0000000 00000000000 11146235022 0017774 5 ustar 00root root 0000000 0000000 alterator-alternatives-1.0/help/uk_UA/alternatives.html 0000644 0000000 0000000 00000005021 11146235022 0023361 0 ustar 00root root 0000000 0000000Система управління пакетами (в даному випадку — RPM) не допускає ситуації, коли один і той же файл належить одночасно декільком пакетам — така ситуація називається файловий конфлікт. Проте іноді необхідно поперемінно звертатися до декількох різних файлів, використовуючи один і той же шлях у файловій системі. Наприклад, різні версії компілятора зручно викликати як cc, різні реалізації емуляторів терміналів — як xvt. Для подібних цілей була створена підсистема альтернатив. Альтернатива — це і є той самий поділювальний шлях у файловій системі.
В групі пакетів перераховуються претенденти на шлях у файловій системі — кандидати, а також вага кандидата. Підсистема альтернатив забезпечує вибір того з можливих кандидатів, вага якого більша ніж інших. Також є можливість перевести управління в ручний режим і явно вказати необхідного кандидата. В цьому випадку вага не має значення.
Існують, так звані, залежні альтернативи. Наприклад, при перемиканні альтернативи компілятора, автоматично будуть переключені й альтернативи на всі посібники до нього (manual pages). Однак ніщо не перешкоджає також перемикати такі альтернативи в ручному режимі.
alterator-alternatives-1.0/runtests 0000755 0000000 0000000 00000000555 11146235022 0017662 0 ustar 00root root 0000000 0000000 #!/bin/sh -u . shell-unittest . alterator-unittest-functions datadir=test-data unitdir=test ### initialize special testing facility install -Dpm644 $datadir/qa /etc/alternatives/packages.d/qa alternatives-install qa for i in qa1-1 qa1-2 qa2-1 qa2-2; do touch /usr/bin/$i chmod +x /usr/bin/$i done ### runtests for i in "$unitdir"/*; do . $i;done runUnitTests alterator-alternatives-1.0/templates/ 0000755 0000000 0000000 00000000000 11146235022 0020036 5 ustar 00root root 0000000 0000000 alterator-alternatives-1.0/templates/alternatives/ 0000755 0000000 0000000 00000000000 11146235022 0022537 5 ustar 00root root 0000000 0000000 alterator-alternatives-1.0/templates/alternatives/index.html 0000644 0000000 0000000 00000002656 11146235022 0024545 0 ustar 00root root 0000000 0000000