در توزیعهای لینوکس مبتنی بر دبیان مانند اوبونتو (و سایر توزیعهای زیرمجموعه آن)، مدیریت نرمافزارها و بهروزرسانی سیستمعامل بر عهده ابزار قدرتمند apt است. این ابزار به صورت مستقیم با مخازن (repositories) رسمی اوبونتو در ارتباط است و پکیجها را از سرورهای جهانی آن دریافت میکند. اما در شرایطی مانند تحریم، فیلترینگ، قطعی اینترنت یا شبکههای سازمانی محدود، دسترسی مستقیم به این مخازن امکانپذیر نیست. در این نوشته به صورت مرحله به مرحله بررسی میکنیم که مخازن apt چگونه کار میکنند و چه راهکارهایی برای آپدیت اوبونتو بدون اینترنت و در شرایط محدودیت وجود دارد.
فهرست مطالب:
apt چیست؟
کلمه apt مخفف Advanced Package Tool و یک ابزار قدرتمند در اکوسیستم اوبونتو است که به صورت کلی در نقش سیستم مدیریت پکیج عمل میکند و وظایف زیر را انجام میدهد:
- دریافت لیست پکیجها از مخازن اوبونتو
- نصب، حذف و ارتقای نرمافزارها
- مدیریت وابستگیها
- بررسی امضاهای امنیتی پکیجها
رایجترین دستورات apt سه دستور زیر هستند که به ترتیب وظیفه ۱) بهروزرسانی مخازن نرمافزاری، ۲) بهروزرسانی نرمافزارها و پکیجها و ۳) نصب نرمافزارها و پکیجها را بر عهده دارند:
sudo apt update
sudo apt upgrade
sudo apt install nginx
مخازن اوبونتو یا اصطلاحاً Repositories سرورهایی هستند که نرمافزارها و پکیجها، روی آنها نگهداری میشوند. این مخازن در یکی از دو مسیر زیر، تعریف میشوند:
/etc/apt/sources.list
or
/etc/apt/sources.list.d/
چرا آپدیت اوبونتو بدون اینترنت؟
در برخی مواقع مانند قطعی اخیر اینترنت که در پی کشتار بیرحمانه هموطنان عزیزمان در روزهای ۱۸ و ۱۹ دی ماه ۱۴۰۴ رخ داد، دسترسی به مخازن جهانی اوبونتو عملاً غیرممکن میشود و توسعهدهندگان برای نصب یا بهروزرسانی نرمافزارها و پکیجهای موردنیاز خود با مشکل مواجه میشوند.
البته مواجهه با خطاهایی نظیر Connection timed out یا Failed to fetch به هنگام استفاده از apt فقط محدود به مورد فوق نیست. در برخی موارد مانند محیطهای صنعتی، سازمانی یا شبکههای ایزوله، ممکن است دسترسی به اینترنت وجود نداشته باشد که منجر به بروز خطاهای مشابهی خواهد شد.
در چنین شرایطی، میتوان از منابع محلی و یا نسخه آفلاین پکیجها استفاده کرد که در ادامه به آن میپردازیم.
دانلود پکیجها از مخازن محلی
در مواقعی که به دلیل فیلترینگ یا قطعی اینترنت بینالملل، دسترسی به سرورهای جهانی مخازن اوبونتو مختل شده است، میتوان از مخازن محلی یا اصطلاحاً mirror های محلی اوبونتو استفاده کرد. برخی سرویسدهندگان داخلی مانند ایران سرور، پارس هاست، فراسو و دانشگاه صنعتی اصفهان، نسخههای یکسانی با مخازن جهانی اوبونتو دارند که کافیست آنها را در سیستم خود تعریف کنید.
برای این کار ابتدا میبایست فایل sources.list را با یک ادیتور متنی باز کرده و مخزن مدنظر را به آن اضافه کنید:
sudo nano /etc/apt/sources.list
سپس یک بار مخازن apt را آپدیت کنید:
sudo apt update
و نهایتاً اقدام به نصب پکیج یا نرمافزار مدنظر نمایید:
sudo apt install nginx
فهرست کامل mirror های اوبونتو در کشورهای مختلف همواره از این آدرس در دسترس است اما چون در زمان قطعی اینترنت، طبیعتاً به آن دسترسی نخواهید داشت، برخی از مخازن داخلی در زیر قرار داده شده است:
# IranServer.com:
deb https://mirror.iranserver.com/ubuntu/ noble main
deb-src https://mirror.iranserver.com/ubuntu/ noble main
# Isfahan University of Technology:
deb http://repo.iut.ac.ir/repo/Ubuntu/ noble main
deb-src http://repo.iut.ac.ir/repo/Ubuntu/ noble main
# Faraso Samaneh Pasargad:
deb http://mirror.faraso.org/ubuntu/ noble main
deb-src http://mirror.faraso.org/ubuntu/ noble main
# Pars.host:
deb https://ubuntu.pars.host/ noble main
deb-src https://ubuntu.pars.host/ noble main
در این مثال، مخازن برای نسخه ۲۴.۰۴ اوبونتو یعنی noble میباشند. برای نسخههای دیگر باید اسم نسخه را جایگزین کنید.
نصب دستی (آفلاین) پکیجها
در مواقعی که به دلایل امنیتی یا محدودیتهای دیگر، کلاً بر روی سیستم خود اتصال اینترنت ندارید و سیستم شما به عبارتی آفلاین است، میتوانید با استفاده از یک کامپیوتر دیگر اقدام به دانلود پکیجهای مدنظر نموده و آنها را به سیستمی که آفلاین است منتقل کنید.
مرحله ۱: دانلود پکیجها در سیستم آنلاین
ابتدا روی کامپیوتری که اتصال به اینترنت دارد، دستور زیر را وارد کنید تا apt پکیج مدنظر را فقط دانلود کند:
sudo apt download nginx
همچنین با دستور زیر میتوانید وابستگیهای پکیج مدنظر را نیز به همراه آن دانلود کنید:
sudo apt-get install --download-only nginx
مرحله ۲: انتقال فایل پکیجها به سیستم آفلاین
فایلهای دانلود شده (عمدتاً با پسوند deb.) را از طریق فلش یا هارد و یا شبکه داخلی به کامپیوتری که آفلاین است منتقل کنید.
مرحله ۳: نصب پکیجها در سیستم آفلاین
پکیجها را در کامپیوتری که به اینترنت دسترسی ندارد، با استفاده از دستور زیر نصب کنید:
sudo dpkg -i *.deb
استفاده از ابزار apt-offline
یک راهکار اندکی حرفهایتر برای آپدیت سیستم عامل و نرمافزارهای آن توسط apt، استفاده از ابزار apt-offline است که میبایست ابتدا آن را روی سیستم خود نصب کنید:
sudo apt install apt-offline
استفاده از این ابزار برای آپدیت آفلاین اوبونتو، دارای سه مرحله است:
مرحله ۱: ایجاد فایل درخواست آپدیت
apt-offline set update.sig
مرحله ۲: دانلود در سیستم آنلاین
apt-offline get update.sig --bundle update.zip
مرحله ۳: نصب در سیستم آفلاین
apt-offline install update.zip
دقت کنید که این روش برای آپدیت کلی سیستم عامل به همراه کلیه نرمافزارها و پکیجهای نصب شده است و برای نصب یک نرمافزار یا پکیج خاص، قابل استفاده نیست.
نکته: هنگام استفاده از هر کدام از روشهای بالا حتماً دقت کنید نسخه سیستم عامل نصب شده روی سیستم مبدأ و مقصد یکسان باشد.
اگر برنامهنویس زبان پایتون هستید، با استفاده از آموزش pip بدون اینترنت میتوانید فرآیند مشابهی را برای بهروزرسانی پکیجهای پایتونی خود در شرایط تحریم یا فیلترینگ شدید، اجرا کنید.