インターネットに繋がらないシステム内にある Linux サーバに対してパッケージ管理をするための方法です。
管理したいサーバのクローン(これはインターネットに繋ぐ)を用意して USB にローカルな yum リポジトリを作って対象の Linux サーバを更新します。CentOS 7.3 (1611) で検証しています。
準備するもの
管理サーバと別に、クローンのサーバを用意します。
クローンの OS は管理サーバに入れたものと同じディスクとインストール方法を使ってセットアップしてください。管理サーバと違ってこちらはインターネットに繋げます。
ローカルな yum リポジトリを作る
この作業は クローンサーバ のほうで行います。
管理したいサーバに install or update したいパッケージ全てに対して yum の --downloadonly オプションをつけて RPM のダウンロードのみを行います。保存先のディレクトリは USB ディスクを指定しておきます。
$ sudo yum install --downloadonly --downloaddir=<directory> <package>
$ sudo yum update --downloadonly --downloaddir=<directory> <package>
必要な RPM を全てダウンロードしたら、そのディレクトリを yum リポジトリにします。
リポジトリの作成には createrepo を使います。--simple-md-filenames
の意味は Do not include the file's checksum in the metadata filename.
ということで、私の環境ではローカルのリポジトリでチェックサムは不要なのでオプションをつけています。
$ sudo yum install createrepo
$ sudo createrepo --simple-md-filenames <directory>
ローカルな yum リポジトリからインストールする
ここからの作業は 管理したいサーバ のほうで行います。
まず USB ディスクに作ったローカルの yum リポジトリを管理サーバにマウントします。(マウントの方法は省略)
次にローカルの yum リポジトリを登録します。
$ sudo vi /etc/yum.repos.d/MyLocal.repo
MyLocal.repo は次の通りです。baseurl=<directory>
の部分はローカル yum リポジトリが /media
なら baseurl=file:///media
にします。
[my-local]
name=MyLocal
baseurl=<directory>
gpgcheck=0
enabled=1
最後に、登録したローカル yum リポジトリから必要なパッケージを install, update します。
$ sudo yum --disablerepo=* --enablerepo=my-local install <package>
$ sudo yum --disablerepo=* --enablerepo=my-local update <package>