nullpopopoでタグ「rpm」が付けられているもの
客先のRHEL4.6(諸々のパッケージはアップデート済)とほぼ同一の環境をCentOSで構築する必要が出てきたので、とりあえずカーネルのバージョンをあわせましょうということになりました。なので、カーネルを 現状の 2.6.9-67.0.22.EL から kernel-2.6.9-78.0.1.EL にアップデートすることにします。
■■ 現状
今回利用するマシンはCentOS 4.6 (ただし、インストールメディアがCentOS 4.4 ServerCDしかなかったので、4.4から4.6へとアップデートした) です。まずは現時点でのカーネルのバージョンを確認します。
[oresama@localhost ~]$ uname -r
2.6.9-67.0.22.EL
次に、rpmパッケージとしてインストールされているカーネルを調べます。
[oresama@localhost ~]$ rpm -q kernel
kernel-2.6.9-42.EL
kernel-2.6.9-67.0.22.EL
■■ あげたいカーネルのバージョン
■ 目標
kernel-2.6.9-78.0.1
■ 探してみた
いつもの RPM Search から探します。大抵のRPMパッケージはココで探せばどうにかなりますんでw
Search results for kernel-2.6.9-78.0.1 :
Filename Distribution File size
kernel-2.6.9-78.0.1.EL.x86_64.rpm Other 13522 kB
kernel-2.6.9-78.0.1.EL.src.rpm Other 54042 kB
kernel-2.6.9-78.0.1.EL.src.rpm RedHat EL 4 54042 kB
kernel-2.6.9-78.0.1.EL.i686.rpm Other 12528 kB
Search results for kernel-2.6.9-78 :
Filename Distribution File size
kernel-2.6.9-78.EL.x86_64.rpm Other 13521 kB
kernel-2.6.9-78.EL.src.rpm Other 54049 kB
kernel-2.6.9-78.EL.src.rpm RedHat EL 4 54049 kB
kernel-2.6.9-78.EL.i686.rpm Other 12532 kB
kernel-2.6.9-78.0.1.EL.x86_64.rpm Other 13522 kB
kernel-2.6.9-78.0.1.EL.src.rpm Other 54042 kB
kernel-2.6.9-78.0.1.EL.src.rpm RedHat EL 4 54042 kB
kernel-2.6.9-78.0.1.EL.i686.rpm Other 12528 kB
今回探した中に、バイナリ形式のrpmがあったのですが、ビルドしたマシンが「Other」になっている・・・つまり、ビルドしたマシンがCentOS 4 とか RedHat EL 4 になっていないのが不安なので、ソースrpm ( SRPM ) を落としてきて自分でビルドすることにしました。
■ ダウンロード
[oresama@localhost ~]$ wget
ftp://ftp.pbone.net/mirror/ftp.redhat.com/pub/redhat/linux/updates/enterprise/4ES/en/os/SRPMS/kernel-2.6.9-78.0.1.EL.src.rpm
--08:08:33-- ftp://ftp.pbone.net/mirror/ftp.redhat.com/pub/redhat/linux/updates/enterprise/4ES/en/os/SRPMS/kernel-2.6.9-78.0.1.EL.src.rpm
=> `kernel-2.6.9-78.0.1.EL.src.rpm'
proxy.example.co.jp をDNSに問いあわせています... 10.0.4.53
proxy.example.co.jp|10.0.4.53|:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 200 OK
長さ: 55,338,333 (53M) [application/x-rpm]
0% [
]
371,882 78.79K/s ETA 14:44
■■ カーネルのビルドに必要なパッケージを導入する
■ gccの導入
[root@localhost ~]# yum install gcc
(中略)
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
gcc i386 3.4.6-9 base 4.4 M
Installing for dependencies:
cpp i386 3.4.6-9 base 1.6 M
glibc-devel i386 2.3.4-2.39 base 1.9 M
glibc-headers i386 2.3.4-2.39 base 587 k
glibc-kernheaders i386 2.4-9.1.100.EL base 695 k
Transaction Summary
=============================================================================
Install 5 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 9.2 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): glibc-kernheaders- 100% |=========================| 695 kB 00:07
(2/5): gcc-3.4.6-9.i386.r 100% |=========================| 4.4 MB 00:24
(3/5): glibc-headers-2.3. 100% |=========================| 587 kB 00:01
(4/5): cpp-3.4.6-9.i386.r 100% |=========================| 1.6 MB 00:07
(5/5): glibc-devel-2.3.4- 100% |=========================| 1.9 MB 00:10
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: cpp ######################### [1/5]
Installing: glibc-kernheaders ######################### [2/5]
Installing: glibc-headers ######################### [3/5]
Installing: glibc-devel ######################### [4/5]
Installing: gcc ######################### [5/5]
Installed: gcc.i386 0:3.4.6-9
Dependency Installed: cpp.i386 0:3.4.6-9 glibc-devel.i386 0:2.3.4-2.39
glibc-headers.i386 0:2.3.4-2.39 glibc-kernheaders.i386
0:2.4-9.1.100.EL
Complete!
■ redhat-rpm-configの導入
[root@localhost ~]# yum install redhat-rpm-config
(中略)
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
redhat-rpm-config noarch 8.0.32.1-4 base 41 k
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 41 k
Is this ok [y/N]: y
■■ rpm-buildの導入
ソースRPMからrpmを作り出すのに、rpm-buildパッケージが必要になります。
nullpopopoではよく自分でSRPMからrpmパッケージをビルドするので、何度か見たことがある作業かも知れません。
■ rpm-buildパッケージのインストール
[root@localhost ~]# yum install rpm-build
(中略)
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
rpm-build i386 4.3.3-23_nonptl base 458 k
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 458 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): rpm-build-4.3.3-23 100% |=========================| 458 kB 00:03
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: rpm-build ######################### [1/1]
Installed: rpm-build.i386 0:4.3.3-23_nonptl
Complete!
■ ビルド環境構築
[oresama@localhost ~]$ mkdir -p rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
[oresama@localhost ~]$ ll rpm/
合計 20
drwxrwxr-x 2 oresama oresama 4096 9月 11 08:18 BUILD
drwxrwxr-x 2 oresama oresama 4096 9月 11 08:18 RPMS
drwxrwxr-x 2 oresama oresama 4096 9月 11 08:18 SOURCES
drwxrwxr-x 2 oresama oresama 4096 9月 11 08:18 SPECS
drwxrwxr-x 2 oresama oresama 4096 9月 11 08:18 SRPMS
[oresama@localhost ~]$ vi .rpmmacros
%_topdir %(echo $HOME)/rpm
%_builddir %{_topdir}/BUILD
%_rpmdir %{_topdir}/RPMS
%_sourcedir %{_topdir}/SOURCES
%_specdir %{_topdir}/SPECS
%_srcrpmdir %{_topdir}/SRPMS
■■ カーネルのソースRPMのインストール
[oresama@localhost ~]$ rpm -ivh kernel-2.6.9-78.0.1.EL.src.rpm
■■ カーネルのソースRPMからRPMをビルドする
※ 注意!
カーネルに諸々のパッチを当てたりするので、相当に時間がかかります。 (っ´∀`)っ ゃー の環境では、昼飯前にビルドを開始して、15:40頃にビルドが終了しましたw
また、ディスクも4GB近く消費しますので、空き領域を充分に確認してください。
[oresama@localhost ~]$ cd rpm/SPECS/
[oresama@localhost SPECS]$ rpmbuild --ba --target i686 kernel-2.6.spec
Wrote: /home/oresama/rpm/SRPMS/kernel-2.6.9-78.0.1.EL.src.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-devel-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-smp-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-smp-devel-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-hugemem-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-hugemem-devel-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-xenU-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-xenU-devel-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-debuginfo-2.6.9-78.0.1.EL.i686.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.75321
+ umask 022
+ cd /home/oresama/rpm/BUILD
+ cd kernel-2.6.9
+ rm -rf /var/tmp/kernel-2.6.9-78.0.1.EL-root
+ exit 0
このように表示されたらOK。
■■ カーネルのアップデート
[oresama@localhost SPECS]$ cd ../RPMS/i686/
■ 今インストールされているカーネルのパッケージを確認する
[oresama@localhost i686]$ rpm -qa | grep -i kernel
kernel-2.6.9-67.0.22.EL ← 今時点で一番新しいカーネル
kernel-utils-2.4-13.1.105 ← kernel-utils
kernel-2.6.9-42.EL ← もともと入っていたカーネル
[oresama@localhost i686]$ uname -r
2.6.9-67.0.22.EL
[oresama@localhost i686]$ sudo cat /boot/grub/grub.conf
Password:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.9-67.0.22.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.0.22.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-67.0.22.EL.img
title CentOS_ServerCD (2.6.9-42.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-42.EL.img
よって、今はkernel-2.6.9-67.0.22ELで立ち上がっていることがこれでわかる。
■ パッケージのアップデート試験
依存関係のあるパッケージなどないか、確認する。
[oresama@localhost i686]$ rpm --test -ivh kernel-2.6.9-78.0.1.EL.i686.rpm
Preparing... ########################################### [100%]
依存関係のエラーなどは出てこなかった。
■ パッケージのアップデート
[oresama@localhost i686]$ su ← cdするのが面倒いので、-なしでrootになる
Password:
[root@localhost i686]# pwd
/home/oresama/rpm/RPMS/i686
[root@localhost i686]# rpm -ivh kernel-2.6.9-78.0.1.EL.i686.rpm
Preparing... ########################################### [100%]
1:kernel ########################################### [100%]
[root@localhost i686]# exit
exit
■ カーネルのバージョン確認
[oresama@localhost i686]$ rpm -qa | grep -i kernel
kernel-2.6.9-78.0.1.EL
kernel-2.6.9-67.0.22.EL
kernel-utils-2.4-13.1.105
kernel-2.6.9-42.EL
[oresama@localhost i686]$ sudo cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.9-78.0.1.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-78.0.1.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-78.0.1.EL.img
title CentOS (2.6.9-67.0.22.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.0.22.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-67.0.22.EL.img
title CentOS_ServerCD (2.6.9-42.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-42.EL.img
これで、再起動後に新しいカーネルであがってくることが期待できる。
■■ 再起動
[oresama@localhost ~]$ su -
[root@localhost ~]# reboot
■■ 再起動後の確認
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.9-78.0.1.EL #1 Thu Sep 11 08:51:50 JST 2008 i686 i686 i386 GNU/Linux
[root@localhost ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.9-78.0.1.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-78.0.1.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-78.0.1.EL.img
title CentOS (2.6.9-67.0.22.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.0.22.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-67.0.22.EL.img
title CentOS_ServerCD (2.6.9-42.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-42.EL.img
期待通り!
■■ カーネルのバージョンが勝手に上がらないようにする
yum check-updateをかけたときに、たまたまカーネルの新バージョンがリリースされていたら、せっかく客先マシンのカーネルバージョンにあわせた意味がなくなってしまいます。このため、 yumのアップデート対象からカーネルをはずすのを忘れずに!
[root@localhost ~]# cd /etc/
[root@localhost etc]# cp -p yum.conf yum.conf.2008091101
[root@localhost etc]# vi yum.conf
[main]
と
# PUT YOUR REPOS HERE OR IN separate files named file.repo
の間に、カーネルをyumのアップデート対象からはずす記述をする。
exclude=kernel*
↑
この1行を追記する。
こうすることで、「kernel」から始まるパッケージがアップデート対象から外れます。
以上で、カーネルをSRPMからビルドしてアップデートする作業は終了です。
ね、簡単でしょ?
■■ 現状
今回利用するマシンはCentOS 4.6 (ただし、インストールメディアがCentOS 4.4 ServerCDしかなかったので、4.4から4.6へとアップデートした) です。まずは現時点でのカーネルのバージョンを確認します。
[oresama@localhost ~]$ uname -r
2.6.9-67.0.22.EL
次に、rpmパッケージとしてインストールされているカーネルを調べます。
[oresama@localhost ~]$ rpm -q kernel
kernel-2.6.9-42.EL
kernel-2.6.9-67.0.22.EL
■■ あげたいカーネルのバージョン
■ 目標
kernel-2.6.9-78.0.1
■ 探してみた
いつもの RPM Search から探します。大抵のRPMパッケージはココで探せばどうにかなりますんでw
Search results for kernel-2.6.9-78.0.1 :
Filename Distribution File size
kernel-2.6.9-78.0.1.EL.x86_64.rpm Other 13522 kB
kernel-2.6.9-78.0.1.EL.src.rpm Other 54042 kB
kernel-2.6.9-78.0.1.EL.src.rpm RedHat EL 4 54042 kB
kernel-2.6.9-78.0.1.EL.i686.rpm Other 12528 kB
Search results for kernel-2.6.9-78 :
Filename Distribution File size
kernel-2.6.9-78.EL.x86_64.rpm Other 13521 kB
kernel-2.6.9-78.EL.src.rpm Other 54049 kB
kernel-2.6.9-78.EL.src.rpm RedHat EL 4 54049 kB
kernel-2.6.9-78.EL.i686.rpm Other 12532 kB
kernel-2.6.9-78.0.1.EL.x86_64.rpm Other 13522 kB
kernel-2.6.9-78.0.1.EL.src.rpm Other 54042 kB
kernel-2.6.9-78.0.1.EL.src.rpm RedHat EL 4 54042 kB
kernel-2.6.9-78.0.1.EL.i686.rpm Other 12528 kB
今回探した中に、バイナリ形式のrpmがあったのですが、ビルドしたマシンが「Other」になっている・・・つまり、ビルドしたマシンがCentOS 4 とか RedHat EL 4 になっていないのが不安なので、ソースrpm ( SRPM ) を落としてきて自分でビルドすることにしました。
■ ダウンロード
[oresama@localhost ~]$ wget
ftp://ftp.pbone.net/mirror/ftp.redhat.com/pub/redhat/linux/updates/enterprise/4ES/en/os/SRPMS/kernel-2.6.9-78.0.1.EL.src.rpm
--08:08:33-- ftp://ftp.pbone.net/mirror/ftp.redhat.com/pub/redhat/linux/updates/enterprise/4ES/en/os/SRPMS/kernel-2.6.9-78.0.1.EL.src.rpm
=> `kernel-2.6.9-78.0.1.EL.src.rpm'
proxy.example.co.jp をDNSに問いあわせています... 10.0.4.53
proxy.example.co.jp|10.0.4.53|:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 200 OK
長さ: 55,338,333 (53M) [application/x-rpm]
0% [
]
371,882 78.79K/s ETA 14:44
■■ カーネルのビルドに必要なパッケージを導入する
■ gccの導入
[root@localhost ~]# yum install gcc
(中略)
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
gcc i386 3.4.6-9 base 4.4 M
Installing for dependencies:
cpp i386 3.4.6-9 base 1.6 M
glibc-devel i386 2.3.4-2.39 base 1.9 M
glibc-headers i386 2.3.4-2.39 base 587 k
glibc-kernheaders i386 2.4-9.1.100.EL base 695 k
Transaction Summary
=============================================================================
Install 5 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 9.2 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): glibc-kernheaders- 100% |=========================| 695 kB 00:07
(2/5): gcc-3.4.6-9.i386.r 100% |=========================| 4.4 MB 00:24
(3/5): glibc-headers-2.3. 100% |=========================| 587 kB 00:01
(4/5): cpp-3.4.6-9.i386.r 100% |=========================| 1.6 MB 00:07
(5/5): glibc-devel-2.3.4- 100% |=========================| 1.9 MB 00:10
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: cpp ######################### [1/5]
Installing: glibc-kernheaders ######################### [2/5]
Installing: glibc-headers ######################### [3/5]
Installing: glibc-devel ######################### [4/5]
Installing: gcc ######################### [5/5]
Installed: gcc.i386 0:3.4.6-9
Dependency Installed: cpp.i386 0:3.4.6-9 glibc-devel.i386 0:2.3.4-2.39
glibc-headers.i386 0:2.3.4-2.39 glibc-kernheaders.i386
0:2.4-9.1.100.EL
Complete!
■ redhat-rpm-configの導入
[root@localhost ~]# yum install redhat-rpm-config
(中略)
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
redhat-rpm-config noarch 8.0.32.1-4 base 41 k
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 41 k
Is this ok [y/N]: y
■■ rpm-buildの導入
ソースRPMからrpmを作り出すのに、rpm-buildパッケージが必要になります。
nullpopopoではよく自分でSRPMからrpmパッケージをビルドするので、何度か見たことがある作業かも知れません。
■ rpm-buildパッケージのインストール
[root@localhost ~]# yum install rpm-build
(中略)
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
rpm-build i386 4.3.3-23_nonptl base 458 k
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 458 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): rpm-build-4.3.3-23 100% |=========================| 458 kB 00:03
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: rpm-build ######################### [1/1]
Installed: rpm-build.i386 0:4.3.3-23_nonptl
Complete!
■ ビルド環境構築
[oresama@localhost ~]$ mkdir -p rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
[oresama@localhost ~]$ ll rpm/
合計 20
drwxrwxr-x 2 oresama oresama 4096 9月 11 08:18 BUILD
drwxrwxr-x 2 oresama oresama 4096 9月 11 08:18 RPMS
drwxrwxr-x 2 oresama oresama 4096 9月 11 08:18 SOURCES
drwxrwxr-x 2 oresama oresama 4096 9月 11 08:18 SPECS
drwxrwxr-x 2 oresama oresama 4096 9月 11 08:18 SRPMS
[oresama@localhost ~]$ vi .rpmmacros
%_topdir %(echo $HOME)/rpm
%_builddir %{_topdir}/BUILD
%_rpmdir %{_topdir}/RPMS
%_sourcedir %{_topdir}/SOURCES
%_specdir %{_topdir}/SPECS
%_srcrpmdir %{_topdir}/SRPMS
■■ カーネルのソースRPMのインストール
[oresama@localhost ~]$ rpm -ivh kernel-2.6.9-78.0.1.EL.src.rpm
■■ カーネルのソースRPMからRPMをビルドする
※ 注意!
カーネルに諸々のパッチを当てたりするので、相当に時間がかかります。 (っ´∀`)っ ゃー の環境では、昼飯前にビルドを開始して、15:40頃にビルドが終了しましたw
また、ディスクも4GB近く消費しますので、空き領域を充分に確認してください。
[oresama@localhost ~]$ cd rpm/SPECS/
[oresama@localhost SPECS]$ rpmbuild --ba --target i686 kernel-2.6.spec
Wrote: /home/oresama/rpm/SRPMS/kernel-2.6.9-78.0.1.EL.src.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-devel-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-smp-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-smp-devel-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-hugemem-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-hugemem-devel-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-xenU-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-xenU-devel-2.6.9-78.0.1.EL.i686.rpm
Wrote: /home/oresama/rpm/RPMS/i686/kernel-debuginfo-2.6.9-78.0.1.EL.i686.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.75321
+ umask 022
+ cd /home/oresama/rpm/BUILD
+ cd kernel-2.6.9
+ rm -rf /var/tmp/kernel-2.6.9-78.0.1.EL-root
+ exit 0
このように表示されたらOK。
■■ カーネルのアップデート
[oresama@localhost SPECS]$ cd ../RPMS/i686/
■ 今インストールされているカーネルのパッケージを確認する
[oresama@localhost i686]$ rpm -qa | grep -i kernel
kernel-2.6.9-67.0.22.EL ← 今時点で一番新しいカーネル
kernel-utils-2.4-13.1.105 ← kernel-utils
kernel-2.6.9-42.EL ← もともと入っていたカーネル
[oresama@localhost i686]$ uname -r
2.6.9-67.0.22.EL
[oresama@localhost i686]$ sudo cat /boot/grub/grub.conf
Password:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.9-67.0.22.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.0.22.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-67.0.22.EL.img
title CentOS_ServerCD (2.6.9-42.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-42.EL.img
よって、今はkernel-2.6.9-67.0.22ELで立ち上がっていることがこれでわかる。
■ パッケージのアップデート試験
依存関係のあるパッケージなどないか、確認する。
[oresama@localhost i686]$ rpm --test -ivh kernel-2.6.9-78.0.1.EL.i686.rpm
Preparing... ########################################### [100%]
依存関係のエラーなどは出てこなかった。
■ パッケージのアップデート
[oresama@localhost i686]$ su ← cdするのが面倒いので、-なしでrootになる
Password:
[root@localhost i686]# pwd
/home/oresama/rpm/RPMS/i686
[root@localhost i686]# rpm -ivh kernel-2.6.9-78.0.1.EL.i686.rpm
Preparing... ########################################### [100%]
1:kernel ########################################### [100%]
[root@localhost i686]# exit
exit
■ カーネルのバージョン確認
[oresama@localhost i686]$ rpm -qa | grep -i kernel
kernel-2.6.9-78.0.1.EL
kernel-2.6.9-67.0.22.EL
kernel-utils-2.4-13.1.105
kernel-2.6.9-42.EL
[oresama@localhost i686]$ sudo cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.9-78.0.1.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-78.0.1.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-78.0.1.EL.img
title CentOS (2.6.9-67.0.22.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.0.22.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-67.0.22.EL.img
title CentOS_ServerCD (2.6.9-42.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-42.EL.img
これで、再起動後に新しいカーネルであがってくることが期待できる。
■■ 再起動
[oresama@localhost ~]$ su -
[root@localhost ~]# reboot
■■ 再起動後の確認
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.9-78.0.1.EL #1 Thu Sep 11 08:51:50 JST 2008 i686 i686 i386 GNU/Linux
[root@localhost ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.9-78.0.1.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-78.0.1.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-78.0.1.EL.img
title CentOS (2.6.9-67.0.22.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.0.22.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-67.0.22.EL.img
title CentOS_ServerCD (2.6.9-42.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-42.EL.img
期待通り!
■■ カーネルのバージョンが勝手に上がらないようにする
yum check-updateをかけたときに、たまたまカーネルの新バージョンがリリースされていたら、せっかく客先マシンのカーネルバージョンにあわせた意味がなくなってしまいます。このため、 yumのアップデート対象からカーネルをはずすのを忘れずに!
[root@localhost ~]# cd /etc/
[root@localhost etc]# cp -p yum.conf yum.conf.2008091101
[root@localhost etc]# vi yum.conf
[main]
と
# PUT YOUR REPOS HERE OR IN separate files named file.repo
の間に、カーネルをyumのアップデート対象からはずす記述をする。
exclude=kernel*
↑
この1行を追記する。
こうすることで、「kernel」から始まるパッケージがアップデート対象から外れます。
以上で、カーネルをSRPMからビルドしてアップデートする作業は終了です。
ね、簡単でしょ?
nullpopopoが動いている使える.netのVPSサーバをアップデートしました。
アップデート後は以下のとおりです。
$ uname -a
Linux hydra.bizcube.info 2.6.9-023stab046.2-smp #1 SMP Mon Dec 10 15:04:55 MSK 2007 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/redhat-release
CentOS release 5.2 (Final)
しかし、カーネルとphpはexcludeしています。
$ grep exclude /etc/yum.conf
exclude=kernel* httpd* php*
とりあえずweb/mail/db/dnsとも正常稼動しているのですが、sudoコマンドを叩くと
$ sudo ls
audit_log_user_command(): Connection refused ← ココ
anon_ftp cgi-bin dat error_docs httpdocs httpsdocs pd src subdomains web_users
bin conf deny.lst favicon.ico httpdocs.orig.tar.gz logs private statistics tmp
というように、「audit_log_user_command」関数でエラーが出てしまったのです。
sudo audit_log_user_command でググってみたらココで
Name : sudo
Product : Fedora 8
Version : 1.6.9p4
Release : 3.fc8
URL : http://www.courtesan.com/sudo/
(中略)
--------------------------------------------------------------------------------
ChangeLog:
* Mon Jan 7 2008 Peter Vrabec <[EMAIL PROTECTED]> 1.6.9p4-3
- fix complains about audit_log_user_command(): Connection
refused (#401201)
--------------------------------------------------------------------------------
と書いてあるので、 RPM Search から sudo-1.6.9p4 で検索し、ココからたどったリンクから sudo-1.6.9p4-6.fc8.i386.rpm をダウンロード。
$ wget ftp://ftp.univie.ac.at/systems/linux/fedora/updates/8/i386/sudo-1.6.9p4-6.fc8.i386.rpm
そしていざインストールをしようとしたら
$ rpm --test -Uvh sudo-1.6.9p4-6.fc8.i386.rpm
警告: sudo-1.6.9p4-6.fc8.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 4f2a6fd2
エラー: 依存性の欠如:
libcap.so.1 は sudo-1.6.9p4-6.fc8.i386 に必要とされています
依存関係のエラーが出てしまった!
では libcap.so.1 が何のパッケージに含まれているか?そしてそもそも libcap.so.1 は今までインストールされていなかったのか?と思い、調べてみました。
$ locate libcap.so.1
/lib64/libcap.so.1
/lib64/libcap.so.1.10
libcap.so.1 はインストールされています。では、どのパッケージに含まれているかを見てみましょう。
$ rpm -qf /lib64/libcap.so.1
libcap-1.10-26
$ rpm -ql libcap
/lib64/libcap.so.1
/lib64/libcap.so.1.10
/usr/sbin/execcap
/usr/sbin/getpcaps
/usr/sbin/setpcaps
/usr/sbin/sucap
/usr/share/doc/libcap-1.10
/usr/share/doc/libcap-1.10/capability.notes
/usr/share/doc/libcap-1.10/capfaq-0.2.txt
しかし、libcap パッケージに依存するパッケージは山のようにあります。
GConf2 ImageMagick ImageMagick-perl MAKEDEV SSHTerm SysVinit alsa-lib apr apr-devel apr-util apr-util-devel audit-libs-python authconfig autoconf autoconf213 automake automake17 avahi avahi-glib awstats bind bind-libs bind-utils caching-nameserver cairo chkfontpath coreutils courier-imap cpan2rpm cracklib cryptsetup-luks curl curl-devel cvs cyrus-sasl cyrus-sasl-devel dbus dbus-glib dbus-python device-mapper dhclient distcache distcache-devel docbook-dtds docbook-style-xsl drweb-base drweb-daemon drweb-qmail drweb-updater e2fsprogs e2fsprogs-devel e2fsprogs-libs esound fetchmail findutils finger-server fontconfig fontconfig-devel gcc-java gd gd-devel gettext gettext-devel ghostscript ghostscript-fonts gnome-keyring gnome-mount gnome-vfs2 gnupg gtk2 hal hicolor-icon-theme httpd httpd-devel hwdata initscripts kbd krb5-devel krb5-libs libX11-devel libXdmcp-devel libXft libXpm-devel libbonoboui libc-client libgcj libgcj-devel libglade2 libgnome libgnomecanvas libgnomeui libgsf libnotify librsvg2 libselinux libselinux-devel libselinux-python libsemanage libtool libuser libwmf libwnck libxml2-devel libxml2-python libxslt-devel logrotate lsof lynx m2crypto mailman man mcstrans mesa-libGL mesa-libGL-devel mod_perl mod_python mod_ssl module-init-tools munin-node mysql mysql-server net-snmp net-snmp-devel net-snmp-libs net-snmp-utils net-tools newt newt-devel nmap notification-daemon nscd ntp ntsysv openjade openldap openldap-devel opensp openssh openssh-clients openssh-server openssl openssl-devel openssl-perl openssl097a pam pam-devel pango passivetex passwd pciutils perl-Authen-SASL perl-DBD-MySQL perl-GSSAPI perl-IO-Socket-SSL perl-Net-Jabber perl-Net-SSLeay perl-Net-XMPP perl-SOAP-Lite perl-XML-Stream php php-cli php-imap php-mysql php-sqlite2 php5-ioncube-loader pm-utils policycoreutils portmap postgresql-libs psa psa-api psa-api-rpc psa-appvault-advancedpoll psa-appvault-anyinventory psa-appvault-autoindex psa-appvault-b2evolution psa-appvault-bbclone psa-appvault-brim psa-appvault-coppermine psa-appvault-cslh psa-appvault-docfaq psa-appvault-drupal psa-appvault-egroupware psa-appvault-gallery psa-appvault-geeklog psa-appvault-gtchat psa-appvault-joomla psa-appvault-mambo psa-appvault-mantis psa-appvault-mediawiki psa-appvault-merchant psa-appvault-moodle psa-appvault-myorgbook psa-appvault-noahclass psa-appvault-openbiblio psa-appvault-oscommerce psa-appvault-owl psa-appvault-phpads psa-appvault-phpbb psa-appvault-phpbook psa-appvault-phpbugtracker psa-appvault-phpdig psa-appvault-phpmoney psa-appvault-phpmyfamily psa-appvault-phpmyvisites psa-appvault-phpsurveyor psa-appvault-phpwebsite psa-appvault-phpwiki psa-appvault-plog psa-appvault-pmachinefree psa-appvault-postnuke psa-appvault-serendipity psa-appvault-siteframe psa-appvault-smf psa-appvault-tellme psa-appvault-tikiwiki psa-appvault-tutos psa-appvault-typo3 psa-appvault-uebimiau psa-appvault-webcalendar psa-appvault-webshopmanager psa-appvault-wordpress psa-appvault-xoops psa-appvault-xrms psa-autoinstaller psa-awstats-configurator psa-backup-manager psa-backup-manager-vz psa-courier-imap-add psa-fileserver psa-firewall psa-horde psa-hotfix3 psa-hotfix4 psa-imp psa-ingo psa-kav psa-kronolith psa-libpam-plesk psa-locale-ja-JP psa-mailman-configurator psa-manual-custom-skin-guide psa-migration-manager psa-mimp psa-mnemo psa-mod-fcgid-configurator psa-mod_fcgid psa-passwd psa-php5-configurator psa-proftpd psa-proftpd-xinetd psa-qmail psa-qmail-rblsmtpd psa-rubyrails-configurator psa-sbm3 psa-spamassassin psa-turba psa-updates psa-vpn psa-watchdog psmisc python python-devel python-elementtree python-iniparse python-sqlite python-urlgrabber quota rhpl rpm rpm-build rpm-devel rpm-libs rpm-python ruby ruby-actionmailer ruby-actionpack ruby-actionwebservice ruby-activerecord ruby-activesupport ruby-devel ruby-fcgi ruby-irb ruby-libs ruby-mysql ruby-rails ruby-rake samba samba-client samba-common samba-swat sb-publish screen sendmail sendmail-cf sendmail-devel sendmail-doc setuptool sgml-common shadow-utils spamassassin squid stunnel sudo sw-libxml2-python sysklogd sysstat talk-server tar tcpdump tcsh tetex tetex-latex tmpwatch udev urw-fonts usermode util-linux vim-enhanced vim-minimal vixie-cron vzdev vzdummy-glibc w3m webalizer wget which xinetd xml-common xmltex xmlto xorg-x11-proto-devel xorg-x11-xfs yum yum-downloadonly yum-fastestmirror yum-metadata-parser yum-utils
というわけで、sudo本体やlibcapをアップデートするよりは、sudoのバージョンを下げるのが懸命といえます。
またまた RPM Search からパッケージを探します。ここでは、元のバージョンより古いsudoのパッケージを持ってきます。今日アップデートしたバージョンのsudoはココで確認します。
$ grep sudo /var/log/yum.log
Jul 01 08:48:45 Updated: sudo.x86_64 1.6.8p12-12.el5
$ wget ftp://ftp.uni-bayreuth.de/pub/redhat.com/fedora/linux/core/updates/3/x86_64/sudo-1.6.7p5-30.3.x86_64.rpm
(nullpopopoが動いているサーバは64bitマシンなのでこのパッケージをもってきました。普通の32bitマシンの場合、i386なパッケージをもってきましょう)
そして、一度sudoをアンインストールしてから、今もってきたバージョンのsudoをインストールします。
$ sudo yum remove sudo
audit_log_user_command(): Connection refused
Loading "downloadonly" plugin
Loading "fastestmirror" plugin
Setting up Remove Process
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp
* updates: ftp.nara.wide.ad.jp
* addons: ftp.nara.wide.ad.jp
* extras: ftp.nara.wide.ad.jp
base 100% |=========================| 1.1 kB 00:00
updates 100% |=========================| 951 B 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Excluding Packages in global exclude list
Finished
Resolving Dependencies
--> Running transaction check
---> Package sudo.x86_64 0:1.6.8p12-12.el5 set to be erased
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Removing:
sudo x86_64 1.6.8p12-12.el5 installed 472 k
Transaction Summary
=============================================================================
Install 0 Package(s)
Update 0 Package(s)
Remove 1 Package(s)
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Erasing : sudo ######################### [1/1]
warning: /etc/sudoers saved as /etc/sudoers.rpmsave
Removed: sudo.x86_64 0:1.6.8p12-12.el5
Complete!
そしてインストールです。
# rpm --test -ivh sudo-1.6.7p5-30.3.x86_64.rpm
warning: sudo-1.6.7p5-30.3.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Preparing... ########################################### [100%]
# rpm -ivh sudo-1.6.7p5-30.3.x86_64.rpm
warning: sudo-1.6.7p5-30.3.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Preparing... ########################################### [100%]
1:sudo ########################################### [100%]
そして、sudoコマンドでエラーが出ないことを確認します。
$ sudo yum check-update
Loading "downloadonly" plugin
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp
* updates: ftp.nara.wide.ad.jp
* addons: ftp.nara.wide.ad.jp
* extras: ftp.nara.wide.ad.jp
base 100% |=========================| 1.1 kB 00:00
updates 100% |=========================| 951 B 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Excluding Packages in global exclude list
Finished
sudo.x86_64 1.6.8p12-12.el5 base
また、今後sudoのアップデートがされないように、excludeします。
$ cp -p /etc/yum.conf /etc/yum.conf.20080701
$ sudo vi /etc/yum.conf
ここを
exclude=kernel* httpd* php*
こうする
exclude=kernel* httpd* php* sudo*
再度yum check-updateします。
$ sudo yum check-update
Loading "downloadonly" plugin
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp
* updates: ftp.nara.wide.ad.jp
* addons: ftp.nara.wide.ad.jp
* extras: ftp.nara.wide.ad.jp
base 100% |=========================| 1.1 kB 00:00
updates 100% |=========================| 951 B 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Excluding Packages in global exclude list
Finished
sudoパッケージがexcludeされました。
以上で、sudoパッケージのダウングレードができました。
ね、簡単でしょ?
アップデート後は以下のとおりです。
$ uname -a
Linux hydra.bizcube.info 2.6.9-023stab046.2-smp #1 SMP Mon Dec 10 15:04:55 MSK 2007 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/redhat-release
CentOS release 5.2 (Final)
しかし、カーネルとphpはexcludeしています。
$ grep exclude /etc/yum.conf
exclude=kernel* httpd* php*
とりあえずweb/mail/db/dnsとも正常稼動しているのですが、sudoコマンドを叩くと
$ sudo ls
audit_log_user_command(): Connection refused ← ココ
anon_ftp cgi-bin dat error_docs httpdocs httpsdocs pd src subdomains web_users
bin conf deny.lst favicon.ico httpdocs.orig.tar.gz logs private statistics tmp
というように、「audit_log_user_command」関数でエラーが出てしまったのです。
sudo audit_log_user_command でググってみたらココで
Name : sudo
Product : Fedora 8
Version : 1.6.9p4
Release : 3.fc8
URL : http://www.courtesan.com/sudo/
(中略)
--------------------------------------------------------------------------------
ChangeLog:
* Mon Jan 7 2008 Peter Vrabec <[EMAIL PROTECTED]> 1.6.9p4-3
- fix complains about audit_log_user_command(): Connection
refused (#401201)
--------------------------------------------------------------------------------
と書いてあるので、 RPM Search から sudo-1.6.9p4 で検索し、ココからたどったリンクから sudo-1.6.9p4-6.fc8.i386.rpm をダウンロード。
$ wget ftp://ftp.univie.ac.at/systems/linux/fedora/updates/8/i386/sudo-1.6.9p4-6.fc8.i386.rpm
そしていざインストールをしようとしたら
$ rpm --test -Uvh sudo-1.6.9p4-6.fc8.i386.rpm
警告: sudo-1.6.9p4-6.fc8.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 4f2a6fd2
エラー: 依存性の欠如:
libcap.so.1 は sudo-1.6.9p4-6.fc8.i386 に必要とされています
依存関係のエラーが出てしまった!
では libcap.so.1 が何のパッケージに含まれているか?そしてそもそも libcap.so.1 は今までインストールされていなかったのか?と思い、調べてみました。
$ locate libcap.so.1
/lib64/libcap.so.1
/lib64/libcap.so.1.10
libcap.so.1 はインストールされています。では、どのパッケージに含まれているかを見てみましょう。
$ rpm -qf /lib64/libcap.so.1
libcap-1.10-26
$ rpm -ql libcap
/lib64/libcap.so.1
/lib64/libcap.so.1.10
/usr/sbin/execcap
/usr/sbin/getpcaps
/usr/sbin/setpcaps
/usr/sbin/sucap
/usr/share/doc/libcap-1.10
/usr/share/doc/libcap-1.10/capability.notes
/usr/share/doc/libcap-1.10/capfaq-0.2.txt
しかし、libcap パッケージに依存するパッケージは山のようにあります。
GConf2 ImageMagick ImageMagick-perl MAKEDEV SSHTerm SysVinit alsa-lib apr apr-devel apr-util apr-util-devel audit-libs-python authconfig autoconf autoconf213 automake automake17 avahi avahi-glib awstats bind bind-libs bind-utils caching-nameserver cairo chkfontpath coreutils courier-imap cpan2rpm cracklib cryptsetup-luks curl curl-devel cvs cyrus-sasl cyrus-sasl-devel dbus dbus-glib dbus-python device-mapper dhclient distcache distcache-devel docbook-dtds docbook-style-xsl drweb-base drweb-daemon drweb-qmail drweb-updater e2fsprogs e2fsprogs-devel e2fsprogs-libs esound fetchmail findutils finger-server fontconfig fontconfig-devel gcc-java gd gd-devel gettext gettext-devel ghostscript ghostscript-fonts gnome-keyring gnome-mount gnome-vfs2 gnupg gtk2 hal hicolor-icon-theme httpd httpd-devel hwdata initscripts kbd krb5-devel krb5-libs libX11-devel libXdmcp-devel libXft libXpm-devel libbonoboui libc-client libgcj libgcj-devel libglade2 libgnome libgnomecanvas libgnomeui libgsf libnotify librsvg2 libselinux libselinux-devel libselinux-python libsemanage libtool libuser libwmf libwnck libxml2-devel libxml2-python libxslt-devel logrotate lsof lynx m2crypto mailman man mcstrans mesa-libGL mesa-libGL-devel mod_perl mod_python mod_ssl module-init-tools munin-node mysql mysql-server net-snmp net-snmp-devel net-snmp-libs net-snmp-utils net-tools newt newt-devel nmap notification-daemon nscd ntp ntsysv openjade openldap openldap-devel opensp openssh openssh-clients openssh-server openssl openssl-devel openssl-perl openssl097a pam pam-devel pango passivetex passwd pciutils perl-Authen-SASL perl-DBD-MySQL perl-GSSAPI perl-IO-Socket-SSL perl-Net-Jabber perl-Net-SSLeay perl-Net-XMPP perl-SOAP-Lite perl-XML-Stream php php-cli php-imap php-mysql php-sqlite2 php5-ioncube-loader pm-utils policycoreutils portmap postgresql-libs psa psa-api psa-api-rpc psa-appvault-advancedpoll psa-appvault-anyinventory psa-appvault-autoindex psa-appvault-b2evolution psa-appvault-bbclone psa-appvault-brim psa-appvault-coppermine psa-appvault-cslh psa-appvault-docfaq psa-appvault-drupal psa-appvault-egroupware psa-appvault-gallery psa-appvault-geeklog psa-appvault-gtchat psa-appvault-joomla psa-appvault-mambo psa-appvault-mantis psa-appvault-mediawiki psa-appvault-merchant psa-appvault-moodle psa-appvault-myorgbook psa-appvault-noahclass psa-appvault-openbiblio psa-appvault-oscommerce psa-appvault-owl psa-appvault-phpads psa-appvault-phpbb psa-appvault-phpbook psa-appvault-phpbugtracker psa-appvault-phpdig psa-appvault-phpmoney psa-appvault-phpmyfamily psa-appvault-phpmyvisites psa-appvault-phpsurveyor psa-appvault-phpwebsite psa-appvault-phpwiki psa-appvault-plog psa-appvault-pmachinefree psa-appvault-postnuke psa-appvault-serendipity psa-appvault-siteframe psa-appvault-smf psa-appvault-tellme psa-appvault-tikiwiki psa-appvault-tutos psa-appvault-typo3 psa-appvault-uebimiau psa-appvault-webcalendar psa-appvault-webshopmanager psa-appvault-wordpress psa-appvault-xoops psa-appvault-xrms psa-autoinstaller psa-awstats-configurator psa-backup-manager psa-backup-manager-vz psa-courier-imap-add psa-fileserver psa-firewall psa-horde psa-hotfix3 psa-hotfix4 psa-imp psa-ingo psa-kav psa-kronolith psa-libpam-plesk psa-locale-ja-JP psa-mailman-configurator psa-manual-custom-skin-guide psa-migration-manager psa-mimp psa-mnemo psa-mod-fcgid-configurator psa-mod_fcgid psa-passwd psa-php5-configurator psa-proftpd psa-proftpd-xinetd psa-qmail psa-qmail-rblsmtpd psa-rubyrails-configurator psa-sbm3 psa-spamassassin psa-turba psa-updates psa-vpn psa-watchdog psmisc python python-devel python-elementtree python-iniparse python-sqlite python-urlgrabber quota rhpl rpm rpm-build rpm-devel rpm-libs rpm-python ruby ruby-actionmailer ruby-actionpack ruby-actionwebservice ruby-activerecord ruby-activesupport ruby-devel ruby-fcgi ruby-irb ruby-libs ruby-mysql ruby-rails ruby-rake samba samba-client samba-common samba-swat sb-publish screen sendmail sendmail-cf sendmail-devel sendmail-doc setuptool sgml-common shadow-utils spamassassin squid stunnel sudo sw-libxml2-python sysklogd sysstat talk-server tar tcpdump tcsh tetex tetex-latex tmpwatch udev urw-fonts usermode util-linux vim-enhanced vim-minimal vixie-cron vzdev vzdummy-glibc w3m webalizer wget which xinetd xml-common xmltex xmlto xorg-x11-proto-devel xorg-x11-xfs yum yum-downloadonly yum-fastestmirror yum-metadata-parser yum-utils
というわけで、sudo本体やlibcapをアップデートするよりは、sudoのバージョンを下げるのが懸命といえます。
またまた RPM Search からパッケージを探します。ここでは、元のバージョンより古いsudoのパッケージを持ってきます。今日アップデートしたバージョンのsudoはココで確認します。
$ grep sudo /var/log/yum.log
Jul 01 08:48:45 Updated: sudo.x86_64 1.6.8p12-12.el5
$ wget ftp://ftp.uni-bayreuth.de/pub/redhat.com/fedora/linux/core/updates/3/x86_64/sudo-1.6.7p5-30.3.x86_64.rpm
(nullpopopoが動いているサーバは64bitマシンなのでこのパッケージをもってきました。普通の32bitマシンの場合、i386なパッケージをもってきましょう)
そして、一度sudoをアンインストールしてから、今もってきたバージョンのsudoをインストールします。
$ sudo yum remove sudo
audit_log_user_command(): Connection refused
Loading "downloadonly" plugin
Loading "fastestmirror" plugin
Setting up Remove Process
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp
* updates: ftp.nara.wide.ad.jp
* addons: ftp.nara.wide.ad.jp
* extras: ftp.nara.wide.ad.jp
base 100% |=========================| 1.1 kB 00:00
updates 100% |=========================| 951 B 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Excluding Packages in global exclude list
Finished
Resolving Dependencies
--> Running transaction check
---> Package sudo.x86_64 0:1.6.8p12-12.el5 set to be erased
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Removing:
sudo x86_64 1.6.8p12-12.el5 installed 472 k
Transaction Summary
=============================================================================
Install 0 Package(s)
Update 0 Package(s)
Remove 1 Package(s)
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Erasing : sudo ######################### [1/1]
warning: /etc/sudoers saved as /etc/sudoers.rpmsave
Removed: sudo.x86_64 0:1.6.8p12-12.el5
Complete!
そしてインストールです。
# rpm --test -ivh sudo-1.6.7p5-30.3.x86_64.rpm
warning: sudo-1.6.7p5-30.3.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Preparing... ########################################### [100%]
# rpm -ivh sudo-1.6.7p5-30.3.x86_64.rpm
warning: sudo-1.6.7p5-30.3.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Preparing... ########################################### [100%]
1:sudo ########################################### [100%]
そして、sudoコマンドでエラーが出ないことを確認します。
$ sudo yum check-update
Loading "downloadonly" plugin
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp
* updates: ftp.nara.wide.ad.jp
* addons: ftp.nara.wide.ad.jp
* extras: ftp.nara.wide.ad.jp
base 100% |=========================| 1.1 kB 00:00
updates 100% |=========================| 951 B 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Excluding Packages in global exclude list
Finished
sudo.x86_64 1.6.8p12-12.el5 base
また、今後sudoのアップデートがされないように、excludeします。
$ cp -p /etc/yum.conf /etc/yum.conf.20080701
$ sudo vi /etc/yum.conf
ここを
exclude=kernel* httpd* php*
こうする
exclude=kernel* httpd* php* sudo*
再度yum check-updateします。
$ sudo yum check-update
Loading "downloadonly" plugin
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp
* updates: ftp.nara.wide.ad.jp
* addons: ftp.nara.wide.ad.jp
* extras: ftp.nara.wide.ad.jp
base 100% |=========================| 1.1 kB 00:00
updates 100% |=========================| 951 B 00:00
addons 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Excluding Packages in global exclude list
Finished
sudoパッケージがexcludeされました。
以上で、sudoパッケージのダウングレードができました。
ね、簡単でしょ?
