Tuesday, October 1, 2019

Understanding new structure of repositories in RHEL/CentOS8

                          အခု article ကတော့ RHEL/CentOS8 မှာအသစ်ပါ ဝင်လာတဲ့ repository တွေဖြစ်တဲ့ BaseOS Repo နဲ့ Appstream Repo တို့အကြောင်းဖြစ်ပါတယ်။ Repositories တွေကိုဘယ်လိုအသုံးပြုလဲ နားလည်ချင်ရင် ကျွန်တော်အရင်ကရေးထားတဲ့  https://www.rootofinfo.com/2014/10/creating-local-yum-repository-on-rhel-6.html ဒီလင့်ကနေ ဖတ်နိုင်ပါတယ်။
                           ကျွန်တော်တို့ အရင် RHEL/CentOS7 မှာ packages တွေကို အခုလိုမျိုး BaseOS and Appstream ရယ်လို့ သတ်သတ်ခွဲမထားပဲ အကုန်လုံးကို တစ်ပေါင်းထဲ ထားပြီးသုံးတဲ့ ပုံစံမျိုးဖြစ်ပါတယ်။ အခု RHEL/CentOS8 မှာတော့ ခွဲပြီး သတ်မှတ်ထားတာကိုတွေ့ရပါတယ်။ အရင်ဆုံး အောက်ပုံမှာ ISO media ကနေ default ပါဝင်လာတဲ့  RHEL/CentOS 7 and 8 package structure ကို compare လုပ်ပြထားပါတယ်။ RHEL/CentOS7 မှာ packages တွေအားလုံးက Packages directory အောက်မှာ ရှိပြီးတော့ RHEL/CentOS8 မှာတော့ သတ်သတ်စီ ခွဲထုတ်လိုက်တာဖြစ်ပါတယ်။








So, What is BaseOS Repo?
                   BaseOS repo, တစ်နည်းအားဖြင့် system-related repo က OS တစ်ခုအတွက် လိုအပ်တဲ့ packages တွေကိုထောက်ပံ့ပေးထားတဲ့ repo ဖြစ်ပါတယ်။ BaseOS repo ထဲမှာ အများအားဖြင့် System တစ်ခုအတွက်လိုအပ်တဲ့ packages တွေ ဥပမာ system administration ပိုင်းအတွက် လိုအပ်တဲ့ lvm packages, network manager, firewalld, grub2 etc..စတဲ့ packages တွေပါဝင်ပါတယ်။

How about Appstream Repo?
                Appstream repo ကျတော့ နားလည်လွယ်အောင်ပြောရရင် system တစ်ခုပေါ်မှာ အသုံးပြုမယ့် application-related packages တွေရှိမယ် ဥပမာ postgres, ruby, php, nodejs စတဲ့ application တွေကို သတ်သတ် system-related repo ဖြစ်တဲ့ BaseOS နဲ့မရောတော့ပဲ appstream repo ထဲမှာ ထားထားတာဖြစ်ပါတယ်။ အဲ့တော့ Appstrem Repo ရဲ့ တည်ဆောက်ပုံကို ရှင်းပြချင်ပါတယ်။ Appstream Repo မှာ individual rpm type packages တွေအပြင် module type လို့ခေါ်တဲ့ package ဆိုပြီး နှစ်မျိုးပါဝင်ပါတယ်။
Individual rpm packages တွေဆိုတာက dependencies တွေမလိုပဲ package ၁ခုထဲနဲ့ installation လုပ်လို့ရတဲ့ အမျိုးအစားတွေဖြစ်ပါတယ်။

Module Type Package
Module ဆိုတာက  application တစ်ခုရဲ့ သတ်ဆိုင်ရာ packages တွေတစ်စုထဲ ပေါင်းထားတာကို ခေါ်ပါတယ်။ ပြောချင်တာက module ထဲမှာ main application package နှင့်အတူ တစ်ခြား ပတ်သတ်တဲ့ dependencies packages တွေကိုပါ တစ်ပေါင်းထဲ ပါဝင်တာကို module တစ်ခု လို့ သတ်မှတ်တာ ဖြစ်ပါတယ်။ ၎င်း module ထဲမှာ မှ "stream" and "profile" ဆိုပြီး ထပ်ခွဲသွားပါတယ်။

"Stream"
Stream ဆိုတာကျတော့ application တစ်ခုရဲ့ version ဥပမာ postgresql version 9 or 10 ဆိုပြီး သတ်မှတ်ပေးထားတာကို stream လို့ခေါ်ပါတယ်။

