Tuesday, October 14, 2014

Creating Local YUM Repository on RHEL 6

              အခု tutorial က တော့ ကျွန် တော်တို့ linux machine ပေါ်မှာ local repository တည် ဆောက် ခြင်းဖြစ်ပါတယ်။ အရင်ဆုံး tutorial မလုပ်ပြခင် ဘာအတွက် ကြောင့် repositories တွေကို Linux မှာ အသုံးပြုလဲ ဆိုတာကို အရင် ပြောချင်ပါတယ်။
               အရင်ဆုံး  Server side ဘက်က နေ အရင်စဉ်းစားကြည့်ရ အောင် ကျွန် တော်တို့ windows server ပေါ်မှာ services တစ်ခုခုသုံးချင်တယ် ဆိုရင် ဥပမာ server services တစ်ခုခု ပေါ့ ဒါဆို ရင် svr 2003 မှာဆိုရင် Add/Remove Programs က နေ Install လုပ်ရပြီး svr 2008/2012 မှာဆိုရင် တော့ Server Manager က ေ န ကျွန် တော်တို့ install လုပ်ကြပါတယ်။ ဒါမှမဟုတ် software တွေရင်ဆိုရင်လဲ windows ပေါ်မှာဆိုရင် ".exe" က လိုအပ်တာ တွေအကုန်လုံးကို တစ်ခါထဲ သွင်း ပေးသွားတာ ပေါ့။ဒါ ကြောင့် windows မှာဆိုရင် တော့ လိုအပ်တဲ့ files တွေမှန်သမျှက windows တင်လိုက်ကတည်းက စက်ထဲမှာ များ သောအားဖြင့် တစ်ခါထဲ ရှိသားပြီးသား ဖြစ်ပါတယ်။ ဒါ ပေမယ့် အခု ပြောမယ့် Linux OS မှာကျ တော့ ကျွန် တော်တို့ တစ်ခုခု သွင်းချင်ပြီဆိုရင် server services တွေ ပဲ ဖြစ်ဖြစ် applications တွေပဲ ဖြစ်ဖြစ် installation ပြုလုပ်ချင်ပြီဆိုရင် repositories တွေ လိုအပ်ပါတယ်။ ဒါ ကြောင့် repositories ကို တစ်နည်းအားဖြင့် Linux OS တွေအတွက် applications တွေ သွင်းနိုင်ရန် Server Services တွေ သွင်းနိုင်ရန် အတွက်ရည်ရွယ်ပြီး Internet ပေါ်မှာ Linux OS Distribution ပေါ်လိုက်ပြီး Repository Server တွေ ထားကြပါတယ်။ ထို Repo Servers တွေမှတစ်ဆင့် လိုအပ်တဲ့ services တွေကို install လုပ်ကြတာ ဖြစ်ပါတယ်။



              အခု ထိဖတ်ပြီးသွားရင် အခု tutorial ရဲ့ ရည်ရွယ်ချက်ကိုသိ လောက်ပြီလို့ထင်ပါတယ်။ ဘာလဲဆို တော့ အဓိက က  Repo Server တွေသည် Online တစ်နည်းအားဖြင့် Internet connection ရှိမှသာ မိမိစက်ထဲကို လိုအပ်တဲ့ services တွေထည့်သွင်းနိုင်မှာဖြစ်ပါတယ်။ ထို ကြောင့် ဥပမာ ကျွန် တော့်တို့ server infra ထဲမှာ local repo sever ထားခြင်းအားဖြင့် တစ်ခြား linux servers တွေလိုအပ် သော repositories များကို တစ်ခုခြင်းဆီ online တက်ရန်မလိုပဲ local ထဲမှာ ထားခြင်းဖြင့် internet bandwidth သက်သာ စေပြီး လိုအပ်တဲ့ repositories တွေကို online ပေါ်မှာ query တွေ အကြာကြီး လုပ်စရာမလိုပဲ local ထဲမှာပဲ မြန်မြန် installation လုပ်လို့ရနိုင်ခြင်း ဖြစ်ပါတယ်။ နောက် တစ်ခြား ရည်ရွယ်ချက် တွေလဲ ရှိပါ သေးတယ် အခု topic နဲ့ အနည်းငယ် ကျော်လွန် နေတဲ့အတွက် နောက်ပိုင်း topics တွေမှာ ပြောပြ ပေးပါ့မယ်။အခု Yum Local Repo ဆိုတာက တော့ ဒီ tutorial မှာ RPM Based Distros ကို အသုံးပြုမှာ ဖြစ်တဲ့အတွက် တစ်နည်း အားဖြင့် RPM Based ( CentOS, Red Hat, Fedora etc ) တွေသည် repos တွေကို အသုံးပြုရန် "yum" command ကို အသုံးပြုခြင်း ကြောင့်ဖြစ်ပါတယ်။



                အခု tutorial မှာ RHEL 6 ကိုအသုံးပြုပြီး hostname "rhel-01" က local repo server နောက် hostname "rhel-02" က client server အ နေနဲ့ ထားမှာ ဖြစ်ပါတယ်။ Perquisites အ နေနဲ့က တော့

           (1) အရင်ဆုံး red hat os iso ထဲမှ "packages" ဆို သော folder ကို copy ယူရမည်။ ထို                         packages ထဲမှာရှိ သော repos များနှင့် local repo ပြုလုပ်ရမှာ ဖြစ်ပါတယ်။



           (2) ftp services လိုပါမယ်။ တစ်ဖက်က လှမ်း ခေါ်လျှင် ftp နဲ့ repos ကိုအသုံးပြုမှာဖြစ်ပါတယ်။



           (3) local repo server ပြုလုပ်ရန် အတွက် "createrepo" ဟု ခေါ် သော services install                           ပြုလုပ်ထားရမည် ဖြစ်ပါတယ်။ ထို အချက် တွေကို အောက်မှာ ပုံ တွေနှင့် ပြထားပါတယ်။



