How to mirroring to ULN repository on OL6 ?
한국은 별로 이슈가 없는데,
글로벌에서는 Oracle Unbreakable Linux Network ( 이하 ULN ) 에서 제공하는 패키지관리를
미러링하여 내부에서 사용하는 환경이 많다.
이를 위해 오라클에서는 ULN 에 등록된 서버프로파일에 yum server 로 사용하는지 확인하여
해당 채널 패키지를 미러링하는 서비스도 제공하고 있는데, 간단하게 해당 방법을 알아보도록 하겠다.
1. Prerequisuites
- Oracle Linux 6 (x86_64) or later
- linux.oracle.com 와 linux-update.oracle.com 에 http/https 접근이 가능해야 한다.
- 당연하게도 Oracle Linux CSI (customer support identifier).
- ULN site 에 등록된 Oracle SSO ID
- 메타데이터 생성을 위한 최소 2G 이상의 공간과 6G 이상의 RAM
- Package 들을 저장하기 위한 충분한 저장공간
2. Yum server 를 ULN system 에 등록한다. Root user 로 아래 명령 실행.
# uln_register
3. 실행 후 나타나는 다이얼로그에 따라 SSO login 과 CSI 를 입력하고 서버 프로파일을 생성 및 등록한다.
4. ULN site 로 접속해서 등록한 서버를 Yum server 로 체크한다.
ULN site -> Login -> System -> Click "server name" -> Edit -> Edit Properties -> check "yum server" -> Apply Change
5. Download/Install "uln-yum-mirror" package on addon channel ( yum or ULN site )
uln-yum-mirror-0.3.0-5.el6.noarch.rpm ( Public-yum donwload link )
가장 최신의 패키지를 사용하는 것을 권장한다.
실질적인 OL8 지원은 가장 최신버젼인 이 버전 부터 가능하기 때문이다.
6. Mirror 하고자 하는 채널 ( 레포지토리 ) 확인 및 등록 (OL6 에서 OL8 레포지토리를 등록하는 예제이다 )
[root@mirr-test ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.10 (Santiago)
[root@mirr-test ~]# uln-channel -l
ol6_x86_64_UEKR3_latest
ol6_x86_64_UEK_latest
ol6_x86_64_latest
[root@mirr-test ~]# uln-channel -a -c ol8_x86_64_baseos_latest
Username: mirr.lee@oracle.com
Password:
[root@mirr-test ~]# uln-channel -l
ol6_x86_64_UEKR3_latest
ol6_x86_64_UEK_latest
ol6_x86_64_latest
ol8_x86_64_appstream
ol8_x86_64_baseos_latest
ol8_x86_64_developer_UEKR6
ol8_x86_64_ksplice
ol8_x86_64_u0_baseos_base
ol8_x86_64_u1_baseos_base
7. Repository 위치 생성 ( /etc/sysconfig/uln-yum-mirror 에서 수정가능하다 )
# mkdir /var/www/html/yum
# chkconfig httpd on
# service httpd start
HTTP/HTTPS 접속에 대한 방화벽 오픈이 필요하다.
8. "uln-yum-mirror" 명령을 수행하면 채널의 패키지들을 싱크하고 repository data 를 생성한다.
[root@mirr-test ~]# uln-yum-mirror
## 20200205150137 BEGIN PROCESSING ol8_x86_64_baseos_latest ##
Channel Dir: /var/www/html/yum/OracleLinux/OL8/baseos/latest/x86_64
Loaded plugins: fastestmirror, refresh-packagekit, rhnplugin
This system is receiving updates from ULN.
Loading mirror speeds from cached hostfile
[ol8_x86_64_baseos_latest: 1 of 3492 ] Skipping existing getPackage/ModemManager-1.8.0-1.el8.x86_64.rpm
[ol8_x86_64_baseos_latest: 2 of 3492 ] Skipping existing getPackage/ModemManager-1.10.4-1.el8.x86_64.rpm
[[[ Snip ]]]
[ol8_x86_64_u1_baseos_base: 1638 of 1642 ] Skipping existing getPackage/zlib-1.2.11-10.el8.x86_64.rpm
[ol8_x86_64_u1_baseos_base: 1639 of 1642 ] Skipping existing getPackage/zlib-1.2.11-10.el8.i686.rpm
[ol8_x86_64_u1_baseos_base: 1640 of 1642 ] Skipping existing getPackage/zlib-devel-1.2.11-10.el8.i686.rpm
[ol8_x86_64_u1_baseos_base: 1641 of 1642 ] Skipping existing getPackage/zlib-devel-1.2.11-10.el8.x86_64.rpm
[ol8_x86_64_u1_baseos_base: 1642 of 1642 ] Skipping existing getPackage/zsh-5.5.1-6.el8.x86_64.rpm
Spawning worker 0 with 1642 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
Wrote: /var/www/html/yum/OracleLinux/OL8/1/baseos/base/x86_64/repodata/updateinfo.xml.gz
type = updateinfo
location = repodata/d999f5db63b946ce2db4b6fd64e95e99d6de5e17-updateinfo.xml.gz
checksum = d999f5db63b946ce2db4b6fd64e95e99d6de5e17
timestamp = 1580882531.71
open-checksum = a6b8f019ada013b9ddf31a602c3917aa7a8e0e8a
Wrote: /var/www/html/yum/OracleLinux/OL8/1/baseos/base/x86_64/repodata/repomd.xml
## 20200205150317 END PROCESSING ol8_x86_64_u1_baseos_base ##
## 20200205150317 START HARDLINK PROCESSING ##
Hard linking Statistics:
Directories : 44
Regular files : 16409
Comparisons : 0
Hardlinked this run : 0
Total hardlinks : 3321
Bytes saved this run : 0 (0 bytes)
Total bytes saved : 2093106782 (1.949 gibibytes)
Total run time : 3.07802891731 seconds
## 20200205150320 END HARDLINK PROCESSING ##
9. Client 설정
단순히 yum repository 설정에 미러 주소를 추가해 주면 된다.
[root@Mirr-OL8 ~]# cat /etc/yum.repos.d/oracle-linux-ol8.repo
[ol8_baseos_latest]
name=Oracle Linux $releasever BaseOS Latest ($basearch)
baseurl=https://yum$ociregion.oracle.com/repo/OracleLinux/OL8/baseos/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=0
[ol8_appstream]
name=Oracle Linux $releasever Application Stream ($basearch)
baseurl=https://yum$ociregion.oracle.com/repo/OracleLinux/OL8/appstream/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=0
[ol8_baseos_latest_mirror]
name=Oracle Linux $releasever BaseOS Latest Mirror ($basearch)
baseurl=http://10.179.118.28/yum/OracleLinux/OL8/baseos/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
[ol8_appstream_latest_mirror]
name=Oracle Linux $releasever BaseOS Latest Mirror ($basearch)
baseurl=http://10.179.118.28/yum/OracleLinux/OL8/appstream/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
사용하지 않는 repository 는 disable 해 준다.
10. repository 확인
[root@Mirr-OL8 ~]# yum repolist
Last metadata expiration check: 0:02:21 ago on Thu 06 Feb 2020 12:07:33 AM KST.
repo id repo name status
ol8_appstream_latest_mirror Oracle Linux 8 BaseOS Latest Mirror (x86_64) 8,442
ol8_baseos_latest_mirror Oracle Linux 8 BaseOS Latest Mirror (x86_64) 3,489
11. uln-yum-mirror 명령어는 파이선으로 작성되어있으며,
아래 네개의 과정을 수행해주는 all-in-one command 이다.
reposync, createrepo, modifyrepo, yum-arch
reposync 시 혹시 OL8 의 경우 gpg error 가 나타날 수 있는데, 다음 workaround 를 적용한다.
reposync -g -l -m -p $REP_PATH -r $LABEL $REPOSYNC_EXTRA_ARGS $SRCARG
를 찾아 아래와 같이 바꿔준다.
reposync -l -m -p $REP_PATH -r $LABEL $REPOSYNC_EXTRA_ARGS $SRCARG
- Appendix.
Repository Label 과 필요 공간:
- 끝