2013年2月24日日曜日

yum リポジトリの保護(protect)


複数のリポジトリを併用する場合、同一パッケージがバージョン違いで複数用意されてしまう事があります。
→ 通常何も指定をしなければ、バージョンのより新しいものがインストールやアップデートの対象になってしまいます。

この状態を回避する為に、利用しないリポジトリ側でexcludeオプションを指定する事が多々あるかと思いますが、より運用しやすい方法として利用したいパッケージが含まれるリポジトリ側でprotectを設定する手もあります


以下、その手順です。

1.yumのプラグインパッケージをインストールする。

RHEL6系の場合 → yum-plugin-protectbase
RHEL5系の場合 → yum-protectbase


2.protectをかけたいrepoファイルに以下を追記する。

protect=1


以上で設定は完了です。
これで、protectをかけたリポジトリに含まれるパッケージは、他のリポジトリの状態に影響を受けなくなります。


また、protectをかけたリポジトリは、以下のようなメッセージ(青字の部分)が表示されるようになります。

[root@node01 ~]# yum update
Loaded plugins: fastestmirror, protectbase
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
27 packages excluded due to repository protections
Setting up Update Process
No Packages marked for Update
[root@node01 ~]#

2013年2月17日日曜日

Fedora18 systemctlコマンド と [TAB]キー

2013年1月にリリースされたFedora18についてのメモです。


SysVinitからsystemdにデーモンの制御が移って、今まで/etc/rc.d/init.d/<デーモン名> restart のよう操作に慣れ親しんでいたのに、新たにsystemctlコマンドによる操作を覚えなくてはいけなくなった。


ところが、serviceコマンドを利用するとRHEL( or CentOS)の5や6と同等の操作ができるようになっています。
しかも[TAB]キーを利用すれば補完まで行ってくれるようになっています。

例)sshdの再起動

[root@fc18 ~]# service ss  ←[TAB]を入力する事で”sshd”と補完される
[root@fc18 ~]# service sshd restart
Redirecting to /bin/systemctl restart  sshd.service ←systemctlコマンドへリダイレクト
[root@fc18 ~]#


chkconfigコマンドも同等の操作が行えるようになっています。

例)sshdの自動起動off
[root@fc18 ~]# chkconfig sshd off ←ssの後に[TAB]を入力する事で”sshd”と補完される
情報:'systemctl disable sshd.service'へ転送しています。
rm '/etc/systemd/system/multi-user.target.wants/sshd.service'
[root@fc18 ~]#


あと、上記デーモンなどの制御以外にも[TAB]が随所で利用できるようになっているようです。

例えば、yum install postまで入力して[TAB]を2回入力すると候補が表示されるようになりました。
(これで、yum list | grep ~ などしてパッケージ名を調べる必要すらなくなりました。)


[root@fc18 ~]# yum install post[TAB][TAB]
postal.x86_64                         postgresql-ip4r.x86_64                postgresql-plruby-doc.x86_64
poster.x86_64                         postgresql-jdbc.noarch                postgresql-plruby.x86_64
posterazor.x86_64                     postgresql-libs.i686                  postgresql-pltcl.x86_64
postfix-perl-scripts.x86_64           postgresql-libs.x86_64                postgresql-server.x86_64
postfix-sysvinit.noarch               postgresql-odbc.x86_64                postgresql-table_log.x86_64
postfix.x86_64                        postgresql-pgpool-II-devel.i686       postgresql-test.x86_64
postgis-docs.x86_64                   postgresql-pgpool-II-devel.x86_64     postgresql-upgrade.x86_64
postgis-jdbc.x86_64                   postgresql-pgpool-II-recovery.x86_64  postgresql.i686
postgis-utils.x86_64                  postgresql-pgpool-II.i686             postgresql.x86_64
postgis.x86_64                        postgresql-pgpool-II.x86_64           postgresql_autodoc.noarch
postgresql-contrib.x86_64             postgresql-pgpoolAdmin.noarch         postgrey.noarch
postgresql-dbi-link.noarch            postgresql-plparrot.x86_64            postler.x86_64
postgresql-devel.i686                 postgresql-plperl.x86_64              postr.x86_64
postgresql-devel.x86_64               postgresql-plpython.x86_64
postgresql-docs.x86_64                postgresql-plpython3.x86_64
[root@fc18 ~]# yum install post


さらに別の例を挙げれば、rpmコマンドでもインストールされているパッケージに関しては、[TAB]を2回入力すれば候補が表示されます。下記は、openの後に[TAB]を2回入力した時の出力です。

[root@fc18 ~]# rpm -q open[TAB][TAB]
opencc           opencv           openldap         openssh          openssh-server   openssl-libs
openconnect      openjpeg-libs    openobex         openssh-clients  openssl          openvpn
[root@fc18 ~]# rpm -q open


2013年2月6日水曜日

postfix DB参照先の冗長化

postfixでルックアップテーブルとしてMySQLやPostgreSQLを指定した場合、クエリーの投げ先として複数ホストを指定する事で、参照先を冗長化できる。


<構成例>
relay_recipient_maps = proxy:mysql:/etc/postfix/mysql_relay_recipent_maps.cf
hosts = db01.example.jp db02.example.jp db03.example.jp
user = user01
password = password
dbname = mail
query = SELECT username FROM mailbox WHERE username='%s' AND status='active'


ただし、このように複数ホストを指定した場合に注意することがある。

それは、postfixは指定されたホストにランダムにクエリーをかけるので、どのホストにクエリーをかけても同じ答えが返ってくるようにすることです。

あたり前の話ですが、上記の例のように3台のホストを指定してあっても、実際のデータが1台にしか存在しない場合、データが存在しない他の2台のホストにクエリーがいってしまうと意図した結果がpostfixに返ってきません。
#認証で利用していたなら、認証失敗となってしまいます