いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.150 / 読者数:1293名

あけましておめでとうございます、うすだです。

今年も、昨年とやや同様に、月2回発行を目指してがんばろうと思いますので、 何卒よろしくお願いします。
(ただし、1月は、申し訳ありませんが、1回でご容赦くださいまし。)

さて、本日、用事があって、大須というところへ行っておりました。
名古屋市内にある電気街で、東京でいうところの秋葉原、 大阪での日本橋だと思っていただければよいです。(規模はさておき)

わたしは普段、古い ThinkPadを酷使していますが、 そろそろ買い替えていいかもな…なんて思いながら、 中古パソコンの売り場をいくつか回ってみました。

すると、私の ThinkPad はどこにもなく、 その後継機種が、3万円くらいで叩き売られていました。
中古で購入してから4年ほど経ちますので、当然なのかもしれませんが、 なんとも言えないさみしさを感じました。

とはいっても、CPU はシングルコアで 1GHzしかありませんし、 メモリは 640MB ですが、使用にたえないほど遅い! というほどではありません。
ヒンジ部分が破損しかかっているのと、キーの入力がやや怪しい点を除くと、 まだまだ使えそうな気配です。

昔は、2年経ったら使いものにならなくなる、なんて言われていた(と思います)が、 用途によっては、4〜5年経っても問題ないと言えそうです。

というわけで、ここのところの景気後退や、地球環境のことも考慮して、 もうしばらくは使いつづけようと思った次第です。(泣く泣く…)

新年早々地味な話でしたが、今年も、はりきってまいりましょう!

今回のお題 - alternatives でいろんなものを共存させる

Linux のシステム管理を生業とされている貴兄は、ナニかを新たに試す際や、 設定を変更するなどの際には、まずお試し環境で確認してから、 本番に挑まれていることと存じます。

ただ、あっちにもこっちにもお試し環境がある、という富豪なかたはまれで、 1つの環境を、こねくり回して使われているのではないでしょうか。

そうしますと、お試し環境には、あれもこれもインストールされている、 という状態になりがちです。

たとえば、MTA には sendmail と postfix と exim が突っ込んであり、 動作確認や検証のため、それらを切替えて使う、といった具合です。

とはいえ、実際に切替えを行うとなると、どうやればよいのかわからず、 途方に暮れてしまう貴兄もいらっしゃるのではないでしょうか。

ですので、今回は、alternatives というものを使って、 同種のソフトやバージョンの異なるソフトを切替えて使用する方法を、ご紹介します。


最初に、alternatives について、簡単にご説明します。

alternatives は、同時にインストールされた、同機能を提供するソフトや、 バージョンの異なるソフトを管理するためのユーティリティです。

具体的には、ユーザが実際に使用するコマンド等はシンボリックリンクになっており、 そのシンボリックリンクの指す実体を切替えたり、候補一覧を出力したり、 といったことを行います。

もともとは、Debian の dpkg ユーティリティの機能のひとつでしたが、 現在では、RedHat 系のディストリビューションにも入っています。
(Fedora, CentOS などでは chkconfig パッケージに含まれますが、 Vine では alternatives という独立したパッケージになっています。)


まずは、alternatives の管理下にあるモノを、調べてみましょう。

alternatives の情報は、以下のディレクトリに格納されています。

  Debian系: /var/lib/dpkg/alternatives
  Fedora,CentOS: /var/lib/alternatives
  Vine: /var/lib/rpm/alternatives

上記ディレクトリを参照することで、 alternatives を利用しているモノの名前を確認できます。 (以下は、CentOS 4.7 の実行例です。)

  % ls /var/lib/alternatives
  etags      mta           xinput-gu_IN  xinput-ko_KR  xinput-te_IN
  java       print         xinput-hi_IN  xinput-ml_IN  xinput-zh_CN
  jre_1.4.2  xinput-bn_BD  xinput-ja_JP  xinput-pa_IN  xinput-zh_TW
  jre_gcj    xinput-bn_IN  xinput-kn_IN  xinput-ta_IN

 

そして、/etc/alternatives 以下に、上記と同名のシンボリックリンクがあります。 たとえば、mta は、以下のようになっています。

  % ls -l /etc/alternatives/mta
  lrwxrwxrwx 1 root root 21 Oct 17 18:59 /etc/alternatives/mta -> /usr/sbin/sendmail.sendmail

かたや、ユーザが使用する /usr/sbin/sendmail もシンボリックリンクになっており、 /etc/alternatives/mta を指しています。

  % ls -l /usr/sbin/sendmail
  lrwxrwxrwx 1 root root 21 Oct 17 18:59 /usr/sbin/sendmail -> \
  /etc/alternatives/mta

よって、/etc/alternatives/mta の指す実体を切替えると、 sendmail の実体も切り替わる、という寸法です。


