はじめに
新しくKVMのサーバを契約したので一からサーバを構築しようとyumのinstallをしたところ、Requires: kernel-headers >= 2.2.1 のメッセージが出て失敗。
以下はgcc-c++をyumでインストールしようとした際のエラーです。
# yum install gcc-c++
~中略~
Error: Package: glibc-headers-2.17-292.el7.x86_64 (base)
Requires: kernel-headers
Error: Package: glibc-headers-2.17-292.el7.x86_64 (base)
Requires: kernel-headers >= 2.2.1
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
最小限のminimum状態からの構築なので、パッケージ類もまだほとんどインストールしていない状態で依存パッケージのエラーが出たのはなんかおかしいなと。。
実はPostfixをソースから構築しようとtarボールをダウンロードし、コンパイルしようとしたところgccが見つからないという今回のエラーが出たのが発端です。
事象
yum install gcc をすると以下の通り、kernel-headersのバージョンを上げなさいと言われてしまいました。
# yum install gcc
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cat.net
* centos-sclo-rh: mirrors.cat.net
* centos-sclo-sclo: mirrors.cat.net
* extras: mirrors.cat.net
* updates: mirrors.cat.net
Resolving Dependencies
--> Running transaction check
---> Package gcc.x86_64 0:4.8.5-39.el7 will be installed
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.5-39.el7.x86_64
--> Running transaction check
---> Package glibc-devel.x86_64 0:2.17-292.el7 will be installed
--> Processing Dependency: glibc-headers = 2.17-292.el7 for package: glibc-devel-2.17-292.el7.x86_64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.17-292.el7.x86_64
--> Running transaction check
---> Package glibc-headers.x86_64 0:2.17-292.el7 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.17-292.el7.x86_64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.17-292.el7.x86_64
--> Finished Dependency Resolution
Error: Package: glibc-headers-2.17-292.el7.x86_64 (base)
Requires: kernel-headers
Error: Package: glibc-headers-2.17-292.el7.x86_64 (base)
Requires: kernel-headers >= 2.2.1
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
#
gccはインストール済みだが、# gcc -v をするとPathが通っていない。
# rpm -qa | grep gcc
libgcc-4.8.5-39.el7.x86_64
#
# gcc -v
-bash: gcc: command not found
#
原因
/etc/yum.conf に exclude=kernel* と記述していたのが原因でした。
確かに yum update を最初に実行したのですが、kernelのバージョンが変わってしまうのは避けた方がいいのかなと思い、yum.conf内に exclude=kernel* を記述した事を失念していました。
解決方法
exclude=kernel* を一時的にコメントアウトします。
# vi /etc/yum.conf
#exclude=kernel*
# yum install gcc
~中略~
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
gcc x86_64 4.8.5-39.el7 base 16 M
Installing for dependencies:
glibc-devel x86_64 2.17-292.el7 base 1.1 M
glibc-headers x86_64 2.17-292.el7 base 687 k
kernel-headers x86_64 3.10.0-1062.12.1.el7 updates 8.7 M
Transaction Summary
==============================================================================================================
Install 1 Package (+3 Dependent packages)
Total download size: 27 M
Installed size: 44 M
Is this ok [y/d/N]: y
Downloading packages:
(1/4): glibc-headers-2.17-292.el7.x86_64.rpm | 687 kB 00:00:00
(2/4): glibc-devel-2.17-292.el7.x86_64.rpm | 1.1 MB 00:00:00
(3/4): gcc-4.8.5-39.el7.x86_64.rpm | 16 MB 00:00:02
(4/4): kernel-headers-3.10.0-1062.12.1.el7.x86_64.rpm | 8.7 MB 00:00:03
--------------------------------------------------------------------------------------------------------------
Total 8.4 MB/s | 27 MB 00:00:03
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : kernel-headers-3.10.0-1062.12.1.el7.x86_64 1/4
Installing : glibc-headers-2.17-292.el7.x86_64 2/4
Installing : glibc-devel-2.17-292.el7.x86_64 3/4
Installing : gcc-4.8.5-39.el7.x86_64 4/4
Verifying : glibc-devel-2.17-292.el7.x86_64 1/4
Verifying : gcc-4.8.5-39.el7.x86_64 2/4
Verifying : kernel-headers-3.10.0-1062.12.1.el7.x86_64 3/4
Verifying : glibc-headers-2.17-292.el7.x86_64 4/4
Installed:
gcc.x86_64 0:4.8.5-39.el7
Dependency Installed:
glibc-devel.x86_64 0:2.17-292.el7 glibc-headers.x86_64 0:2.17-292.el7
kernel-headers.x86_64 0:3.10.0-1062.12.1.el7
Complete!
#
上手くインストールできました!
yum install gcc-c++ も試してみます。
# yum install gcc-c++
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cat.net
* centos-sclo-rh: mirrors.cat.net
* centos-sclo-sclo: mirrors.cat.net
* extras: mirrors.cat.net
* updates: mirrors.cat.net
Resolving Dependencies
--> Running transaction check
---> Package gcc-c++.x86_64 0:4.8.5-39.el7 will be installed
--> Processing Dependency: libstdc++-devel = 4.8.5-39.el7 for package: gcc-c++-4.8.5-39.el7.x86_64
--> Running transaction check
---> Package libstdc++-devel.x86_64 0:4.8.5-39.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
gcc-c++ x86_64 4.8.5-39.el7 base 7.2 M
Installing for dependencies:
libstdc++-devel x86_64 4.8.5-39.el7 base 1.5 M
Transaction Summary
==============================================================================================================
Install 1 Package (+1 Dependent package)
Total download size: 8.7 M
Installed size: 25 M
Is this ok [y/d/N]: y
Downloading packages:
(1/2): libstdc++-devel-4.8.5-39.el7.x86_64.rpm | 1.5 MB 00:00:01
(2/2): gcc-c++-4.8.5-39.el7.x86_64.rpm | 7.2 MB 00:00:01
--------------------------------------------------------------------------------------------------------------
Total 7.9 MB/s | 8.7 MB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : libstdc++-devel-4.8.5-39.el7.x86_64 1/2
Installing : gcc-c++-4.8.5-39.el7.x86_64 2/2
Verifying : gcc-c++-4.8.5-39.el7.x86_64 1/2
Verifying : libstdc++-devel-4.8.5-39.el7.x86_64 2/2
Installed:
gcc-c++.x86_64 0:4.8.5-39.el7
Dependency Installed:
libstdc++-devel.x86_64 0:4.8.5-39.el7
Complete!
#
無事、インストールできました。
作業が済んだので、yum.conf を元に戻しておきます。
この際、centosも追記しておきます。
# vi /etc/yum.conf
exclude=kernel* centos*
まとめ
サーバを構築するほぼ最初の段階で yum updateをした後に kernel-headersの依存エラーが出ていたのでおかしいなと思っていたのですが、yum.conf に kernelをexcludeしていたのを忘れていたのが原因でした。
–skip-broken 等、いろいろ試してもダメだったので若干、嵌ってしまったのですが、ご参考になれば幸いです。
コメント