Linux alternatives で選択できる項目を作る
超久々で、はてな記法なんかを忘れてます。
最近のRedhat系Linuxでは、alternativesコマンドでイロイロ切り替えられるようになってます。が、ソースコードから自分でインストールした場合なんかは、自分で登録しないと使えません。しかも、インストール時に工夫が必要です。
今回は、自分でインストールしたPostfixを登録することにします。
まず、Postfixのビルドはマニュアルを見ながら何とか片付けて、インストールの段階でパスを聞かれるので、バイナリ等のパスはそれぞれ、○○.postfixなんかで設定してインストール。終わったら、本題に入ります。
(RPMのPostfixが入ってる場合は不要)
超簡単。
[root@hatena hatena]# /usr/sbin/alternatives --install /usr/sbin/sendmail mta /usr/sbin/sendmail.postfix 30 --install [バイナリのシンボリックリンク名][名前][指定したいバイナリ本体][優先度]
「/usr/sbin/sendmail として、mta という名前の、/usr/sbin/sendmail.postfix を 優先度30 でセット」という意味になります。じゃあ、登録したヤツを確認してみます。確認は、--display [名前] でOK。
[root@hatena hatena]# /usr/sbin/alternatives --display mta mta - status is manual. link currently points to /usr/sbin/sendmail.sendmail /usr/sbin/sendmail.sendmail - priority 90 slave mta-pam: /etc/pam.d/smtp.sendmail slave mta-mailq: /usr/bin/mailq.sendmail slave mta-newaliases: /usr/bin/newaliases.sendmail slave mta-rmail: /usr/bin/rmail.sendmail slave mta-sendmail: /usr/lib/sendmail.sendmail slave mta-mailqman: /usr/share/man/man1/mailq.sendmail.1.gz slave mta-newaliasesman: /usr/share/man/man1/newaliases.sendmail.1.gz slave mta-aliasesman: /usr/share/man/man5/aliases.sendmail.5.gz slave mta-sendmailman: /usr/share/man/man8/sendmail.sendmail.8.gz /usr/sbin/sendmail.postfix - priority 30 slave mta-pam: (null) slave mta-mailq: (null) slave mta-newaliases: (null) slave mta-rmail: (null) slave mta-sendmail: (null) slave mta-mailqman: (null) slave mta-newaliasesman: (null) slave mta-aliasesman: (null) slave mta-sendmailman: (null) Current `best' version is /usr/sbin/sendmail.sendmail.
sendmail本体とともに切り替えられるバイナリ等が未設定です。このままだと、不完全にしか切り替えられないので、スレーブとして、利用するバイナリ等を指定してやる必要があります。とりあえず今インストールしたヤツは、いったん削除。
[root@hatena hatena]# /usr/sbin/alternatives --remove mta /usr/sbin/sendmail.postfix [名前] [削除したい項目のバイナリ本体]
スレーブは、--install節の後ろに、--slaveとして設定します。--slave節は--install節と同じ書き方です。
[root@hatena hatena]# /usr/sbin/alternatives --install /usr/sbin/sendmail mta /usr/sbin/sendmail.postfix 30 \ --slave /etc/pam.d/smtp mta-pam /etc/pam.d/smtp.postfix \ --slave /usr/bin/mailq mta-mailq /usr/bin/mailq.postfix \ --slave /usr/bin/newaliases mta-newaliases /usr/bin/newaliases.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/local/man/man1/mailq.1.gz \ --slave /usr/share/man/man1/newaliases.1.gz mta-newaliasesman /usr/local/man/man1/newaliases.1.gz \ --slave /usr/share/man/man5/aliases.5.gz mta-aliasesman /usr/local/man/man5/aliases.5.gz \ --slave /usr/share/man/man8/sendmail.8.gz mta-sendmailman /usr/local/man/man1/sendmail.1.gz
(なんかpostfixのデフォルトでインストールされるmanファイルは圧縮されてませんでしたので、自分で圧縮してます。)
こんな感じで登録してやると、自動切り替えのほかのヤツもきちんと設定されます。
[root@hatena hatena]# /usr/sbin/alternatives --display mta mta - status is manual. link currently points to /usr/sbin/sendmail.sendmail /usr/sbin/sendmail.sendmail - priority 90 slave mta-pam: /etc/pam.d/smtp.sendmail slave mta-mailq: /usr/bin/mailq.sendmail slave mta-newaliases: /usr/bin/newaliases.sendmail slave mta-rmail: /usr/bin/rmail.sendmail slave mta-sendmail: /usr/lib/sendmail.sendmail slave mta-mailqman: /usr/share/man/man1/mailq.sendmail.1.gz slave mta-newaliasesman: /usr/share/man/man1/newaliases.sendmail.1.gz slave mta-aliasesman: /usr/share/man/man5/aliases.sendmail.5.gz slave mta-sendmailman: /usr/share/man/man8/sendmail.sendmail.8.gz /usr/sbin/sendmail.postfix - priority 30 slave mta-pam: /etc/pam.d/smtp.postfix slave mta-mailq: /usr/bin/mailq.postfix slave mta-newaliases: /usr/bin/newaliases.postfix slave mta-rmail: /usr/bin/rmail.postfix slave mta-sendmail: /usr/lib/sendmail.postfix slave mta-mailqman: /usr/local/man/man1/mailq.1.gz slave mta-newaliasesman: /usr/local/man/man1/newaliases.1.gz slave mta-aliasesman: /usr/local/man/man5/aliases.5.gz slave mta-sendmailman: /usr/local/man/man1/sendmail.1.gz Current `best' version is /usr/sbin/sendmail.sendmail.
あとは、alternativesを利用するだけで、メインのMTAを変更できます。
[root@hatena hatena]# /usr/sbin/alternatives --config mta There are 2 programs which provide 'mta'. Selection Command ----------------------------------------------- *+ 1 /usr/sbin/sendmail.sendmail 2 /usr/sbin/sendmail.postfix Enter to keep the current selection[+], or type selection number: 2[Enter]
こんな感じ。簡単です。どこで使うか、といわれると微妙ですが・・・まあ、ネタとして知っておいても損はないということで。(ところどころで、Current best version is /usr/sbin/sendmail.sendmail と叱られてるように見えますが、常に出るようです。)
あと、Postfixに切り替えた後、man newaliasesとやると、sendmail.1.gzが無いぜ!と言われるので、リンク作って逃げてます。
[root@hatena hatena]# ln -s /etc/alternatives/mta-sendmailman /usr/share/man/man1/sendmail.1.gz
こんなところで。