さて、各種操作を行ったり情報を見たりするには、 update-alternatives というコマンドを使用します。

まずは、状態を確認してみましょう。それには、 --display オプションをつけて update-alternatives を実行します。

  update-alternatives --display 名前

たとえば、mta の内訳を知るには、以下のように実行します。

  # update-alternatives --display mta
  mta - status is auto.
   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
  ...中略...
  /usr/sbin/sendmail.postfix - priority 30
   slave mta-pam: /etc/pam.d/smtp.postfix
   slave mta-mailq: /usr/bin/mailq.postfix
  ...中略...
  Current 'best' version is /usr/sbin/sendmail.sendmail.

いまは、auto という状態になっています。
そして、/usr/sbin/sendmail.sendmail と /usr/sbin/sendmail.postfix という選択候補がありますが、 現在は /usr/sbin/sendmail.sendmail が選択されていることがわかります。
(先ほど /etc/alternatives/mta を ls -l した結果と一致しますね。)

それぞれの選択候補には priority があり、sendmail.sendmail が 90 で、 sendmail.postfix が 30 です。
ちなみに、状態が auto ですと、priority の高いほうが選択されます。

また、mta-pam や mta-mailq などといった、 mta に付随する(スレーブ)ものがあることもわかります。

  % ls -l /etc/alternatives/mta-pam
  lrwxrwxrwx 1 root root 23 Oct 17 18:59 /etc/alternatives/mta-pam -> /etc/pam.d/smtp.sendmail
  % ls -l /etc/pam.d/smtp
  lrwxrwxrwx 1 root root 25 Oct 17 18:59 /etc/pam.d/smtp -> /etc/alternatives/mta-pam

これらは、mta を切替えたとき、同時に切り替わってくれます。

 

ちなみに、--list オプションを用いますと、簡潔な出力結果が得られるのですが、 ディストリビューションによっては対応していません。

  % update-alternatives --list gcc
  /usr/bin/gcc-3.3.6
  /usr/bin/gcc-4.0.2

それでは、実際に切替えてみましょう。
対話形式で切替えるには、--config オプションを用います。

  update-alternatives --config 名前

たとえば、mta を、sendmail.postfix に切替えてみましょう。

  # update-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 numer:

…と出力され、入力を促されますので、2 を選択してください。
特に文句を言われなければ、切り替わったことを確認します。

  # update-alternatives --display mta
  mta - status is manual.
   link currently points to /usr/sbin/sendmail.postfix
  ...後略...

priority の低い方を選択しましたので、状態が manual になります。
そして、sendmail.postfix が選択されていることがわかります。
もちろん、各シンボリックリンクの実体も切り替わっています。

  # ls -l /etc/alternatives/mta
  lrwxrwxrwx 1 root root 21 Jan 10 17:28 /etc/alternatives/mta -> /usr/sbin/sendmail.postfix
  # ls -l /etc/alternatives/mta-pam
  lrwxrwxrwx 1 root root 23 Jan 10 17:28 /etc/alternatives/mta-pam -> /etc/pam.d/smtp.postfix
  ...後略...

 

非対話形式で切替えるには、--set オプションを使用します。

  update-alternatives --set 名前 パス

たとえば、mta を sendmail.postfix に切替えるには、以下のように実行します。

  # update-alternatives --set mta /usr/sbin/sendmail.postfix

 

また、デフォルトの状態に戻すには、--auto オプションを使用します。

  update-alternatives --auto 名前

たとえば、mta をデフォルトに戻すには、以下のように実行します。

  # update-alternatives --auto mta

すると、priority の高い sendmail.sendmail が選択され、状態が auto になります。

  # update-alternatives --display mta
  mta - status is auto.
   link currently points to /usr/sbin/sendmail.sendmail
  ...後略...

 

ちなみに、--all オプションを使用しますと、対話形式ですべての選択を促されます。 (…が、使う状況が想像できませんので、割愛します。)

さらにちなみに、お察しの通り、切替えるには root の権限が必要です。


以上、alternatives の使いかたを、超簡単にご紹介しました。

そもそも alternatives に対応している必要がありますが、対応さえしていれば、 切替えはとても簡単です。

たいていの Linux マシンであれば、alternatives は必ず入っているはずですので、 update-alternatives --display くらいは試してみましょう。
あわよくば、かちあうソフトをインストールして、 切替えて使えることを確認しておくと、なにかの糧になってよいと思います。

宿題の答え

前回の宿題は、

  プライマリサーバで、シリアル番号を更新せずに情報を変更した場合、
  セカンダリサーバの情報がどうなるか確認しましょう。

でした。

予想通りの結果になりますが、そうなることを、実際に確認してみたいと思います。

構成は、前回と同様、プライマリサーバが BIND で、セカンダリサーバが NSD、 対象のゾーンを kuri.info と仮定して、話を進めます。

 

