yumのkernel-headers依存エラーを解決(CentOS7)

CentOS7
この記事は約15分で読めます。

はじめに

新しく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 等、いろいろ試してもダメだったので若干、嵌ってしまったのですが、ご参考になれば幸いです。

­

コメント

タイトルとURLをコピーしました