エンジニアブログ
こんにちは、ごえです。
最近、ある32bit対応のソフトウェアをLinux環境にインストールしようとした際に、必要なモジュールのインストール方法で迷子になりました。
特に「どのライブラリが、どのパッケージに含まれているのか」がパッと分からず苦戦。
この記事では、公式マニュアルに書かれていたライブラリ要件と、それに対応するdnfコマンドの導き方を備忘録としてまとめます。
📖 マニュアルに記載されていた要件
マニュアルには、以下のようなライブラリと、それに対応する必要なパッケージの記載がありました。
• libstdc++.so.6
• libbz2.so.1
• libuuid.so.1
• libgcc_s.so.1
• libc.so.6
(必要なライブラリを含むパッケージ)
• libstdc++-4.4 以降
• bzip2-libs-1.0 以降
• libuuid-2.17 以降
• libgcc-4.4 以降
• glibc-2.12 以降
(備考)
i686 のパッケージが必要
見習いの私「いや分かるかい。具体的なコマンドを書けコマンドを。
💡 疑問1:どんなコマンドを打てばいい?
パッケージを個別に入れるなんて経験もほとんどなかったため、非常に困難でした。
まずどんなコマンドを書けばいいのか見当もつきません。
マニュアルを読んでも「それで何をインストールすればいいのか?」が分からなかったので、先輩エンジニアに聞いて教わったのがこちらのコマンド:
dnf install glibc.i686 libstdc++.i686 libgcc.i686 bzip2-libs.i686 uuid.i686
💭 疑問2:i686ってなに?
i686 は、32bitアーキテクチャ用のパッケージを指します。
これはググればすぐ出てきました。
🛠️ 疑問3:「dnf install glibc.i686」が「glibc-2.12 以降」をインストールできる理由
数時間ググった結果、以下のような理解を得ました。
dnf install glibc.i686のコマンドの意味は、
実行環境のディストリビューションの公式リポジトリから、
指定したアーキテクチャ(今回は、i686)のglibcパッケージを「最新版」でインストールするという意味。
最新版なので、基本的にglibcのバージョンは2.12より新しくなる。
インストールした「glibc.i686」パッケージが「glibc-2.12 以降」という要件を満たしているかは、以下のコマンドで確認できます。
# rpm -q glibc.i686
出力例:
glibc-2.34-168.el9_6.14.alma.1.i686
この例では、バージョン2.34なので「glibc-2.12 以降」という要件を満たしています。
より詳細な情報は以下のコマンドで確認可能です:
↓
Installed Packages
Name : glibc
Version : 2.34
Release : 168.el9_6.14.alma.1
Architecture : i686
<略>
Available Packages
Name : glibc
Version : 2.34
Release : 168.el9_6.19
Architecture : i686
Installed Packages → サーバーにすでに入ってるパッケー
Available Packages → リポジトリ上に存在するパッケージ
バージョンは同じでもリリース項目が違うと新しさが代わる
ここまで理解するのに大量の時間を費やしました。
世の中のマニュアルは熟練者に向けて書かれているのか、読んでも分からないのが最近の怒りポイント。
もっと優しく書けと言いたい。たまに革命を起こしたくなります。
🔗 参考リンク
• Linuxパッケージのインストール方法まとめ
https://webhelp.netjapan.com/AIP/Linux/452/ja/docs/html/tips/package_install.html
「yum コマンドでパッケージをインストールする場合」
🧠 dnfコマンド導出の考え方(自分メモ)
1. マニュアルで「必要なライブラリ」と「含まれるパッケージ名、バージョン」を確認
2. パッケージ名を dnf install [パッケージ名].i686 の形式で指定
3. インストール後に rpm -q や yum info でバージョンチェック