はじめに
UBI7
をベースイメージとしてコンテナを作っている際、ubi リポジトリにないパッケージをインストールしたくなりました。
UBI7
を使う前はcentos:7
を使っており、epelなどはyum install epel-release
でいけましたが、UBIだとそうもいかず。
CentOS7 と同じようにyum を使いたかったので、いっそのことbase
やextra
など、CentOSなら標準で入っているリポジトリを設定してしまおうと思ったので、残しておきます。
UBI イメージとは
以下の記事がとても分かりやすいです。
RedHat系のディストリビューションで軽量なコンテナイメージを使うなら、UBIを使っておけば間違えないと思います。
CentOS系のイメージはどうしても容量が大きい。。
UBI7イメージの取得方法
RedHat のページで検索すると出てきます。
UBI7であれば
podman pull registry.access.redhat.com/ubi7/ubi
yumを使う上での注意点
そのままyum install <package>
とすると、RHELのリポジトリからインストールされる可能性があります。
その場合、ライセンス費用が発生するため、yum plugin のsubscription-manager
は切っておくのが無難です。
subscription-manager を切る方法1
上記の参考リンクのどちらにも載っていますが、yumに--disableplugin=subscription-manager
オプションを付ければ切れます。
ただ、こちらだと、オプションつけ忘れた際に事故るので、以下の方法の方がいいような?・・・
subscription-manager を切る方法2
/etc/yum/pluginconf.d/subscription-manager.conf
のenable
を0にする。
echo -e "[main]\nenabled=0" > /etc/yum/pluginconf.d/subscription-manager.conf
UBI7デフォルト状態のyum repolist
もちろん、CentOS系のリポジトリ はありません
yum repolist
repo id repo name
ubi-7/x86_64 Red Hat Universal Base Image 7 Server (RPMs)
ubi-7-rhah/x86_64 Red Hat Universal Base Image Atomic Host (RPMs)
ubi-7-server-extras-rpms/x86_64 Red Hat Universal Base Image 7 Server - Extras (RPMs)
ubi-7-server-optional-rpms/x86_64 Red Hat Universal Base Image 7 Server - Optional (RPMs)
ubi-server-rhscl-7-rpms/x86_64 Red Hat Software Collections RPMs for Red Hat Universal Base Image 7 Server
CentOS-Base.repo を追加する
/etc/yum.repos.d
にCentOS-Base.repo
を追加する。
# CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
ポイント
それぞれのmirrorlist
に指定しているURLのクエリストリング部分を静的に設定しています。
CentOS7 の場合、デフォルトだと$releasever
や$basearch
で指定されています。
UBI7 のデフォルトイメージで上記変数指定だと、環境変数や/etc/yum.conf
で設定しても、うまくうごいてくれませんでした。。
(yum がどうやって上記変数を扱っているか調べられていないので、ご存知の方いたら教えてください・・・)
$releasever
の部分はCentOS7であれば、7
を指定し、
$basearch
の部分は、想定利用環境がx86-64 アーキテクチャの環境なので、x86-64
を指定。
というより、ここ見る限り、x86-64
しか存在していないし、固定でも特に問題ない?・・・
$infra
は無くても大丈夫なので、なし。
追加後
CentOS-Base.repo
追加後、yum repolist
を叩くと、追加されていることがわかります。
yum repolist
repo id repo name
base CentOS-7Server - Base
extras CentOS-7Server - Extras
ubi-7/x86_64 Red Hat Universal Base Image 7 Server (RPMs)
ubi-7-rhah/x86_64 Red Hat Universal Base Image Atomic Host (RPMs)
ubi-7-server-extras-rpms/x86_64 Red Hat Universal Base Image 7 Server - Extras (RPMs)
ubi-7-server-optional-rpms/x86_64 Red Hat Universal Base Image 7 Server - Optional (RPMs)
ubi-server-rhscl-7-rpms/x86_64 Red Hat Software Collections RPMs for Red Hat Universal Base Image 7 Server
updates CentOS-7Server - Updates
これで、deltarpm
、epel-release
、initscripts
なんかもyum install
で入ります。