(1) Mount ISO and copy "Packages" folder from ISO to /var/ftp/pub/localrepo


            အရင်ဆုံး rhel iso ကို virutalbox rhel-01 မှာ mount လုပ်ပြီး ထိုထဲမှ Packages folder ကို ပြ ထားတဲ့ folder path လမ်း ကြောင်းထဲသို့ copy ကူးမှာ ဖြစ်ပါတယ်။   



       
            ဒါက တော့ copy ကူးပြီး လို့  path လမ် း ကြောင်းထဲ ရောက်သွားပြီး "du" command ဖြင့် folder size ဘယ် လောက် ရှိလဲကို ပြထားတာ ဖြစ်ပါတယ်။ ထို့ နောက် localrepo ထဲဝင်ကြည့် ရင် ".rpm" files တွေကို တွေ့ရမှာ ဖြစ်ပါတယ်။       





(2) Install ftp (vsftpd) service
         
            အောက်ကပုံမှာ ftp service ကို ကျွန် တော်တို့  copy ကူးထားတဲ့ "/var/ftp/pub/localrepo" ထဲက နေ "rpm" နဲ့ installation လုပ်ထားပါတယ်။ (ps. rpm is used to install softwares as a offline mode and you mush have ".rpm" packages in your local hdd and using "yum" to install softwares need internet connection and later on our example "client machine (rhel-02)" will use "yum" to install software targeting to local repo server (rhel-01) like accessing to internet repo server.)



              

         
             နောက်တစ်ခု အ နေနဲ့ firewall မှာ "ftp service" ကို allow လုပ် ပေးရမှာ ဖြစ်ပါတယ်။ Terminal ထဲမှာ "system-config-firewall-tui" လို့ ရိုက်ပြီး "customize" မှာ "ftp service " ကို allow လုပ် ပေးရမှာဖြစ်ပါတယ်။ 


