7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS系 + openssl-devel 導入でてこずった件

Last updated at Posted at 2019-08-17

はじめに

環境

・Windows10 Professional バージョン1903 OSビルド18362.295
・Asianux7 SP3(試用版)※CentOS7.6相当
・VirtualBox 6.0.10
・Vagrant 2.2.5

この記事の目的

rbenv(Rubyバージョン管理システム)を導入するためにopenssl-develをインストールする必要があったのですが、依存性関連で苦労したので備忘録として残すために書きました。(ほぼ自分用)
通常のCentOSを使っている限りは遭遇しないトラブルです。

経緯的なもの

rbenvに必要なパッケージ

rbenvインストール時に必要なパッケージの一つがopenssl-develです。
※rbenvインストールについては別途記事を起こしたいと思います。

依存性エラー

普通にyum install でopenssl-develを入れようとしましたが、バージョンが合わないみたいです。

# yum -y install openssl-devel
(中略)
エラー: パッケージ: 1:openssl-devel-1.0.2k-16.el7_6.1.x86_64 (updates)
             要求: openssl-libs(x86-64) = 1:1.0.2k-16.el7_6.1
            インストール: 1:openssl-libs-1.0.2k-16.0.1.el7.AXS7.x86_64 (@anaconda/7)
                openssl-libs(x86-64) = 1:1.0.2k-16.0.1.el7.AXS7
            利用可能: 1:openssl-libs-1.0.2k-16.el7.x86_64 (base)
                openssl-libs(x86-64) = 1:1.0.2k-16.el7
            利用可能: 1:openssl-libs-1.0.2k-16.el7_6.1.x86_64 (updates)
                openssl-libs(x86-64) = 1:1.0.2k-16.el7_6.1
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest

openssl関係で入っているrpmパッケージを確認するとAsianux用に特別にパッケージングされているバージョンの様です。
openssl-libsが重要なライブラリなのですが、このバージョンが合わないとopenssl-develが入れられないみたいです。
同じ1.0.2kなのに・・・

# rpm -qa | grep openssl
openssl-1.0.2k-16.0.1.el7.AXS7.x86_64
openssl-libs-1.0.2k-16.0.1.el7.AXS7.x86_64

失敗例

openssl-libsを削除したら大変なことに

openssl-develをAsianux7sp3専用リポジトリからインストールすれば全く問題ないはずなのですが、試用版なので製品登録していません。
CentOS7用のリポジトリ―からインストールするために一旦opensslとopenssl-libsを削除すれば良いと考えました。
しかしこれは浅はかな考えでした。
良い子はマネをしてはいけません。

yumで削除してみよーん

# yum remove openssl
(あっけなく削除できる)
# yum remove openssl-libs
(他のパッケージが依存しているので「保護される」旨のメッセージが出て削除できない)

openssl-libsはいろいろなパッケージから参照されているみたいです。
例えばyumコマンドもそうです。yumも依存しているという事は・・・

rpmコマンドで削除してみよーん

今考えると恐ろしい行為です。
普通にrpm -eしても依存性チェックではねられるので、--nodepsという禁断のオプションを付けてopenssl-libsを強制的に削除してみました。
あっさり削除できました・・・

# rpm -e --nodeps openssl-libs-1.0.2k-16.0.1.el7.AXS7.x86_64

何が起こるか

yumコマンド、curlコマンド、wgetコマンド、sshコマンドなどssl通信を行うコマンドが軒並み利用不能になりました。
rpmパッケージがダウンロードできません。
scpも使えないのでこのシステムにファイル転送する手段が思い当たりません(素のftpコマンドだったらいけるかも)

リカバリ

とりあえず、vagrant環境の作り直しです。
個人的なテスト環境なので誰にも迷惑をかけなかったことは不幸中の幸いでした。
vagrantなら下の2行でもとどおり初期状態に復活します。

コマンドプロンプト
> vagrant destroy
> vagrant up

成功例

うまく行ったやりかたです。

openssl-libsはアップデートで

openssl-libsを削除すると大変なことになることを身に染みてわかったので、アップデートで行きます。

opensslの削除

これは失敗例と同じでyum remove opensslでOKです。

フォースのちから

openssl-libsのrpmファイルはターゲットのバージョンを適宜ダウンロードします。
そしてopenssl-libsを強制的にアップデートします。
「ルーク、フォースの力を信じるんだ!」

# curl -O http://ftp.riken.jp/Linux/cern/centos/7/updates/x86_64/Packages/openssl-libs-1.0.2k-16.el7_6.1.x86_64.rpm
# rpm -Uvh --force openssl-libs-1.0.2k-16.el7_6.1.x86_64.rpm

opensslとopenssl-develをインストール

# yum -y install openssl openssl-devel

インストールしたパッケージの確認

無事にopenssl-develをインストールできました。

# rpm -qa | grep openssl
openssl-devel-1.0.2k-16.el7_6.1.x86_64
openssl-libs-1.0.2k-16.el7_6.1.x86_64
openssl-1.0.2k-16.el7_6.1.x86_64

おわりに

rpmコマンドの--forceオプションについて学ぶことができました。
また下手にパッケージを消すと大変なことが起こることを身をもって体験できたのはよかったです。
冒険は個人的なテスト環境でやるようにしましょう。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?