در این مقاله نصب آفلاین آرچلینوکس در دو حالت کلی شرح داده خواهد شد. در حالت اول از قبل بستههای مورد نیاز را در اختیار دارید ولی در حالت دوم مجبورید از طریق سیستم عامل یا رایانهای دیگر که به اینترنت متصل است ابتدا بستهها را از مخازن دانلود کنید.
در حالت اول دو راه برای نصب آفلاین Arch وجود دارد:
راه اول
شرایط لازم برای اجرای این روش به این شرح است:
۱. در کنار بستهها، فایلهای دیتابیس مخازن را هم در اختیار داشته باشید. یعنی باید هنگام پشتیبانگیری، به غیر از بستهها از دیتابیسها نیز پشتیبان تهیه کنید. این فایلها حاوی اطلاعات و مشخصات بستههای موجود در مخازن میباشند و میتوان آنها را در مسیر /var/lib/pacman/sync/ یافت.
۲. قبل از تهیهی پشتیبان از بستهها و دیتابیسها کل سیستم آپدیت باشد.
بعد از نصب Arch Core (Core Image)، فایلهای دیتابیس مخازن را جایگزین و بستهها را نیز به مسیر /var/cache/pacman/pkg منتقل میکنید. حال با استفاده از pacman به راحتی سیستم را آپدیت و بستههای مورد نظر را نصب میکنید:
sudo pacman -Su
یا
sudo pacman -S PACKAGE-NAME
توجه: اگر هنگام پشتیبان گرفتن از بستهها و دیتابیسها از مخازن دیگر همچون مخزن تستینگ یا مخازن غیررسمی نیز بهره گرفتهاید، با ویرایش فایل /etc/pacman.conf ابتدا آنها را فعال یا اضافه کنید.
راه دوم
در این روش با ایجاد یک مخزن شخصی/محلی اقدام به نصب بستهها مینمایید که شامل مراحل زیر میشود:
۱. به کمک دستور repo-add یک دیتابیس برای بستههای مورد نظر میسازید:
repo-add /path/to/repo.db.tar.gz /path/to/*.pkg.tar.xz
/path/to/repo.db.tar.gz مسیریست که فایل دیتابیس در آن ساخته میشود و /path/to/*.pkg.tar.xz هم مسیر پوشهایست که بستهها در آن قرار دارند (آدرس هر دو پوشه باید یکسان باشد، در واقع بستهها و فایل دیتابیس باید در یک پوشه باشند).
برای مثال من در مورد بستههایی که از AUR میسازم/کامپایل میکنم دستور زیر را به کار میبرم:
repo-add -q /home/yaourt/myaur.db.tar.gz /home/yaourt/*.pkg.tar.xz
آپشن -q به منظور کم شدن حجم خروجیست.
۲. نام مخزن جدید و آدرس مسیری که بستهها در آن قرار دارند را به فایل /etc/pacman.conf اضافه کنید. در رابطه با مثال ذکر شده، من عبارت زیر را به pacman.conf اضافه کردم.
[myaur] Server = file:///home/yaourt
به وجود file:// قبل از مسیر فایل دیتابیس دقت کنید.
۳. یک لینک سمبلیک از فایل دیتابیس مخزن محلی با پسوند .db را در همان پوشهی بستهها قرار دهید. برای نمونه دستور مرتبط با مثال بالا از این قرار است:
ln -s /home/yaourt/myaur.db.tar.gz /home/yaourt/myaur.db
همچنین به منظور آپدیت دیتابیس مخزن محلی، دستور repo-add را دوباره اجرا کنید.
۴. هر چند تا مخزن محلی که دوست داشتید بسازید و سپس مشغول آپدیت سیستم یا نصب بستهها شوید!
توجه: اگر فایلهای دیتابیس مخازن رسمی قدیمیتر از بستههای موجود در مخزن محلی باشند که هیچ! ولی در غیر این صورت برای جلوگیری از دانلود نسخهی جدیدتر بستهها و نیاز به اینترنت باید ابتدا آنها (مخازن رسمی) را غیرفعال کنید. این کار را با کامنت کردن (گذاشتن علامت #) ابتدای خطوط آنها در فایل pacman.conf انجام دهید.
در حالت دوم نیز دو راه وجود دارد:
راه اول
این راه بیشتر برای حالتی مفید است که رایانهای که قرار است آرچ بر روی آن نصب گردد و رایانهای که به اینترنت دسترسی دارد از هم جدا باشند، برای مثال رایانهی خانه و محل کار. عنصر کلیدی در اینجا دیتابیس مخازن است. بنابراین ابتدا آنها را دانلود کرده (با استفاده از رایانهای که به اینترنت دسترسی دارد) و سپس به مسیر مربوطه یعنی /var/lib/pacman/sync/ منتقلشان کنید:
برای معماری i686:
ftp://ftp.archlinux.org/core/os/i686/core.db
ftp://ftp.archlinux.org/extra/os/i686/extra.db
ftp://ftp.archlinux.org/community/os/i686/community.db
ftp://ftp.archlinux.org/multilib/os/i686/multilib.db.tar.gz
برای معماری x86_64:
ftp://ftp.archlinux.org/core/os/x86_64/core.db
ftp://ftp.archlinux.org/extra/os/x86_64/extra.db
ftp://ftp.archlinux.org/community/os/x86_64/community.db
ftp://ftp.archlinux.org/multilib/os/x86_64/multilib.db
توجه: در ویکی آرچ این قسمت مقداری متفاوت است ولی در ابتدای آن ذکر شده که مطلب out of date یا قدیمی است. ممکن است از پکمن نسخهی ۳ یا ۴ این تفاوت به وجود آمده باشد.
در هر حال با نصب آخرین نسخهی پکمن و وابستگیهای آن به صورت دستی دیگر مشکلی وجود نخواهد داشت. بدین منظور ابتدا پکجهای pacman، libarchive، curl، glibc و gpgme را از اینجا جستجو و دانلود کنید و همه را در یک پوشه قرار دهید. سپس وارد آرچ و پوشهای که این بستهها در آن قرار دارند شده و با دستور زیر آنها را نصب کنید:
sudo pacman -U *.pkg.tar.xz
حال به کمک پکمن و آپشن -p لیست urlهای بستههای مورد نیاز را استخراج کرده و باز با استفاده از رایانه یا سیستمعاملی که به اینترنت دسترسی دارد آنها را دانلود کنید:
sudo pacman -Sup --noconfirm > pkgurl
یا
sudo pacman -Sp --noconfirm PACKAGE-NAME > pkgurl
فایل pkgurl که در مسیر کار ترمینال/کنسول ایجاد میشود حاوی urlهای بستههاست.
به عنوان مثال دستور زیر لینک تمام آپدیتهای سیستم به علاوهی بستههای xorg-server، dbus، networkmanager و تمام وابستگیهای آنها را در فایل pkgurl میریزد:
sudo pacman -Sup --noconfirm xorg-server dbus networkmanager > pkgurl
توجه: دقت کنید که باید یک یا چند آینهی به روز را در فایل /etc/pacman.d/mirrorlist فعال (آنکامنت) کرده باشید. برای مشاهدهی لیستی از آینههای به روز به اینجا مراجعه کنید.
بستههای دانلود شده را به /var/cache/pacman/pkg انتقال داده و مانند قبل با پکمن آنها را نصب کنید.
راه دوم؛ استفاده از chroot
نحوهی کار با chroot در ویکی لینوکسریویو توضیح داده شده است اما برای کامل بودن مقاله به صورت مختصر و مفید به آن اشاره میکنم.
در این روش ابتدا وارد گنو/لینوکسی دیگر که در آن به اینترنت دسترسی دارید شوید، این گنو/لینوکس میتواند یک دیسک زنده، USB Flash یا توزیعی دیگر بر روی هارد دیسکتان باشد. دسترسی ریشه و معماری یکسان دو گنو/لینوکس از ملزومات chroot است.
با اطلاع قبلی از نام پارتیشن روت آرچ که به صورت /dev/sdXY میباشد (برای تشخیص XY میتوانید از خروجی دستور sudo fdisk -l استفاده کنید)، ابتدا مسیر مورد نظر برای ماونت کردن آن را ایجاد و سپس آن را ماونت میکنید:
mkdir /mnt/arch mount /dev/sdXY /mnt/arch
وارد مسیری که پارتیشن روت آرچ ماونت شده شوید و فایلسیستمهای موقتی را هم ماونت کنید:
cd /mnt/arch mount -t proc proc proc/ mount -t sysfs sys sys/ mount -o bind /dev dev/
اگر برای قسمتهایی از فایلسیستم مانند /boot، var/، usr/ یا … پارتیشنهای جداگانه در نظر گرفتهاید، آنها را نیز ماونت کنید. مثال برای پارتیشن بوت جداگانه:
mount /dev/sdXY boot/
و برای استفاده از اینترنت در محیط chroot، DNSها را نیز باید از گنو/لینوکس میزبان کپی کنید:
cp -L /etc/resolv.conf etc/resolv.conf
در آخر به آرچ chroot بزنید:
chroot . /bin/bash
حال میتوانید با استفاده از pacman دیتابیس مخازن را آپدیت کرده و لیست urlهای بستههای مورد نیاز را گرفته و دانلود کنید. توصیه میکنم از محیط chroot فقط برای گرفتن لینک بستهها استفاده کنید و برای نصب آنها وارد خود آرچ شوید.
نکته: ممکن است این نکته ربط مستقیمی به مطلب نداشته باشد ولی بهتر دیدم که به آن اشاره کنم، وقتی با پکمن بستهها را نصب میکنید خوب به خروجی دقت کنید. در مورد فایلهای پیکربندی دو حالت ممکن است پیش آید؛ در حالت اول پکمن فایل پیکربندی جدید را با پسوند .pacnew نصب میکند ولی در حالت دوم از فایل پیکربندی یک پشتیبان با پسوند .pacsave گرفته و فایل پیکربندی جدید را جایگزین آن میکند. برای حالت اول میتوان خود پکمن را مثال زد که بعد از آپدیت از نسخهی ۳ به ۴ فایل پیکربندی مربوط به نسخهی ۳ با نسخهی ۴ کامل هماهنگ نیست. پس ابتدا از فایل pacman.conf پشتیبان گرفته و سپس فایل pacman.conf.pacnew را که متعلق به پکمن ۴ است جایگزین آن کرده و تغییرات لازم را نیز در آن اعمال میکنید:
sudo cp /etc/pacman.conf /etc/pacman.conf.backup sudo mv /etc/pacman.conf.pacnew /etc/pacman.conf
11 دیدگاه برای این نوشته:
- چالیست:
۲۳ اسفند ۱۳۹۰
ممنون
خیلی خوب بودمی گم راهی برای نصب آفلاین gentoo هم وجود داره؟
- PersianDev:
۲۳ اسفند ۱۳۹۰
اقا دمت گرم عالی بود
الان نصبش میکنم
فقط ی سوال
از طریق chroot که میتونیم به نت وصل شیم راهی نیست تو خود ارچ درایور نصب بشه و از خود ارچ به نت وصل شیم؟ - eMan:
۲۳ اسفند ۱۳۹۰
یعنی دمت گرم پیروزان
خیلی عالی بود خیلی
فقط این ftp://ftp.archlinux.org/multilib/os/i686/multilib.db برای معماری i686 وجود نداره که نیازی هم نیست! - eMan:
۲۳ اسفند ۱۳۹۰
من هیچوقت جنتو کار نکردم ولی شنیدم که اون DVD زندهش رو میشه نصب کرد. که خب طبیعتا نیازی به نت نداره.
البته تو دنیای لینوکس نشد نداره :D
http://forums.gentoo.org/viewtopic.php?t=2656
من تاپیک رو نخوندم ولی فکر کنم روشن کننده قضیه باشه :) - Araz:
۲۳ اسفند ۱۳۹۰
سلام
ممنون از مقاله خوبتون
من حدود 2 هفته است که آرچ رو دوباره نصب کردم تو این دو هفته به هر دری زدم نتونستم پکیج هایی رو که قبلا از کش پک من کپی کرده بودم رو دوباره نصب کنم. دیشب هم که این مقاله رو خوندم با روشی که توضیح داده (حالت اول-راه دوم) دوباره نتونستم پکیج ها رو نصب کنم. خطایی که میده دقیق یادم نیست ولی میگه که repo Not a directory. اگه میشه یه راهنمایی کنید تا این مشکل رو حل کنم.
ممنون - eMan:
۲۳ اسفند ۱۳۹۰
بهتره موضوع رو داخل انجمن پیگری کنید
http://community.linuxreview.ir/
ولی بعید میدونم به غیر از نصب دستی بستهها یا ساخت مخزن محلی راه دیگهای داشته باشید.
https://wiki.archlinux.org/index.php/Local_repository
مخزن محلی شاید کمک کنه ولی پیشنهاد میکنم در صورتی که دسترسی دارید از نت بگیرید فایلها رو - Pyruzan:
۲۳ اسفند ۱۳۹۰
چرا که راهی نیست! اصولا این مقاله مربوط به نصب آفلاینه و فرض کرده شما در آرچ به اینترنت دسترسی نداری. اگر مودم وایرلس نباشه و از طریق کابل شبکه به سیستم وصل باشه با دستور pppoe-setup برای حالت بریج مودم و با دستور dhcpcd eth0 برای حالت pppoe میتونی راحت و بدون کار اضافهای کانکت شی. - Pyruzan:
۲۳ اسفند ۱۳۹۰
ممنون ایمان جون، لطف داری :)
اینو دیشب بعد از انتشار (!) باز کلی باهاش ور رفتم و سعی کردم بهترین راههای ممکن رو ذکر کنم، به خاطر همین لینک دیتابیسهای .db.tar.gz رو وقتی دیدم لازم نیست حذف کردم و مالتیلیب i686 رو هم بدون اینکه چک کنم .tar.gzشو برداشتم! البته الان درستش کردم.
در ضمن دیشب توی چاکرا بودم و نصفه شب بود دیگه و منم تنبلی کردم و نرفتم توی آرچ وابستگیهای پکمن رو چک کنم و توی چاکرا چک کردم. الان که توی آرچ چک کردم دو تا وابستگی متفاوت ینی glibc و curl داره که اونم درستش کردم :) - Pyruzan:
۲۳ اسفند ۱۳۹۰
الان این خطا رو تو کدوم مرحله میده؟ وقتی میخوای مخزن رو بسازی یا وقتی میخوای با پکمن پکجا رو نصب کنی. اگه موقع ساخت مخزنه دقت کن که آخر مسیر دیرکتوری اون *.pkg.tar.xz رو هم بذاری و اگه پکمن این خطا رو میده چک کن که آدرس مخزن توی pacman.conf اولش file:// باشه، توی متن هم تاکید کردم.
در هر حال باید دقیقتر بگی، ینی دستوری که وارد میکنی و خطا رو دقیق بگی برامون. - Araz:
۲۳ اسفند ۱۳۹۰
مشکل رو تو انجمن مطرح می کنم اگه ممکنه اونجا جواب بدین.
ممنون - MOJVAR:
۲۴ اسفند ۱۳۹۰
درود بر دوستان عزیز
پیروزان ممنون
من چاکرا دارم و فعلا هم قصد ندارم توزیع ام را عوض کنم ولی ممنون بابت وقتی که گذاشتی .