RPMパッケージからローカルインストールをした話

D
2022-09-20
2022-09-20

おつかれさまです。Dです。

サーバーリプレイス等で古いOSから新しいOSに切り替えることってあると思うんですが
コンテンツ移動したのに500エラーになる!!!なんでやねん!!!あると思います。

エラー原因が古いモジュールが入っていない。。。よっしゃyumでインストールしたら終わりや!!!
いざするとできない。。。リポジトリどこ。。。そもそも残ってるんか。。。ってこともあると思います。

そんな時にRPMファイルを直ダウンロードしてローカルインストールをした話を備忘録を兼ねて説明します。

まず最初にモジュール無くてエラーが出ている際は以下のようなログがApacheのエラーログに出力されます。


----------------------------------------------------------------
error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory:
----------------------------------------------------------------

今回は「libstdc++-libc6.2-2.so.3」というバージョンのモジュールが無い状況と仮定します。

こちらをAlmaLinux8.6に入れていきたいと思います。

ますはyumでインストール出来るか確認してみます。


----------------------------------------------------------------
yum install libstdc++-libc6.2-2.so.3

Last metadata expiration check: 0:00:04 ago on Wed 24 Aug 2022 07:18:45 AM UTC.
No match for argument: libstdc++-libc6.2-2.so.3
Error: Unable to find a match: libstdc++-libc6.2-2.so.3
----------------------------------------------------------------

ものの見事にそんなもんねーよって言われますね。。。

ここからは根気との勝負です。
該当のモジュールがどこにあるのかを調べ尽くします。。。
(Google先生を駆使してください。)

調べ尽くしたところ、今回入れたい「libstdc++-libc6.2-2.so.3」は「compat-libstdc++-296-2.96-143.1.i686.rpm」という
RPMファイルにあることが分かりました。

該当のRPMファイルが分かればあとは該当のRPMファイルを提供しているアーカイブサイトを探します。

今回のRPMファイルは以下のURLからダウンロード可能でした。
https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/16/Everything/x86_64/os/Packages/compat-libstdc++-296-2.96-143.1.i686.rpm

インストールする前に対象のモジュールがインストールされていないことを確認します。
※何も表示されなければ未インストール。


---------------------------------------------------------------
rpm -qa | grep compat-libstdc++-296-2.96-143.1.i686
---------------------------------------------------------------

まずは任意のディレクトリにて上記のRPMファイルをダウンロードします。


----------------------------------------------------------------
wget https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/16/Everything/x86_64/os/Packages/compat-libstdc++-296-2.96-143.1.i686.rpm

--2022-08-24 07:31:59-- https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/16/Everything/x86_64/os/Packages/compat-libstdc++-296-2.96-143.1.i686.rpm
Resolving archives.fedoraproject.org (archives.fedoraproject.org)... 38.145.60.24, 38.145.60.22, 38.145.60.23
Connecting to archives.fedoraproject.org (archives.fedoraproject.org)|38.145.60.24|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 78352 (77K) [application/x-rpm]
Saving to: ‘compat-libstdc++-296-2.96-143.1.i686.rpm’

compat-libstdc++-296-2.96-143.1.i686.r 100%[============================================================================>] 76.52K 215KB/s in 0.4s

2022-08-24 07:32:01 (215 KB/s) - ‘compat-libstdc++-296-2.96-143.1.i686.rpm’ saved [78352/78352]
----------------------------------------------------------------

RPMファイルがダウンロードできました。


----------------------------------------------------------------
ls -la
-rw-r--r--. 1 root root 78352 Jul 30 2011 compat-libstdc++-296-2.96-143.1.i686.rpm
----------------------------------------------------------------

ダウンロードしたRPMファイルを指定してローカルインストールを実施します。


----------------------------------------------------------------
yum localinstall compat-libstdc++-296-2.96-143.1.i686.rpm

Last metadata expiration check: 0:17:05 ago on Wed 24 Aug 2022 07:19:59 AM UTC.
Dependencies resolved.
============================================================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================================================
Installing:
compat-libstdc++-296 i686 2.96-143.1 @commandline 77 k
Installing dependencies:
glibc i686 2.28-189.5.el8_6 baseos 2.0 M
libgcc i686 8.5.0-10.1.el8_6.alma baseos 87 k
Installing weak dependencies:
glibc-gconv-extra i686 2.28-189.5.el8_6 baseos 1.6 M

Transaction Summary
============================================================================================================================================================
Install 4 Packages

Total size: 3.7 M
Total download size: 3.6 M
Installed size: 11 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): libgcc-8.5.0-10.1.el8_6.alma.i686.rpm 2.4 MB/s | 87 kB 00:00
(2/3): glibc-2.28-189.5.el8_6.i686.rpm 30 MB/s | 2.0 MB 00:00
(3/3): glibc-gconv-extra-2.28-189.5.el8_6.i686.rpm 20 MB/s | 1.6 MB 00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 5.1 MB/s | 3.6 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : glibc-gconv-extra-2.28-189.5.el8_6.i686 1/4
Running scriptlet: glibc-gconv-extra-2.28-189.5.el8_6.i686 1/4
Running scriptlet: glibc-2.28-189.5.el8_6.i686 2/4
Installing : glibc-2.28-189.5.el8_6.i686 2/4
Running scriptlet: glibc-2.28-189.5.el8_6.i686 2/4
Installing : libgcc-8.5.0-10.1.el8_6.alma.i686 3/4
Running scriptlet: libgcc-8.5.0-10.1.el8_6.alma.i686 3/4
Installing : compat-libstdc++-296-2.96-143.1.i686 4/4
Running scriptlet: compat-libstdc++-296-2.96-143.1.i686 4/4
Verifying : glibc-2.28-189.5.el8_6.i686 1/4
Verifying : glibc-gconv-extra-2.28-189.5.el8_6.i686 2/4
Verifying : libgcc-8.5.0-10.1.el8_6.alma.i686 3/4
Verifying : compat-libstdc++-296-2.96-143.1.i686 4/4

Installed:
compat-libstdc++-296-2.96-143.1.i686 glibc-2.28-189.5.el8_6.i686 glibc-gconv-extra-2.28-189.5.el8_6.i686 libgcc-8.5.0-10.1.el8_6.alma.i686

Complete!
----------------------------------------------------------------

インストールされているか確認します。
成功です!!!


----------------------------------------------------------------
rpm -qa | grep compat-libstdc++-296-2.96-143.1.i686
compat-libstdc++-296-2.96-143.1.i686
----------------------------------------------------------------

yumでインストール出来ないモジュールもパッケージを直接指定すればインストール出来るので
古いモジュールがどうしても必要な時に手段の一つとして持っておくと良いと思います。