"Profile"
Profile ဆိုတာကတော့ တစ်ချို့ application တွေမှာ Type အမျိုးမျိုးရှိတယ် application package ကို install လုပ်တဲ့အခါ server type လား client type လား သို့မဟုတ် minimal or development type etc.. install လုပ်ချင်တာလား အဲ့ဒီ profile အပေါ်မူတည်ပြီး ခွဲခြားနိုင်အောင် သတ်မှတ်ထားတာဖြစ်ပါတယ်။

အခုလိုမျိုး module တွေနဲ့ ခွဲထားတဲ့အခါ မိမိ အသုံးပြုချင်တဲ့ package က ဘယ် version ကိုသုံးမလဲ နောက်ပြီး

အောက်ပုံမှာ #yum module info postgresql ဆိုပြီး ရိုက်လိုက်တဲ့အခါ "postgresql" module နှစ်ခု ပြပေးမှာဖြစ်ပြီး module တစ်ခုချင်းမှာ "postgresql" ရဲ့ stream (version) ကဘယ်လောက် သူ့ profile မှာ "server" or "client" type available ရှိတယ်ဆိုတဲ့အကြောင်း ကိုပြပေးမှာဖြစ်ပါတယ်။




အခုထိပြောခဲ့ သမျှကတော့ RHEL/CentOS8 မှာ format အသစ်တစ်မျိုးအနေနဲ့ပါဝင်လာတဲ့ new repository structure အကြောင်းပဲဖြစ်ပါတယ်။ အောက်မှာဆက်ပြီးတော့ အခု structure ပြောင်းထားတဲ့ repositories တွေကို အသုံးပြုဖို့   #yum module command အကြောင်း အနည်းငယ် ထပ်ပြောထားပါတယ်။

"YUM" is now Version 4
RHEL/CentOS8 မှာ yum version 4 ကိုအသုံးပြုထားပါတယ်။ yum သည် default package manager tool  အနေနဲ့ မဟုတ်တော့ပဲ fedora မှာ သုံးတဲ့ "dnf" က default ဖြစ်လာပါတယ်။ ဒါပေမယ့် yum command ကို dnf နဲ့ alias လုပ်ထားတဲ့အတွက် ဆက်လက်အသုံးပြုလို့ရမှာဖြစ်ပြီး back-end မှာတော့ dnf က support လုပ်ပေးထားတာဖြစ်ပါတယ်။

#yum module list
Appstream repo မှာရှိတဲ့ available modulesတွေကို ကြည့်ချင်ရင် အသုံးပြုပါတယ်။



 #yum mode info postgresql
Package တစ်ခုနှင့် ပတ်သတ်ပြီး detail ကြည့်ချင်ရင် အသုံးပြုပါတယ်။




#yum module install postgresql:9.6/server
အခု command ကတော့ postgresql မှာ version 10 and 9 ဆိုပြီး ရှိတဲ့ထဲက version 9 ကို installation လုပ်တာဖြစ်ပါတယ်။ အခုလိုမျိုး မသတ်မှတ်ရင် version 10 က default အနေနဲ့ install လုပ်သွားမှာဖြစ်ပါတယ်။

#yum module disable/enable postgresql
postgresql update version တွေ မလိုအပ်ဘူးဆိုရင် module disable command နဲ့ လုပ်လို့ရပါတယ်။ #yum module info နဲ့ကြည့်ရင် stream: မှာ [x] ဖြစ်နေတာက disable လုပ်ထားလို့ဖြစ်ပါတယ်။ Specific module ကို disable လုပ်ချင်ရင်တော့ #yum module disable postgresql:9.6 ဆိုပြီး အသုံးပြုနိုင်ပါတယ်။



#yum module remove postgresql
postgresql module ကို remove လုပ်ချင်ရင်အသုံးပြုပါတယ်။ #yum module remove postgresql:9.6/server ဆိုပြီးလဲ version အလိုက် သွင်းထား ရင် remove လုပ်နိုင်ပါတယ်။




Advantages of using Appstream Repo
Appstream Repo ကိုအသုံးပြုခြင်းက မိမိနဲ့အဆင်ပြေတဲ့ application version အလိုက်အသုံးပြုနိုင်ပြီး ဥပမာ postgresql 9.6 ကိုအသုံးပြုထားတဲ့သူက postgresql version 10 ထွက်လာရင်တောင် လက်ရှိ module ဖြစ်တဲ့ version 9 ကို ဆက်လက်အသုံးပြုနိုင်ပြီး version 9 နဲ့ ပတ်သတ်တဲ့ update တွေကို version 10 သို့ upgrade လုပ်စရာမလိုပဲ ဆက်လက်ရရှိပြီး အသုံးပြုနိုင်မှာဖြစ်ပါတယ်။

That's it. Thanks and Enjoy Reading!!! :) 
Follow and Like the Root OF Info Page.




Share:

0 comments:

Post a Comment