こんにちは。
本日はオフラインの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/
に持ってきます。
リポジトリを登録
/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
以上です。