LoginSignup
12
11

More than 5 years have passed since last update.

インターネットに繋がらないサーバでもyumでパッケージ管理をするための方法

Last updated at Posted at 2017-10-01

インターネットに繋がらないシステム内にある 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>
12
11
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
12
11