なんだかGoodVibes

日々の勉強メモです。

【Linux】オフラインのCentOSでパッケージをインストールする

こんにちは。
本日はオフラインのCentOS
パッケージをインストールする方法のメモです。

概要

オンラインの環境とオフラインの環境2つを用意します。

使用する環境はCentOS8です。
バージョンの確認は以下のコマンド。

$ cat /etc/redhat-release


パッケージの確認

パッケージの一覧を表示する

$ rpm -qa


パッケージの情報を表示する

$ rpm -qi パッケージ名


パッケージの名前のみの一覧を表示する

$ rpm -qa --queryformat "%{NAME}\n"


オンラインの環境での作業

パッケージのインストール

方法は2つあり、yum--downloadonlyを使うやり方と、
yumdownloaderを使うやり方があります。

yumのほうは、すでにインストール済みのものは
ダウンロードできないため、yumdownloaderを使用します。


yum-utilsがインストールされていない場合は
以下のコマンドでインストールしてください。

$ yum install yum-utils


パッケージを指定してダウンロードする場合は

$ yumdownloader パッケージ名

依存関係をダウンロードする必要がある場合はオプションで--resolveをつけます。
パッケージは、デフォルトで現在のディレクトリに保存されますが、
場所を指定したい場合は、--destdir 保存先ディレクトをつけてください。


依存関係をダウンロードして/tmp/myRepo/に保存するとしましょう。

$ yumdownloader --resolve --destdir /tmp/myRepo/ パッケージ名


複数のパッケージをダウンロードしたい場合、
上記のコマンドをパッケージごとに実行すると面倒です。
なので、ダウンロードするパッケージの名前一覧を格納したファイルを用意します。
download.listとします。
以下のコマンドを実行すると、リストに記載されたすべてのパッケージをインストールしてくれます。

$ cat ./download.list | xargs -L 1 yumdownloader --resolve --destdir /tmp/myRepo/


ローカルリポジトリを作成

createrepoを使用します。
インストールしていない場合は以下でインストール。

$ yum install createrepo

先程のダウンロード先をローカルリポジトリにします。

$ createrepo /tmp/myRepo/

これでローカルリポジトリの作成は完了です。


オフラインの環境での作業

先程作成したローカルリポジトリ
/tmp/myRepo/に持ってきます。


リポジトリを登録

yumリポジトリの登録を行います。

/etc/yum.repos.d

にファイルを追加します。

$ vim /etc/yum.repos.d/myRepo.repo

ファイルの内容は以下です。

[myRepo]
name=myRepo
baseurl=file:///tmp/myRepo
enabled=1
gpgcheck=0

今回、簡単のため署名の確認は省略しています。
設定する場合はgpgcheckを1とし、gpgkeyを追加してください。

gpgcheck=1
gpgkey=署名ファイル

以下のコマンドを実行して一覧が表示されればOKです。

$ yum --disablerepo=\* --enablerepo=myRepo list

上記コマンドは、一旦--disablerepo=\*
リポジトリを無効化し、--enablerepo=myRepoにて
今回対象にしたリポジトリのみを有効化しています。

※追記
--disablerepo、--enablerepoは複数のリポジトリを「,」で区切って
指定することが可能です。

$ yum --disablerepo=\* --enablerepo=myRepo,myRepo2 list


インストール

yumに先程の有効、無効のオプションを追加してインストール。

yum --disablerepo=\* --enablerepo=myRepo install パッケージ名

先程のダウンロードリストを使用すると簡単です。

$ cat ./download.list | xargs -L 1 yum -y --disablerepo=\* --enablerepo=myRepo install



以上です。