オフライン環境へRPMを安全に導入する方法|依存関係の注意点


掲載日:

更新日:


INFORMATION > オフライン環境へRPMを安全に導入する方法|依存関係の注意点

結論:オフライン導入では、オンライン側で対象OS・版に合うRPMと依存パッケージをまとめて取得し、署名を検証した上でDNFまたは管理されたローカルリポジトリから導入するのが安全です。

この記事の対象と位置付け:本文のPHP 5.4.16 RPMを手作業で追う例は、CentOS 7時代の仕組みを理解するための検証記録です。現在の構築手順としてそのまま実行するものではありません。

【重要:2026年時点の注意】CentOS 7とPHP 5.4はEOLです。古いミラーからRPMを1個ずつ取得してrpmで強制導入すると、依存漏れ、署名未確認、既知脆弱性、異なるOS版の混在を招きます。現行環境ではサポート中OSの公式パッケージを使用し、依存を含む取得と署名検証を行ってください。

公式情報:CentOS Linux 7のEOLRHEL 9でローカルRPMを導入する方法RHEL 9のカスタムリポジトリ管理

概要

インターネットに繋がらない環境でyumコマンドの様にインストールする方法についてです。

yumコマンドは便利ですが、インターネットに繋がらない環境では実行できません。ローカルにyumレポジトリをインストールする方法もありますが、もっと簡単にインストールする方法を紹介します。

この記事を理解する前提としてyumの仕組みをよく知らない人は以下も参照してください。

yum実行時にエラーがでる原因、そもそもyumとはどう動いているか#1-1. yumの仕組み

yumでインストールした時にどのディレクトリに何がインストールされるか調べる方法#1-1. yumはどう動いているのか

目次

  1. インターネットに繋がらない環境でインストールする方法
  2. まとめ

1. インターネットに繋がらない環境でインストールする方法

rpmファイルを使って直接インストールする方法について記載します。yumは内部的には外部サーバのrpmファイルをrpmコマンドによりインストールしていますが、このrpmファイルをサーバ上に配置してインストールする方法を説明します。

今回の例としては「yum install php」をネットに繋がらない環境での代替手段を説明したいと思います。

1-1. yumコマンドのの代替方法としてrpmコマンドで対応する方法

yumコマンドでインストールしているrpmファイルを1つずつインストールしたいと思います。

まずは、対象のrpmファイル(phpをインストールするためのrpmファイル)を取得します。以下の記事を参考に対象のRPMファイルを探してください。

yumでインストールした時にどのディレクトリに何がインストールされるか調べる方法#2-1.対象のRPMファイルを特定

上記記事を参考に調べた結果、今回インストールするファイルの格納先のファイルは「http://ftp.iij.ad.jp/pub/linux/centos/7.9.2009/os/x86_64/Packages/php-5.4.16-48.el7.x86_64.rpm」であることが分かりました。こちらのファイルをダウンロードしてソフトウェアをインストールしたいサーバに移動します。今回は「/tmp」に移動したいと思います。

ファイルをダウンロードし「/tmp」へ移動したら以下のコマンドを実行します。

[root@localhost ~]# rpm -ivh /tmp/php-5.4.16-48.el7.x86_64.rpm
エラー: 依存性の欠如:
        php-common(x86-64) = 5.4.16-48.el7 は php-5.4.16-48.el7.x86_64 に必要とされています
        php-cli(x86-64) = 5.4.16-48.el7 は php-5.4.16-48.el7.x86_64 に必要とされています

依存性の欠如のエラーが表示されています。yumの場合はこの依存関係を自動で解決してくれていますが、rpmでインストールする場合はこの依存関係を自力で解決しないといけません。

トライ&エラーとなってしまいますが、「php-5.4.16-48.el7.x86_64.rpm」を特定した様に「php-common」「php-cli」も同様に探してrpmコマンドによりインストールします。「php-common」からインストールしたいと思います。

「php-common」のrpmファイルを「/tmp」へ移動しインストールをします。

[root@localhost ~]# rpm -ivh /tmp/php-common-5.4.16-48.el7.x86_64.rpm
エラー: 依存性の欠如:
        libzip.so.2()(64bit) は php-common-5.4.16-48.el7.x86_64 に必要とされています

今度は「php-common」をインストールする前提となる「libzip」が不足しているので「libzip」をインストールします。この様な感じで足りないRPMファイルを探してインストールしていきます。

[root@localhost ~]# rpm -ivh /tmp/libzip-0.10.1-8.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:libzip-0.10.1-8.el7              ################################# [100%]
[root@localhost ~]# rpm -ivh /tmp/php-common-5.4.16-48.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:php-common-5.4.16-48.el7         ################################# [100%]
[root@localhost ~]# rpm -ivh /tmp/php-cli-5.4.16-48.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:php-cli-5.4.16-48.el7            ################################# [100%]
[root@localhost ~]# rpm -ivh /tmp/php-5.4.16-48.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:php-5.4.16-48.el7                ################################# [100%]

上記の通り、無事インストールが完了しました。結果として以下の依存関係がありました。

・libzip-0.10.1-8.el7.x86_64.rpm・・・依存関係なし

・php-common-5.4.16-48.el7.x86_64.rpm・・・「libzip-0.10.1-8.el7.x86_64.rpm」がインストールの前提として必要

・php-cli-5.4.16-48.el7.x86_64.rpm・・・「php-common-5.4.16-48.el7.x86_64.rpm」がインストールの前提として必要

・php-5.4.16-48.el7.x86_64.rpm・・・「php-cli-5.4.16-48.el7.x86_64.rpm」「php-common-5.4.16-48.el7.x86_64.rpm」がインストールの前提として必要

以下の順にインストールする必要がありました。

「libzip-0.10.1-8.el7.x86_64.rpm」⇒「php-common-5.4.16-48.el7.x86_64.rpm」⇒「php-cli-5.4.16-48.el7.x86_64.rpm」⇒「php-5.4.16-48.el7.x86_64.rpm」

3. まとめ

インターネットに繋がらない環境でyumコマンドの様にインストールする方法について記載させていただきました。

改めてyumコマンドの依存性解決の便利さが理解できました。インターネットに繋げられない環境でパッケージファイルをインストールする際に参考にしてみてください。私の場合はセキュリティの問題があるため、開発環境をインターネットに繋げられなかったため、この様な方法でyumのインストールを代替しました。

最後までご覧いただきありがとうございました。

■INFORMATION

INFORMATIONのトップページはこちらよりお願いいたします。


■PROFILE

プロフィールはこちらよりお願いいたします。


■お問い合わせ先

記事に関するお問い合わせはこちらよりお願いいたします。