(3) Install "createrepo" package 
           
            ပုံထဲမှာ စစချင်း "createrepo*.rpm" ကို install လုပ်ရန်အတွက် အရင်ဆုံး ပုံမှာပြထားတဲ့ dependencies နှစ်ခု "deltarpm,python-deltarpm" နှစ်ခုကို အရင် install လုပ်ပြီးမှ "createrepo" ကို installation ပြုလုပ်နိုင်မှာ ဖြစ်ပါတယ်။





              ပြီးရင် တော့ createrepo ကို အသုံးပြုပြီး local repoတစ်ခု တည် ဆောက် တော့မှာ ဖြစ်ပါတယ်။ပုံထဲတွင် #createrepo -v /var/ftp/pub/localrepo ဆိုပြီး တည် ဆောက်ပါမယ်။ "createrepo" is the a tool than can creates xml rpm based metadata repositories  from a sets of rpms packages.





            ပြီးလျှင် ကျွန် တော့်တို့ local repo ကို အသုံးပြုလို့ရ အောင် "/etc/yum.repos.d" ထဲမှာ repository file တစ်ခု တည် ဆောက် ပေးရပါမယ်။ နာမည်ကို "localrepo.repo" လို့ ပေးလိုက်ပြီး ထိုအထဲမှာမှ ပုံမှာ ပြထားတဲ့အတိုင်း Name, Baseurl, gpgcheck, enabled ဆိုပြီး baseurl သည် local repo ရှိတဲ့ ပတ်လမ်း ကြောင်းကို ပြပြီး gpgcheck က တော့ တစ်ကယ့် အပြင် internet က နေဆိုရင် enable (1) ထား သင့်ပါတယ်။ gpg နဲ့ repositories တွေကို trusted ဖြစ်မဖြစ် check လုပ်တာဖြစ်ပါတယ်။ enabled=1 က တော့ ဒီrepo ကို အသုံးပြုမယ်လို့ ပြောတာဖြစ်ပါတယ်။



              အခုဆိုရင် local repo serverတစ်ခု တည် ဆောက်လိုက်ပြီးဖြစ် ပြီး softwares တွေသွင်းချင် လျှင် rpm နှင့်တစ်ခု ချင်းစီ လိုက်သွင်းစရာမလို တော့ပဲ internet က နေ သွင်းသလိုမျိုး "yum" နှင့် အသုံးပြုနိုင်မှာ ဖြစ်ပါတယ်။ နောက် အပိုင်း ဖြစ်တဲ့ client စက် "rhel-02" က နေ အသုံးပြုပြမည် ဖြစ်ပါတယ်။

               (Note: RPM Based distros တွေမှာ softwares တွေ သွင်းချင်ရင် "rpm" (or) "yum" ကို အသုံးပြုရပါတယ်။ "rpm" သည် offline mode installation ပုံစံ တစ်နည်းအားဖြင့် "*.rpm" နှင့် ဆုံး သော packages တွေကိုသာ installation လုပ်နိုင်ပြီး အကယ်ရျ် ထို package အတွက် တစ်ခြား dependencies တွေ လိုအပ်ပါက auto search မလုပ်နိုင်ပါ။"yum" command online mode installation ပုံစံ ဖြစ်သည် ဥပမာ "dhcp service" သွင်းချင်တယ်ဆိုရင် "yum install dhcp" လို့ ရိုက်လိုက်သည်နှင့် ထို package အတွက်လိုအပ် သော တစ်ခြား dependencies တွေကို ပါ internet ပေါ်မှာ search လုပ်ပြီး auto install လုပ်သွား သော ကြောင့် "yum" သည် rpm ထက် complete set installation တစ်ခုဖြစ်ပါတယ်။)


Client Side Configuration (rhel-02)
     
                   အခု "rhel-02" ကို client စက်အ နေနဲ့ ထားပြီး တစ်ဖက်မှာရှိတဲ့ repo server "rhel-01" ကို လှမ်းယူသုံးမှာ ဖြစ်ပါတယ်။ ပုံစံက တော့ "/etc/yum.repos.d" ထဲမှာ "localrepo.repo" တစ်ခု ဆောက်ပြီး "baseurl မှာ ftp://192.168.20.11(server ip)/pub/localrepo" ဆိုပြီး ညွှန် ပေးရမှာဖြစ်ပါတယ်။



          အခု နောက်ဆုံး testing အ နေနဲ့ client machine ပေါ်မှာ "createrepo" ကို rpm နှင့် installation မလုပ် တော့ပဲ "yum" command ကို အသုံးပြုပြီး local repo server က နေ လှမ်း ခေါ် သုံးခြင်းဖြစ်ပါတယ်။



            အခုချိန်မှာ အရင် "rpm" တုန်းကလို့ dependencies တွေကို တစ်ခုချင်းစီ "rpm" နှင့် install လုပ်စရာမလိုပဲ "yum" ကိုအသုံးပြုပြီး လိုအပ် သော dependencies တွေကို တစ်ခါထဲ installationလုပ် သွားမည်ဖြစ်ပါတယ်။






Share:

2 comments:

  1. create repo tools မတင္ပဲ နဲ့ ftp service နဲ့ တင္ မရဘူးလား အစ္ကုိ .. ေနာက္တစ္ခု က ftp directory path ကုိ(/var/ftp/pub/) ကုိ (/home/localrepo/) လမ္းေၾကာင္းေျပာင္းလုိ့ ရလား အစ္ကုိ..

    ReplyDelete
    Replies
    1. createrepo tool ကို အသုံးၿပုမွရပါမယ္ ​ေနာက္ localrepo က ကိုယ့္စက္ပဲ သုံးမွာဆိုရင္​ေတာ့ location ကို customize လုပ္လို့ရပါတယ္ ဒါ​ေပမယ့္ တစ္ၿခား servers ​ေတြအတြက္ပါ localrepo server လုပ္ခ်င္တယ္ဆိုရင္​ေတာ့ http (or) ftp ထားမွ ရပါမယ္။

      Delete