How-To среда: Система alternatives |
06.02.2008 | |
Часто существуют два или больше пакетов для Fedora, которые делают одно и то же. Система alternatives обеспечивает механизм для выбора активного приложения из нескольких доступных. # rpm -q --requires sendmail | grep alternatives # rpm -q --requires postfix | grep alternatives Во многих скриптах для вызова sendmail прописан /usr/sbin/sendmail, и, соответственно, этот скрипт имеет две версии: для работы с sendmail и для работы с postfix. На самом деле /usr/sbin/sendmail — это символическая ссылка на /etc/alternatives/mta: # ls -l /usr/sbin/sendmaillrwxrwxrwx 1 root root 21 Dec 20 00:25 /usr/sbin/sendmail -> /etc/alternatives/mta А /etc/alternatives/mta — это символическая ссылка на одну из программ — на /usr/sbin/sendmail.sendmail или на /usr/sbin/sendmail.postfix, в зависимости от предпочтений системного администратора. Допустим, на какой-то системе она ссылается на /usr/sbin/sendmail.sendmail: # ls -l /etc/alternatives/mtalrwxrwxrwx 1 root root 27 Mar 13 22:52 /etc/alternatives/mta -> /usr/sbin/sendmail.sendmail На первый взгляд, для переключения на использование postfix нужно просто удалить ссылку mta и создать новую, ссылающуюся на /usr/sbin/sendmail.postfix. Однако, файл в папке /usr/sbin/sendmail — это только один файл из всех файлов, относящихся к MTA объекту; также к нему относятся различные утилиты, такие, как newaliases и mailq, страницы man, и init-скрипты для запуска MTA при старте системы. Чтобы упростить процесс переключения между двумя пакетам, Fedora предоставляет специальные команды. После установки пакета postfix выполните данную команду: /usr/sbin/alternatives --install /usr/sbin/sendmail mta /usr/sbin/sendmail.postfix 30 \--slave /usr/bin/mailq mta-mailq /usr/bin/mailq.postfix \ --slave /usr/bin/newaliases mta-newaliases /usr/bin/newaliases.postfix \ --slave /etc/pam.d/smtp mta-pam /etc/pam.d/smtp.postfix \ --slave /usr/bin/rmail mta-rmail /usr/bin/rmail.postfix \ --slave /usr/lib/sendmail mta-sendmail /usr/lib/sendmail.postfix \ --slave /usr/share/man/man1/mailq.1.gz mta-mailqman /usr/share/man/man1/mailq.postfix.1.gz \ --slave /usr/share/man/man1/newaliases.1.gz mta-newaliasesman /usr/share/man/man1/newaliases.postfix.1.gz \ --slave /usr/share/man/man8/sendmail.8.gz mta-sendmailman /usr/share/man/man1/sendmail.postfix.1.gz \ --slave /usr/share/man/man5/aliases.5.gz mta-aliasesman /usr/share/man/man5/aliases.postfix.5.gz \ --initscript postfix После установки sendmail выполните следующую команду: /usr/sbin/alternatives --install /usr/sbin/sendmail mta /usr/sbin/sendmail.sendmail 90 \--slave /usr/bin/mailq mta-mailq /usr/bin/mailq.sendmail \ --slave /usr/bin/newaliases mta-newaliases /usr/bin/newaliases.sendmail \ --slave /usr/bin/rmail mta-rmail /usr/bin/rmail.sendmail \ --slave /usr/lib/sendmail mta-sendmail /usr/lib/sendmail.sendmail \ --slave /etc/pam.d/smtp mta-pam /etc/pam.d/smtp.sendmail \ --slave /usr/share/man/man8/sendmail.8.gz mta-sendmailman /usr/share/man/man8/sendmail.sendmail.8.gz \ --slave /usr/share/man/man1/mailq.1.gz mta-mailqman /usr/share/man/man1/mailq.sendmail.1.gz \ --slave /usr/share/man/man1/newaliases.1.gz mta-newaliasesman /usr/share/man/man1/newaliases.sendmail.1.gz \ --slave /usr/share/man/man5/aliases.5.gz mta-aliasesman /usr/share/man/man5/aliases.sendmail.5.gz \ --initscript sendmail После выполнение данных команд было создано два варианта (две альтернативы) MTA — postfix и sendmail. Главный файл каждой программы теперь стал символической ссылкой на ту программу, которая выбрана для использования в данный момент. Все файлы, относящиеся к данным программам, также будут переключаться в зависимости от выбранной программы. И init-скрипты тоже (через команду chkconfig). # alternatives --config mta Заметим, что выбранная программа отмечена звездочкой, а программа, которую вы выбрали сейчас, отмечена плюсом. Для выбора текущей программы одной командой, используйте опцию --set: # alternatives --set mta /usr/sbin/sendmail.postfix Для того, чтобы узнать, какая программа выбрана в данный момент как текущая, используйте опцию --display: # alternatives --display mta Вместо выбора текущей программы вручную, вы можете включить автоматический выбор программы. Тогда текущий выбор будет изменяться при удалении и добавлении пакетов: # alternatives --auto mta Наиболее распространенные способы использования системы alternatives — это выбор разных реализаций java, выбор сервера печати и выбор почтового сервера. Реализация системы alternatives в Fedora — это расширение той же системы под Debian. |