yumリポジトリが無い環境に必要なパッケージをダウンロードして持込みたい時のメモ
目次
- 目次
- 概要
- docker image のダウンロードと、コンテナの起動
- yum リポジトリの確認
- 現在のrpm リストを取得
- yum パッケージをダウンロード
- 依存関係のチェック・インストール
- rpm リストを再度取得
- この後の作業
- 参考
概要
- yumリポジトリが無い環境に、必要なパッケージをダウンロードして持ち込もうとした場合、
依存関係のあるパッケージを調べ、それを全てダウンロードするのは結構大変 - パッケージ・バージョンまでケアしようとすると、もう少し考えることはあるが、
おおよそ楽にできる方法を思いついたのでメモ - Docker でminimal install の環境を簡単に用意することで、
yum によるパッケージダウンロード、依存関係の確認、インストールの検証が簡単にできる。
docker image のダウンロードと、コンテナの起動
- ここでは oracle linux のイメージを利用
7-slim
は最低限yum が使えるだけのパッケージが入った、ほぼ minimal install されたイメージ- docker を起動する環境の CPU アーキテクチャ は、パッケージ持ち込み先の環境に合わせる
$ docker pull oraclelinux:7-slim $ docker run -it --rm -v "$PWD:/mnt" oraclelinux:7-slim
Docker Hub
Differences between oraclelinux:7 and oraclelinux:7-slim For images that want an Oracle Linux 7 user space, Oracle recommends using oraclelinux:7-slim as the base layer as it contains just enough packages for yum to be able to install more packages. The oraclelinux:7 images is based on the package set of what would be installed on a bare-metal server when performing a minimal install of Oracle Linux.
- OSバージョンの確認
$ cat /etc/os-release
yum リポジトリの確認
# yum repoinfo Loaded plugins: ovl ol7_latest | 3.6 kB 00:00:00 (1/3): ol7_latest/aarch64/group_gz | 133 kB 00:00:00 (2/3): ol7_latest/aarch64/updateinfo | 2.2 MB 00:00:00 (3/3): ol7_latest/aarch64/primary_db | 93 MB 00:00:08 Repo-id : ol7_latest/aarch64 Repo-name : Oracle Linux 7Server Latest (aarch64) Repo-revision: 1657639913 Repo-updated : Tue Jul 12 15:31:59 2022 Repo-pkgs : 17228 Repo-size : 38 G Repo-baseurl : https://yum.oracle.com/repo/OracleLinux/OL7/latest/aarch64/ Repo-expire : 21600 second(s) (last: Wed Jul 13 14:36:20 2022) Filter : read-only:present Repo-excluded: 5290 Repo-filename: /etc/yum.repos.d/oracle-linux-ol7.repo repolist: 17228
現在のrpm リストを取得
- ファイルを取得できる様、ホストのディレクトリをマウントした
/mnt
へcd
しておく
# cd /mnt # rpm -qa | sort > rpm_list_full_before.txt # rpm -qa --queryformat "%{name}.%{arch}¥n" | sort > rpm_list_name-arch_before.txt
yum パッケージをダウンロード
- ここでは java-1.8.0-openjdk と 必要な依存パッケージをダウンロード
# yum install --downloadonly --downloaddir=./ java-1.8.0-openjdk # ls acl-2.2.51-15.el7.aarch64.rpm libXext-1.3.3-3.el7.aarch64.rpm alsa-lib-1.1.8-1.el7.aarch64.rpm libXfixes-5.0.3-1.el7.aarch64.rpm ....
依存関係のチェック・インストール
# rpm --test -ivh *.rpm Preparing... ################################# [100%] # rpm -ivh *.rpm Preparing... ################################# [100%] Updating / installing... 1:libjpeg-turbo-1.2.90-8.el7 ################################# [ 1%] 2:libpng-2:1.5.13-8.el7 ################################# [ 2%] 3:freetype-2.8-14.el7_9.1 ################################# [ 3%] .... 99:java-1.8.0-openjdk-headless-1:1.8################################# [ 99%] 100:java-1.8.0-openjdk-1:1.8.0.332.b0################################# [100%]
rpm リストを再度取得
# rpm -qa | sort > rpm_list_full_after.txt # rpm -qa --queryformat "%{name}.%{arch}¥n" | sort > rpm_list_name-arch_after.txt
- 追加されたパッケージリストを確認
# grep -x -v -f rpm_list_full_before.txt rpm_list_full_after.txt > rpm_list_add.txt
この後の作業
- この後は、ダウンロードした rpm 、rpm リストファイルを目的の環境に持ち込み
- 持ち込み先の環境で取得した、rpmリストファイルと、持ち込んだリストファイルを比較
- 必要な rpm ファイルのみをインストール
参考
yum を使用して、パッケージをインストールせずにダウンロードだけ行う - Red Hat Customer Portal
以上