OL 6.5 64bit (x86_64) をインストールしたところ、デフォルトで
UEK R3 がインストールされ、デフォルトの起動カーネルの選択も UEK です。
[root@oel65-base-64 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
[root@oel65-base-64 ~]# uname -a
Linux oel65-base-64 3.8.13-16.2.1.el6uek.x86_64 #1 SMP Thu Nov 7 17:01:44 PST 2013 x86_64 x86_64 x86_64 GNU/Linux
YUM リポジトリ設定ファイルに変な変数を発見。
YUMリポジトリ設定の enabled には、通常 0(無効) か 1(有効)が入ります。
しかし、OL6.5 の /etc/yum.repos.d/public-yum-ol6.repo を見たところ、
「public_ol6_UEK_latest」という最新の UEK のリポジトリでは「$uek」、
「public_ol6_UEKR3_latest」という最新の UEK R3 のリポジトリでは「$uekr3」という
YUMの組み込み変数ではないと思われる 変数が使用されています。
[root@oel65-base-64 yum.repos.d]# cat -n /etc/yum.repos.d/public-yum-ol6.repo
(省略)
43 [public_ol6_u5_base]
44 name=Oracle Linux $releasever Update 5 installation media copy ($basearch)
45 baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/5/base/$basearch/
46 gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
47 gpgcheck=1
48 enabled=0
49
50 [public_ol6_UEK_latest]
51 name=Latest Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
52 baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/latest/$basearch/
53 gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
54 gpgcheck=1
55 enabled=$uek
56
57 [public_ol6_UEKR3_latest]
58 name=Unbreakable Enterprise Kernel Release 3 for Oracle Linux $releasever ($basearch)
59 baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/$basearch/
60 gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
61 gpgcheck=1
62 enabled=$uekr3
(省略)
これはYUMの カスタム変数 として設定されています。
Redhatのサイトですが・・・
Red Hat Enterprise Linux 6 導入ガイド
6.3.3. Yum 変数の使用
https://access.redhat.com/site/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Using_Yum_Variables.html
カスタム変数の定義、既存の変数値の上書きを行うには、/etc/yum/vars/ ディレクトリ内に変数と同じ名前を持つファイルを作成して (「$」 記号はなし) 、1 行目に希望する値を追加します。
この変数については、下記にも説明がありました。
Oracle Linux Release Notes for Release 6 Update 5
3.2.2 About Public Yum
http://docs.oracle.com/cd/E37670_01/E50738/html/ol_opkg_rn64.html#ol_pubyum_rn64
このカスタム変数は、下記のファイルで設定されています。
ULN に登録していない状態でのデフォルトは、
$uek が 0 (無効)で、$uekr3 が 1 (有効)でした。
UEK は、R3 のリポジトリの方だけ public-yum.oracle.com に見に行くようになっています。
また、OL を ULN に登録すると、両方とも 0 (無効)になり
公開リポジトリの方は見に行かなくなるようです。
[root@oel65-base-64 ~]# ls -l /etc/yum/vars/
合計 8
-rw-r--r--. 1 root root 2 12月 30 07:34 2013 uek
-rw-r--r--. 1 root root 2 12月 30 07:34 2013 uekr3
[root@oel65-base-64 ~]# cat /etc/yum/vars/uek
0
[root@oel65-base-64 ~]# cat /etc/yum/vars/uekr3
1
ただ、このファイルは RPM パッケージに所属していないように見えます。
[root@oel65-base-64 ~]# rpm -qf /etc/yum/vars/uek
ファイル /etc/yum/vars/uek はどのパッケージにも属していません。
[root@oel65-base-64 ~]# rpm -qf /etc/yum/vars/uekr3
ファイル /etc/yum/vars/uekr3 はどのパッケージにも属していません。
UEK の YUM カスタム変数はいつ設定されているのか
YUM リポジトリの設定をしている、public-yum-ol6.repo ファイルは
rhn-client-tools という RPM パッケージに含まれていました。
パッケージ名は uln-~ではなく rhn-~ ですが、
説明文は「Unbreakable Linux Network」になっています。
[root@oel65-base-64 ~]# rpm -qf /etc/yum.repos.d/public-yum-ol6.repo
rhn-client-tools-1.0.0.1-16.0.2.el6.noarch
[root@oel65-base-64 ~]# rpm -qi rhn-client-tools-1.0.0.1-16.0.2.el6.noarch
Name : rhn-client-tools Relocations: (not relocatable)
Version : 1.0.0.1 Vendor: Oracle America
Release : 16.0.2.el6 Build Date: 2013年11月26日 12時03分04秒
Install Date: 2013年12月30日 07時34分03秒 Build Host: ca-build44.us.oracle.com
Group : System Environment/Base Source RPM: rhn-client-tools-1.0.0.1-16.0.2.el6.src.rpm
Size : 2821874 License: GPLv2
Signature : RSA/8, 2013年11月26日 12時03分10秒, Key ID 72f97b74ec551f03
URL : https://fedorahosted.org/spacewalk
Summary : Support programs and libraries for Unbreakable Linux Network
Description :
Unbreakable Linux Network Client Tools provides programs and libraries to allow your
system to receive software updates from Unbreakable Linux Network.
このパッケージの SPEC ファイル(RPM の情報や作成するときの処理を記載する)を見てみると、
カスタム変数のファイル作成は %post(ファイルをインストールした後の処理)で記載されていました。
そのため、RPM ではこのファイルが管理されてい(-qf では拾えない)ようです。
SPEC ファイルを見るために、
ソースファイルの RPM (~.src.rpm)を下記からDLしてインストールしてみます。
http://public-yum.oracle.com/repo/OracleLinux/OL6/5/base/x86_64/root ユーザでインストールすると、/root/rpmbuild 配下に
ソースファイルや、パッチファイル、SPECファイルなどが配置されます。
[root@oel65-base-64 ~]# rpm -ivh rhn-client-tools-1.0.0.1-16.0.2.el6.src.rpm
1:rhn-client-tools ########################################### [100%]
下記のパッチで repo ファイルに $uek や $uekr3 の変数を書いていました。
[root@oel65-base-64 ~]# cat /root/rpmbuild/SOURCES/uekr3.patch
diff -ruN rhn-client-tools-1.0.0.1.orig/src/up2date_client/public-yum-ol6.repo rhn-client-tools-1.0.0.1/src/up2date_client/public-yum-ol6.repo
--- rhn-client-tools-1.0.0.1.orig/src/up2date_client/public-yum-ol6.repo 2013-11-14 07:22:39.087090504 -0800
+++ rhn-client-tools-1.0.0.1/src/up2date_client/public-yum-ol6.repo 2013-11-14 07:25:18.197063897 -0800
@@ -52,7 +52,14 @@
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/latest/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
gpgcheck=1
-enabled=1
+enabled=$uek
+
+[public_ol6_UEKR3_latest]
+name=Unbreakable Enterprise Kernel Release 3 for Oracle Linux $releasever ($basearch)
+baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/$basearch/
+gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
+gpgcheck=1
+enabled=$uekr3
[public_ol6_UEK_base]
name=Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
--- rhn-client-tools-1.0.0.1.orig/src/bin/rhn_check.py 2013-11-14 07:22:39.087090504 -0800
+++ rhn-client-tools-1.0.0.1/src/bin/rhn_check.py 2013-11-14 07:25:18.197063897 -0800
@@ -87,6 +87,8 @@
for file in files:
if "public-yum" in file and "disabled" not in file:
file = os.path.join(root, file)
+ os.system("echo 0 > /etc/yum/vars/uek")
+ os.system("echo 0 > /etc/yum/vars/uekr3")
os.system("sed -i 's/enabled=1/enabled=0/' %s" % file)
# orabug 16979442: do not rename public yum repo file, only disable channels at registration with ULN
# os.system("mv %s %s-disabled" % (file, file))
そしてこのパッチは、適用するパッチとして SPECファイルに記載されています。
[root@oel65-base-64 ~]# cat -n /root/rpmbuild/SPECS/rhn-client-tools.spec | grep -C10 "uekr3.patch"
31 #Patch14: rhn-client-tools-1.0.0.1-14-el6-to-rhn-client-tools-1.0.0.1-15-el6.patch
32 #Patch15: rhn-client-tools-1.0.0.1-15-el6-to-rhn-client-tools-1.0.0.1-16-el6.patch
33
34 Patch100: uln.patch
35 Patch101: uln-po.patch
36 Patch102: public-yum-norename.patch
37 Patch103: delete-RHNS-CA-CERT.patch
38 Patch104: uln-file.patch
39 Patch105: Bug17760765-donot-disapper-subscription-review.patch
40 Patch106: pubyum-u5.patch
41 Patch107: uekr3.patch
42
43 URL: https://fedorahosted.org/spacewalk
44 Name: rhn-client-tools
45 Version: 1.0.0.1
46 Release: 16.0.2%{?dist}
47 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
48 BuildArch: noarch
49 %if 0%{?suse_version}
50 BuildRequires: update-desktop-files
51 %endif
そして、SPEC ファイルの 下記のあたりで YUM のカスタム変数のファイルを作成していました。
/etc/yum/vars/uek と /etc/yum/vars/uekr3 を、環境によって 値を変更して作成しています。
[root@oel65-base-64 ~]# cat -n /root/rpmbuild/SPECS/rhn-client-tools.spec
(省略)
239 %post -n rhn-setup
240 arch=`uname -m`
241 if [ "x${arch}x" == "xx86_64x" ] ; then
242 echo 0 > /etc/yum/vars/uek
243 echo 1 > /etc/yum/vars/uekr3
244 else
245 echo 1 > /etc/yum/vars/uek
246 echo 0 > /etc/yum/vars/uekr3
247 fi
248 if [ -e /etc/sysconfig/rhn/systemid ];then
249 for i in `ls /etc/yum.repos.d/public-yum*.repo`;do
250 sed -i 's/enabled=1/enabled=0/' $i
251 # do not rename the public-yum*.repo file
252 # mv $i $i-disabled
253 done
254 echo 0 > /etc/yum/vars/uek
255 echo 0 > /etc/yum/vars/uekr3
256 fi
257 # eventually rename ol6_ channels to public_ol6_ in public_yum*.repo
258 for i in `ls /etc/yum.repos.d/public-yum*.repo`;do
259 sed -i 's/^\[ol6_/\[public_ol6_/' $i
260 done
(省略)
たとえば、YUM のリポジトリ設定をスクリプトなどで変更したいときに、
/etc/yum.repos.d 配下のファイルの中身を編集するよりも
/etc/yum/vars 配下のファイルを編集するだけの方が簡単な気がします。
そんなときは YUM のカスタム変数を使うと便利かもしれないと思いました。
以上、UEK リポジトリ設定の YUM カスタム変数についてでした。
0 件のコメント:
コメントを投稿