まずは、シリアル番号を更新して、双方で更新されることを確認します。
プライマリサーバ上の、kuri.info のシリアル番号を増やします。

  @ IN SOA ns1.kuri.info. postmaster.kuri.info. (
      2000011001 10800 3600 604800 86400)   ; シリアル番号を更新!

更新を BIND に知らせます。

  # /etc/init.d/named reload

セカンダリサーバが notify に気づいて更新したことを、syslog を見て確認します。

  # tail /var/log/messages
  ...中略...
  年月日 マシン名 nsd[PID]: Zone kuri.info serial 2008120701 is updated to 2009011001.

 

…とまあ、ここまでは、前回のお話です。
さて、今度は、シリアル番号を変更せず、エントリだけ追加してみます。

  @ IN SOA ns1.kuri.info. postmaster.kuri.info. (
      2000011001 10800 3600 604800 86400)   ; シリアル番号は据置き
  ...中略...
  usohost2   IN   A      192.168.1.253      ; ダミーを追加

更新(シリアル番号は据置きですが)を BIND に知らせます。

  # /etc/init.d/named reload

セカンダリサーバの syslog を確認しますと…

  # tail /var/log/messages
  ...中略...
  年月日 マシン名 nsd[PID]: Zone kuri.info serial 2008120701 is updated to 2009011001.

新たなログは、何も出力されていません。
もちろん、追加した usohost2 の情報は、影も形もありません。

  # dig @localhost usohost2.kuri.info.
  ...中略...
  ;; QUESTION SECTION:
  ;usohost2.kuri.info.            IN      A

  ;; AUTHORITY SECTION:
  kuri.info.              86400   IN      SOA     dns.kuri.info. postmaster.kuri.info. 2009011001 10800 3600 604800 86400
  ...後略...

念のため、NSD を再起動しても、更新の気配すら感じられません。

  # /etc/init.d/nsd restart
  # tail /var/log/messages
  ...中略...
  年月日 マシン名 nsd[PID]: signal received, shutting down...
  年月日 マシン名 nsd[PID]: nsd started (NSD 3.1.1), pid PID

 

というわけで、更新する際には、必ずシリアル番号を増やしましょう、 という簡単な宿題でした。

今回の宿題

今回の宿題は、

  alternatives の管理下にあるソフトの一覧を出力してみましょう。

です。

いちいち /var/lib/alternatives などを参照して、 それぞれ --display で確認するのは、個人的に面倒な気がしております。
どばばばっと全部出力するものがあってもよいかなと思いますので、 そのようなものを、シェルスクリプトかなにかで作ってみてください。

あとがき

あるメルマガによりますと、若いビジネスマンには、 「抽象化する力」と「実験する遊び心」の能力が欠如しがちなんだそうです。

わたしは、もうとっくに「若い」とは言いがたい年齢に達していますが、 それでも耳の痛いご指摘です。

大学生のころ、アルバイトで専門学校の講師をしていた際、 「認知科学」という科目を教えていました。
そのとき、教科書に、「具体的な事例に結びつけることで、 人間は初めて理解できる」的なことが書いてあり、妙に納得したのを覚えています。

「抽象化する力」とは、本などから得た情報を一旦抽象化してから、 自分の具体的なケースに当てはめて理解することで、ようやく応用することができる、 ということだそうです。

本を読んでいますと、なるほどな〜と思っても、その後のことを考えず、 忘却の彼方へと追いやってしまいがちです。
抽象化と具体的なケースへの適用を意識しながら、自分の脳ミソで考えて いきたいと思います。

そして、「実験する遊び心」とは、まさに「実践」のことだと思います。

やりましょう! と書いてあっても、実際に行動するひとは1割未満だ、 という話を聞いたことがあります。
さらに、ひとひねりして実験するひとなんて、もっと少ないのではないでしょうか。 できれば、そのひとりに含まれるよう、行動を促していきたいなと思います。

あ、あるメルマガとは、以下です。(以前にもご紹介しましたが…)

毎日3分読書革命!土井英司のビジネスブックマラソン
http://archive.mag2.com/0000135008/index.html

さらりと書いてあることが、とても重要だったり、 ずしんと心に響いたりするのですが、それは、 著者の豊富な経験や深い考察力から来ているように思います。 興味のあるかたは、一度ご覧くださいませ。

 

てなわけで、新年一発目のメルマガは、以上です。
またまたまたまた長くなってしまいましたが、いかがでしたでしょうか。
次回は、alternatives をもう少し使いこなす的な内容を、予定しております。 (できれば、次回はもうちょっと短くしたいと思います…。)

 

今回も、ここまで読んでいただき、ありがとうございました。
次回は、2月1日(日) 頃に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−年賀状も毎年栗の絵です。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本