اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

نحوه راه اندازی یک Repository شبکه برای نصب یا اپدیت پکیج ها

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    نحوه راه اندازی یک Repository شبکه برای نصب یا اپدیت پکیج ها

    نصب، آپدیت و حذف پکیج ها یکی از کلیدی ترین مسولیت های روزانه هر ادمینی میباشد. زمانی که یک ماشین به اینترنت متصل است تسک های بالا به آسانی و با اجرای دستورات aptitude یا apt-get یا yum و یا zypper (بسته به نوع سیستم عامل) انجام خواهند شد. همچنین شما میتوانید فایل های deb. یا rpm. را به صورت مجزا دانلود و با استفاده از dpkg یا rpm نصب کنید.
    نحوه راه اندازی ریپازیتوری لوکال




    به هر حال هنگامی که یک ماشین دسترسی به اینترنت ندارد استفاده از روش دیگری ضروریست. دلیل استفاده از متد دوم چیست؟ این دلیل ها میتواند از ذخیره پهنای باند اینترنت (جلوگیری از چندین ارتباط همزمان به بیرون) تا امن کردن این پکیج ها که به صورت local از source کامپایل (compile) میشوند ویا افزایش احتمال فراهم کردن پکیج ها به دلایل قانونی (برای مثال نرم افزاری که در بعضی از کشورها محدودیت دارد) باشد، که نمیتوانند در repository های رسمی موجود باشند.

    در این چنین مواقعی است که repository های شبکه وارد عمل میشوند و در حقیقت موضوع مرکزی پست ما میباشد.


    محیط تستی ما :
    کد PHP:
    Network Repository Server:    CentOS 7 [enp0s3192.168.0.17] - dev1
    Client Machine
    :            CentOS 6.6 [eth0192.168.0.18] - dev2 
    ریپازیتوری local




    راه اندازی یک سرور ریپازیتوری تحت شبکه (لوکال) روی CentOS 7 :

    در اولین مرحله ما باید centos 7 را به عنوان یک سرور repository با ip 192.168.0.17 و یک centos 6.6 به عنوان کلاینت نصب و کانفیگ کنیم. (تنظیمات برای open suse تقریبا یکسان مییباشد)

    برای centos 7 پست زیر را دنبال کنید که دستور العمل مرحله به مرحله از نصب centos 7 را توضیح داده است :

    آموزش نصب centos 7


    درباره ubuntu میتوانید به پست ایجاد repository اختصاصی و local در لینک زیر مراجعه کنید :

    آموزش نصب ریپازتوری لوکال (تحت شبکه داخلی) در اوبونتو و دبیان


    اولین انتخاب ما شیوه ای است که کلاینت ها به سرور repository دسترسی خواهند داشت. FTP و HTTP بیشتر مورد استفاده قرار میگیرند. ما HTTP را استفاده میکنیم با توجه به اینکه نصب آپاچی هم در انجمن منطقه لینوکسی ها موجود است، و همچنین به ما اجازه میدهد که پکیج ها را به صورت لیست و با استفاده از یک مرورگر web مشاهده کنید.

    سپس ما نیاز داریم که دایرکتوری هایی را برای ذخیره کردن پکیج های rpm. ایجاد کنیم. متعاقبا زیر دایرکتوری ها را در مسیر var/www/html/repos ایجاد خواهیم کرد. برای راحتی ممکن است بخواهیم زیر دایرکتوری های دیگر را به منظور ورژن های متفاوتی از هر distribution (البته بعدا هم میتوانیم با توجه به نیاز دایرکتوری اضافه کنیم) و حتی معماری های متفاوت 32 بیتی و 64 بیتی ایجاد کنیم.



    راه اندازی Repository :

    مهم ترین چیزی که در هنگام راه اندازی ریپازیتوری شخصی خودتان باید مورد بررسی قرار بگیرد این است که شما به میزان قابل توجهی فضای آزاد (20GB~) نیاز خواهید داشت. اگر ندارید فایل سیستم را resize کنید یا حتی بهتر است یک وسیله storage برای ریپازیتوری استفاده کنید.

    ما از ایجاد پوشه های که برای ریپازیتوری نیاز داریم شروع میکنیم :
    کد PHP:
    # mkdir -p /var/www/html/repos/centos/6/6 

    بعد از این که ساختار دایرکتوری بر روی سرور repository مان ایجاد کردیم سپس با استفاده از createrepo شروع به ایجاد دیتابیسی از پکیج ها و dependency های مربوطه میکنیم.

    اگر createrepo روی سیستم تان نصب نبود با دستور زیر آن را نصب کنید :
    کد PHP:
    # yum update && yum install createrepo 

    و سپس ایجاد دیتابیس :
    کد PHP:
    # createrepo /var/www/html/repos/centos/6/6 
    نحوه راه اندازی ریپازیتوری داخلی





    آپدیت کردن repository :

    فرض میکنیم سرور ریپازیتوری دسترسی به اینترنت دارد در نتیجه میتوانید ریپازیتوری را مجبور به دریافت آخرین آپدیت های پکیج ها به صورت آنلاین کنیم. و در صورت نداشتن دسترسی به اینترنت میتوانیم کل محتوای پکیج ها را از یک DVD نصب cenos 6.6 کپی کنیم.

    در این مقاله ما راه اول را انتخاب میکنیم. به منظور بهینه سازی سرعت دانلود یک mirror از centos 6.6 در یک مکان نزدیک به خودمان انتخاب خواهیم کرد. به لینک CentOS download mirror بروید و یکی از mirror های نزدیک به موقعیت خود را انتخاب کنید.
    آموزش راه اندازی ریپازیتوری تحت شبکه داخلی




    سپس به دایرکتوری os درون لینک highlight شده میرویم و سپس معماری مورد نظر را انتخاب میکنیم. سپس لینک را در آدرس بار کپی کرده و محتوای آن را در پوشه مشخص شده در سرور repository مان دانلود میکنیم :
    ریپازتوری لوکال داخل شبکه




    کد PHP:
    # rsync -avz rsync://centos.ar.host-engine.com/6.6/os/x86_64/ /var/www/html/repos/centos/6/6/ 

    اگر به هر دلیلی repository انتخاب شده مشکل داشت به عقب برگردید و یک ریپازیتوری دیگر انتخاب کنید.
    اکنون زمان آن رسیده که کمی استراحت کنید و به تماشای یک فیلم مورد علاقه تان بپردازید زیرا کپی کردن ریپازیتوری زمان خواهد برد.

    بعد از اینکه دانلود تمام شد میتوانید فضای اشغال شده را با استفاده از دستور زیر بررسی کنید :
    کد PHP:
    # du -sch /var/www/html/repos/centos/6/6/* 
    local repository




    در نهایت دیتابیس ریپازیتوری را آپدیت میکنیم :
    کد PHP:
    # createrepo --update /var/www/html/repos/centos/6/6 
    همچنین ممکن است شما بخواهید در مرورگر خودتان ریپازیتوری را باز کنید و دایرکتوری repos/centos/6/6 را به منظور بررسی محتوا مشاهده نمایید :
    آموزش راه اندازی ریپازیتوری تحت شبکه داخلی در centos




    و اکنون repository شما آماده است و زمان کانفیگ کلاینت رسیده است.



    کانفیگ سیستم کلاینت :

    شما میتوانید فایل های کانفیگ برای ریپازیتوری های custom را در مسیر etc/yum/repos.d اضافه کنید. در پایان نام این فایل های کانفیگ باید repo. موجود باشد. همچنین ساختار پایه یکسانی را دنبال کنند :
    کد PHP:
    [repository_name]
    Description
    URL 

    اکثرا در مسیر etc/yum.repos.d فایل های repo. دیگری نیز از قبل موجود است به منظور تست ریپازیتوری خودتان شما همچنین میتوانید آن فایل ها را پاک کنید (البته از آنجایی که ممکن است بعدا به آنها نیاز داشته باشید پیشنهاد نمیشود که این کار را انجام دهید. در حقیقت میتوانید آنها را به جای دیگری انتقال دهید) یا آنها را rename کنید همانطور که من با اضافه کردن orig. به نام هر فایل این کار را انجام دادم :
    کد PHP:
    # cd /etc/yum.repos.d
    # for i in $(ls *.repo); do mv $i $i.orig; done 
    نحوه نصب ریپازیتوری تحت شبکه لوکال در لینوکس




    در اینجا ما نام فایل کانفیگ مان را tecmint.repo انتخاب کردیم و خطوط زیر را به آن اضافه نمودیم :
    کد PHP:
    [tecmint]
    name=Example repo for Part 11 of the LFCE series on linux-zone.org/forums
    baseurl
    =http://192.168.0.17/repos/centos/6/6/
    gpgcheck=1
    gpgkey
    =http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 
    بعلاوه GPG signature-checking را برای تمامی پکیج ها در ریپازیتوریمان فعال کردیم.



    استفاده از Repository :

    به محض اینکه کلاینت به درستی کانفیگ شد شما میتوانید از دستور yum برای نصب پکیج از ریپازیتوری tecmint استفاده کنید. دستور yum info subversion به شما اطلاعاتی درباره پکیج ها میدهد که از ریپازیتوری تازه ایجاد شده دانلود میشوند :
    کد PHP:
    # yum info subversion 
    نحوه راه اندازی ریپازیتوری لوکال تحت شبکه در لینوکس




    یا میتوانید یک پکیج نصب شده موجود را نصب یا آپدیت کنید :
    کد PHP:
    # yum { install | update } package 

    برای مثال :
    کد PHP:
    # yum update && yum install subversion 
    آپدیت پکیج ها با استفاده از ریپازیتوری لوکال





    Up-to-date نگه داشتن Repository :

    همواره باید ریپازیتوری خودمان را با ریپازیتوری های آنلاین و به صورت دوره ای synchronize کنیم. میتوانیم از دستور rsync استفاده کنیم.

    rcync اجازه میدهد که دو پوشه را cynchronize کنیم. (یکی local و دیگری remote) دستور rcync را اجرا کنید تا پکیج های جدید اضافه شده به ریپازیتوری های رسمی را به ریپازیتوری local خودمان اضافه کنیم. میتوانیم از یک cronjob استفاده کنیم تا این کار به صورت اتوماتیک انجام شود. به یاد داشته باشید که cronjob را برای زمانی از روز تعریف کنید که اعمال آپدیت ها تاثیر منفی روی پهنای باند موجود نداشته باشد.

    برای مثال اگر بخواهید هر روز راس ساعت 2:30 بامداد ریپازیتوری خود را آپدیت کنید دستور زیر را در crontab قرار دهید :
    کد PHP:
    30 2 * * * rsync -avz rsync://centos.ar.host-engine.com/6.6/os/x86_64/ /var/www/html/repos/centos/6/6/ 

    نکته : مطمین شوید که دستور بالا را روی سرور centos 7 اجرا کنید تا repository خود را آپدیت نگه دارید.
    البته شما میتوانید این خط را درون یک اسکریپت قرار داده تا بتوانید تسک های پیچیده و coustomize شده قبل و بعد از اجرای آپدیت انجام دهید.


    نتیجه :

    شما نباید اهمیت یک repository شبکه یا local را از ذهن دور کنید از آنجایی که مزایایی بیشماری به همراه دارد که تا حدی در این پست عنوان شد. اگر شما بتوانید فضای دیسک را فراهم آورید قطعا راه کاری مفید و موثر برای سازمان خود پیاده سازی میکنید. تجربیات خودتان را با ما به اشتراک بگذارید.

    موفق باشید
    محمد هابیلی
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-08-2021, 05:59 PM.

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X