tomy_125: Note

tomy_125 の個人的なメモ

yumリポジトリが無い環境に必要なパッケージをダウンロードして持込みたい時のメモ

目次

概要

  • 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 リポジトリの参照先を確認
  • 変更の必要があれば、/etc/yum.repo/ のファイルを編集
# 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 リストを取得

  • ファイルを取得できる様、ホストのディレクトリをマウントした /mntcd しておく
# 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

この後の作業

  • この後は、ダウンロードした rpmrpm リストファイルを目的の環境に持ち込み
  • 持ち込み先の環境で取得した、rpmリストファイルと、持ち込んだリストファイルを比較
  • 必要な rpm ファイルのみをインストール

参考

yum を使用して、パッケージをインストールせずにダウンロードだけ行う - Red Hat Customer Portal

以上