نحوه ی پیاده سازی Repository لینوکس درون سازمانی: همانطور که می دانید برای انواع سیستم عامل های خانواده گنو لینوکس تعداد بسیار زیادی نرم افزار کوچک و بزرگ وجود دارد که در قالب بسته های نرم افزاری (package) کوچک با یکدیگر ترکیب می شوند و نرم افزار بزرگی را به وجود می آورند. این بسته ها معمولا در مخازن نرم افزار (Repository) ذخیره می شوند و کاربر برای نصب بسته ها و نرم افزارها می بایست این مخازن را به سیستم عامل خود اضافه کند و پس از آن با استفاده از نرم افزارهای مدیریت بسته (Package manager) اقدام به نصب نرم افزارها کند. این مخازن که برای هر توزیع لینوکسی (distribution) متفاوت است عملیات نصب بسته ها را ساده تر و امن تر می کنند، به دلیل اینکه مخازن رسمی هر توزیع لینوکسی از روال های تست کارکرد و امنیت خاصی بهره می برند معمولا می توان تمامی بسته های قرار گرفته در این مخازن را امن و تست شده قلمداد کرد.
شما می توانیداز سیستم عامل لینوکس برای نصب و راه اندازی Voip استفاده کنید.
به طور مثال توزیع Ubuntu چهار مخزن اصلی رسمی دارد که کارکرد هر کدام بدین شرح است:
- Main – بسته های پشتیبانی شده توسط شرکت Canonical که آزاد و متن باز هستند
- Universe – بسته های پشتیبانی شده توسط جامعه کاربری اوبونتو که آزاد و متن باز هستند
- Restricted – راه انداز (driver) های اختصاصی و غیر آزاد برای برخی از دستگاه ها ( سخت افزار ها و… )
- Multiverse – بسته های محافظت شده توسط قانون کپی رایت
بسیاری از نرم افزارها را می توان با استفاده از 4 مخزن بالا در اوبونتو نصب کرد اما ممکن است نرم افزارها یا بسته هایی مورد نیاز باشد که به دلایل مختلف در مخازن رسمی یافت نشوند. این دلایل می تواند شامل موارد زیر باشد:
- بسته نرم افزاری از نظر مسائل حقوقی و کپی رایت با سیاست های مخازن رسمی در تضاد باشد.
- آخرین نسخه بسته نرم افزاری موردنظر به دلیل فرآیند تست کارکرد و امنیت مخازن رسمی با تاخیر در مخازن منتشر شود.
- فرآیند قرارگیری بسته نرم افزاری در مخازن رسمی زمان بر است و ممکن است ناشر نرم افزار برای این امر اقدام نکرده باشد.
برای دسترسی به بسته هایی که در مخازن رسمی یافت نمی شوند می توان از Personal Package Archive (که به اختصار به آن PPA می گویند) استفاده کرد. این آرشیوهای نرم افزاری توسط ناشر اصلی نرم افزارها در اختیار عموم قرار می گیرد تا با اضافه کردن آدرس آن ها در تنظیمات مدیر بسته (Package Manager) از مزایای نصب و بروزرسانی ساده تر بهره مند شوند.
مزیت استفاده از PPA نسبت به نصب مستقیم نرم افزارها توسط فایل deb یا rpm مسئله بروزرسانی نرم افزار است. درصورتی که نرم افزار توسط فایل های اجرایی مانند Deb یا rpm نصب گردد، امکان بروزرسانی خودکار آن توسط مدیر بسته (Package Manager) وجود ندارد و لازم است کاربر به صورت دستی اقدام نماید.
چرا باید از مخازن محلی استفاده کرد؟
راه اندازی یک Repository در شبکه محلی (LAN) سازمان باعث می شود سرورهایی که اینترنت ندارند یا به اصطلاح Air-Gapped هستند به مخازن نصب نرم افزارها و آپدیت بسته ها دسترسی داشته باشند. همچنین راه اندازی Repository به صرفه جویی در پهنای باند اینترنت و کاهش حجم مصرفی اینترنت کمک شایانی می کند و به دلیل قرارگیری مخازن محلی در داخل شبکه LAN امکان دانلود و آپدیت بسته ها با سرعت بسیار بالاتری مهیا می شود.
راه اندازی مخازن محلی برای سیستم عامل های گنو لینوکس از با استفاده از روش های مختلفی قابل انجام است که در این آموزش روش apt-mirror توضیح داده شده است که مناسب سیستم عامل های Debian و Ubuntu است.
مشخصات سرور پیشنهادی برای راه اندازی مخازن محلی برای توزیع اوبونتو:
- تعداد 2 عدد vCPU
- میزان 4 گیگابایت فضای RAM
- حداقل 200 گیگابایت فضای ذخیره سازی برای هر توزیع لینوکس (Distro) که قصد میزبانی دارید
- سیستم عامل Ubuntu Server 18.04 LTS در این آموزش مورد استفاده قرار گرفته است.
به طور کلی برای راه اندازی مخازن محلی توزیع اوبونتو لازم است تمام بسته های رسمی را دانلود کنیم و از طریق یک یا چند پروتکل اشتراک فایل آن ها را برای استفاده سرورها و کامپیوترهای داخل شبکه محلی به اشتراک بگذاریم:
قدم اول: باید وب سرور Apache را نصب و کانفیگ کنیم تا با استفاده از این وب سرور بسته های نرم افزاری دانلود شده را به اشتراک بگذاریم:
sudo apt install apache2 -y
وب سرور آپاچی می بایست پس از ریستارت سرور به صورت اتوماتیک راه اندازی شود:
sudo systemctl enable apache2
لازم است که یک دایرکتوری جدید بسازیم که پکیج های دانلود شده مخازن را داخل آن ذخیره کنیم و از طریق وب سرور در دسترس مصرف کننده قرار بگیرد. همچنین لازم است که کاربر www-data نسبت به دایرکتوری دسترسی Owner داشته باشد:
sudo mkdir -p /var/www/html/ubuntu
sudo chown www-data:www-data /var/www/html/ubuntu
در قدم بعدی می بایست بسته apt-mirror که مسئول دانلود بسته ها از مخازن مورد نظر است را نصب کنیم:
sudo apt install apt-mirror
بهتر است قبل از اقدام برای انجام تنظیمات apt-mirror از فایل کانفیگ آن نسخه پشتیبان تهیه کنیم:
sudo cp /etc/apt/mirror.list /etc/apt/mirror.list.backup
برای انجام تغییرات در فایل کانفیگ با استفاده از VIM یا nano فایل کانفیگ را باز می کنیم:
sudo vim /etc/apt/mirror.list
و پارامتر set base_path را منطبق با دایرکتوری ذخیره سازی بسته ها که در مراحل قبل ایجاد کردیم قرار می دهیم:
در این مرحله لازم است در فایل mirrors.list مخازنی که قصد دارید نسخه محلی آن ها را نگهداری کنید را به صورت لیست بنویسید، برای ایجاد این لیست می توانید از قالب زیر کمک بگیرید:
############# config ##################
set base_path /var/www/html/ubuntu
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads 20
set _tilde 0
############# end config ##############
#——————————Ubuntu18-bionic—————————————————
deb-i386 http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu bionic-security main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu bionic-security main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu bionic-updates main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu bionic-updates main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu bionic-proposed main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu bionic-proposed main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu bionic-backports main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu bionic-backports main restricted universe multiverse
deb-amd64 http://security.ubuntu.com/ubuntu bionic-security main restricted
deb-amd64 http://security.ubuntu.com/ubuntu bionic-security universe
deb-amd64 http://security.ubuntu.com/ubuntu bionic-security multiverse
deb-i386 http://security.ubuntu.com/ubuntu bionic-security main restricted
deb-i386 http://security.ubuntu.com/ubuntu bionic-security universe
deb-i386 http://security.ubuntu.com/ubuntu bionic-security multiverse
deb-src http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu bionic-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu bionic-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu bionic-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu bionic-backports main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse
deb-src http://security.ubuntu.com/ubuntu bionic-security universe
deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted
#——————————Ubuntu20-Focal—————————————————-
deb-i386 http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu focal-security main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu focal-security main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu focal-proposed main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu focal-proposed main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
deb-amd64 http://security.ubuntu.com/ubuntu focal-security main restricted
deb-amd64 http://security.ubuntu.com/ubuntu focal-security universe
deb-amd64 http://security.ubuntu.com/ubuntu focal-security multiverse
deb-i386 http://security.ubuntu.com/ubuntu focal-security main restricted
deb-i386 http://security.ubuntu.com/ubuntu focal-security universe
deb-i386 http://security.ubuntu.com/ubuntu focal-security multiverse
deb-src http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu focal-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu focal-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu focal-security multiverse
deb-src http://security.ubuntu.com/ubuntu focal-security universe
deb-src http://security.ubuntu.com/ubuntu focal-security main restricted
clean http://archive.ubuntu.com/ubuntu
clean http://security.ubuntu.com/ubuntu
دقت داشته باشید در قالب بالا از توزیع های اوبونتو 18.04 و 20.04 پشتیبانی شده و فایل های منبع بسته ها و نسخه 32 بیتی و 64 بیتی بسته ها نیز دانلود می شوند.
پس از هر بار بروزرسانی مخزن ساخته شده، لازم است اسکریپتی اجرا شود که بسته های منقضی شده را پاک کند. لذا می بایست اسکریپت postmirror.sh به دایرکتوری var منتقل شود:
sudo mkdir -p /var/www/html/ubuntu/var
sudo cp /var/spool/apt-mirror/var/postmirror.sh /var/www/html/ubuntu/var/
در قدم بعدی می بایست با استفاده از apt-mirror دستور دانلود بسته ها و Sync شدن مخزن ایجاد شده را صادر کنیم:
sudo apt-mirror
وابسته به پهنای باند اینترنت ممکن است دانلود بسته ها ساعت ها زمان نیاز داشته باشد و حجمی معادل 500 گیگابایت را برای دو توزیع دانلود شود. در این مرحله راه اندازی مخازن محلی توزیع اوبونتو تمام شده است، اما برای اینکه مخزن ایجاد شده به صورت مرتب آپدیت شود لازم است با استفاده تعریف CronJob مخزن را آپدیت کنیم:
sudo crontab -e
لازم است Cronjob مورد نیاز برای آپدیت مخزن در ساعت 3 بامداد را تنظیم کنیم تا مخزن محلی ساخته شده به صورت روزانه بروزرسانی گردد:
00 03 * * * /usr/bin/apt-mirror
در این مرحله با موفقیت Repository مورد نیاز آماده گردیده است و لازم است با استفاده از کلاینت های مختلف تست شود.
نحوه استفاده از مخازن محلی (LOCAL REPOSITORY) در توزیع اوبونتو 18.04 و 20.04 :
برای استفاده از مخزن ساخته شده کافی است بر روی سرور یا دسکتاپ موردنظر فایل sources.list را تغییر دهید:
در اولین گام از فایل sources.list نسخه پشتیبان تهیه کنید:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
سپس با استفاده از ابزار sed آدرس مخازن سیستم عامل را با آدرس مخازن محلی جایگزین کنید:
sudo sed -i “s/ir\.archive\.ubuntu\.com/192\.168\.11\.35\/ubuntu\/mirror\/archive\.ubuntu\.com/g” /etc/apt/sources.list
sudo sed -i “s/us\.archive\.ubuntu\.com/192\.168\.11\.35\/ubuntu\/mirror\/archive\.ubuntu\.com/g” /etc/apt/sources.list
sudo sed -i “s/security\.ubuntu\.com\/ubuntu/192\.168\.11\.35\/ubuntu\/mirror\/security\.ubuntu\.com\/ubuntu\//g” /etc/apt/sources.list
با انجام مراحل فوق فایل /etc/apt/sources.list اصلاح می شود و ظاهر نهایی آن به صورت زیر خواهد شد:
deb http://192.168.11.35/ubuntu/mirror/archive.ubuntu.com/ubuntu/ bionic main restricted
deb http://192.168.11.35/ubuntu/mirror/archive.ubuntu.com/ubuntu/ bionic-updates main restricted
deb http://192.168.11.35/ubuntu/mirror/archive.ubuntu.com/ubuntu/ bionic universe
deb http://192.168.11.35/ubuntu/mirror/archive.ubuntu.com/ubuntu/ bionic-updates universe
deb http://192.168.11.35/ubuntu/mirror/archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://192.168.11.35/ubuntu/mirror/archive.ubuntu.com/ubuntu/ bionic-updates multiverse
deb http://192.168.11.35/ubuntu/mirror/archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://192.168.11.35/ubuntu/mirror/security.ubuntu.com/ubuntu/ bionic-security main restricted
deb http://192.168.11.35/ubuntu/mirror/security.ubuntu.com/ubuntu/ bionic-security universe
deb http://192.168.11.35/ubuntu/mirror/security.ubuntu.com/ubuntu/ bionic-security multiverse
در این مرحله با استفاده از دستورات sudo apt update و sudo apt upgrade میتوانید لیست بسته ها را از مخزن محلی دانلود و سپس بروزرسانی کنید
همچنین نصب بسته هایی که در مخازن رسمی وجود دارند نیز با تغییراتی انجام شده ممکن گردیده است.