2012年8月27日月曜日

Fedora17でyumが使えなくなった

何か変更したつもりは全くないが、最近になってyumを使うと以下のようなエラーが出るようになった。

 [root@fc17 ~]# yum update
読み込んだプラグイン:langpacks, presto, refresh-packagekit
 http://ftp.riken.jp/Linux/fedora/releases/17/Everything/x86_64/os/repodata/repomd.xml: [Errno 14] curl#7 - "Couldn't connect" 他のミラーを試します。
 エラー: failure: repodata/repomd.xml from fedora: [Errno 256] No more mirrors to try.
 [root@fc17 ~]#

何でだろう?と思いつつ、/etc/yum.repos.d配下のファイルを編集してみても状況はかわらず。。
ネットワーク周りをひとつずつ見直していたらデフォルトゲートウェイがなくなっている事に気づいた。


[root@fc17 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 p1p1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 p1p1
[root@fc17 ~]#

ということで修正を施し(/etc/sysconfig/networkにGATEWAYを追加)、

[root@fc17 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 p1p1
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 p1p1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 p1p1
[root@fc17 ~]#

これで、問題なくyumが使えるようになりました。

2012年8月19日日曜日

systemdになって変わったもの

最近のFedoraではchkconfigコマンドやserviceコマンドの役割がsystemctlコマンドに引き継がれていて、使い方に慣れるのまでが結構面倒でした(何故にSolarisっぽくなった?)。

さらに(普段はSSHでしかログインしないので)ふとランレベルを変更しようと/etc/inittabを開いたところ、コメントが書かれている以外何もない状態になっていました。(Fedora17で確認、それより前のVersionではランレベルの記述だけはあったと記憶しているのですが)。
で、そのコメントに、Ctrl-Alt-Deleteを押した時の動作やランレベルの変更についてきちんと書かれており、そのコメントに従えば(具体的には以下のように実行すれば)ランレベルが変更されました。

# cd /etc/systemd/system/
# ls -l default.target
lrwxrwxrwx. 1 root root 36  6月  2 08:47 default.target -> /lib/systemd/system/runlevel5.target
# ln -f -s /lib/systemd/system/runlevel3.target  /etc/systemd/system/default.target
   ※ここで"-f"オプションを付与する事で、runlevel5.targetへ張られていたシンボリックリンクを
    強制的に上書きを行います

2012年8月12日日曜日

yumでセキュリティパッチだけを適用する

Red Hatが提供するアップデートには以下のものがある。

 ・セキュリティに関する修正      RHSA(Red Hat Security Advisory)
 ・バグに関する修正           RHBA(Red Hat Bug Fix Advisory)
 ・機能強化や追加に関する修正 RHEA(Red Hat Enhancement Advisory)

通常yum update をするとこれら全ての修正がアップデート対象になりますが、"--security"という
オプションを付与するとRHSAに関する修正だけをアップデート対象にする事ができます。

このオプションを使うと、例えばハードウェアベンダーのサポートがRHEL5.7でないと
受けれない場合、(表現の仕方が正しいかは微妙ですが)RHEL5.7をHOLDしたまま
アップデート・パッケージを適用するといった運用ができるようになっています。
#RHELでは5.1以降で利用可能
#CentOS5 or 6でも、yum-securityパッケージを導入することにより利用可能

[root@cent5 ~]# yum info yum-security
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: rsync.atworks.co.jp
 * extras: rsync.atworks.co.jp
 * updates: ftp.iij.ad.jp
Available Packages
Name       : yum-security
Arch       : noarch
Version    : 1.1.16
Release    : 21.el5.centos
Size       : 27 k
Repo       : base
Summary    : Yum plugin to enable security filters
URL        : http://linux.duke.edu/yum/download/yum-utils/
License    : GPLv2+
Description: This plugin adds the options --security, --cve, --bz and --advisory flags
           : to yum and the list-security and info-security commands.
           : The options make it possible to limit list/upgrade of packages to specific
           : security relevant ones. The commands give you the security information.
[root@cent5 ~]#

CentOSの場合、man 8 yum-securityで詳細を確認してください。

2012年8月5日日曜日

任意のタイミングでのログをローテーションする

例えば、メールログを日付が変わる0:00のタイミングでローテートし、日付をつけて保存したい場合などはないでしょうか?自分の場合、そんな時は以下のようにしています。

1.OS標準のログローテートからはずす

  メールログの場合は、/etc/logrotate.d/syslogを修正する
      →/var/log/maillogの記述を削除する

 (修正前)
 /var/log/messages /var/log/maillog /var/log/secure /var/log/spooler /var/log/boot.log /var/log/cron {


 (修正後)
 /var/log/messages /var/log/secure /var/log/spooler /var/log/boot.log /var/log/cron {

2.ログをローテートさせるスクリプトを作成する

 例)maillog-rotate.sh  (コテコテですが)
 <ここから>------------------------------------------------------------------
 #!/bin/bash
 

 PID=`cat /var/run/rsyslogd.pid`
 SRCDIR=/var/log
 DSTDIR=/var/log/postfix
 YESTERDAY=`env TZ=JST+15 date +%Y%m%d`

 # PRE ROTATE
 #
 if [ -r ${SRCDIR}/maillog ]; then
         cp -p ${SRCDIR}/maillog ${SRCDIR}/maillog.1
         cp /dev/null ${SRCDIR}/maillog
 fi

 kill -HUP ${PID}        #RECONFIG SYSLOG PROCCESS
 # POST ROTATE
 #
 mv ${SRCDIR}/maillog.1 ${DSTDIR}/maillog-${YESTERDAY}
 find /var/log/postfix -type f ! -name "*.gz" -and -mtime +7 -exec gzip {} \;

 exit 0

   <ここまで>------------------------------------------------------------------

3.cronを設定する

 0 0 * * * /usr/local/sbin/maillog-rotate.sh



以上を設定すると、こんな感じにログが保存されるようになります。

-rw-r----- 1 root logadmin   8342 Jul 24 23:55 maillog-20120724.gz
-rw-r----- 1 root logadmin   9636 Jul 25 23:59 maillog-20120725.gz
-rw-r----- 1 root logadmin   8049 Jul 26 23:59 maillog-20120726.gz
-rw-r----- 1 root logadmin   8204 Jul 27 23:58 maillog-20120727.gz
-rw-r----- 1 root logadmin  50061 Jul 28 23:54 maillog-20120728
-rw-r----- 1 root logadmin  52978 Jul 29 23:52 maillog-20120729
-rw-r----- 1 root logadmin 105343 Jul 30 23:55 maillog-20120730
-rw-r----- 1 root logadmin  51856 Jul 31 23:52 maillog-20120731
-rw-r----- 1 root logadmin  67329 Aug  1 23:56 maillog-20120801
-rw-r----- 1 root logadmin  73968 Aug  2 23:58 maillog-20120802
-rw-r----- 1 root logadmin  53923 Aug  3 23:53 maillog-20120803
-rw-r----- 1 root logadmin  33898 Aug  4 23:56 maillog-20120804