منبع اصلی نوشتار زیر در این لینک قرار دارد

مدیریت بسته‌ها در FreeBSD

هنگامی که این مطلب را می‌خوانید، ممکن است توسط خودم یا دیگران تغییراتی کرده باشد. بدین ترتیب مشکلات آن برطرف شده و قسمت‌های جدیدی به آن اضافه می‌شوند. همواره می‌توانید آخرین نسخه این مطلب را در دانشنامه BSD مطالعه کنید.

FreeBSD دو روش عمده برای نصب برنامه‌ها در اختیار کاربر قرار می‌دهد:

  1. استفاده از Ports Collection (نصب از طریق کد‌های منبع)
  2. استفاده از بسته‌ها (نصب از طریق باینری‌های از پیش کامپایل شده)

در این مقاله نحوه استفاده از بسته‌ها را شرح داده و استفاده از Ports Collection را در مقاله دیگری بررسی میکنیم. FreeBSD ابزارهای مختلفی را برای مدیریت این بسته های نرم افزاری در اختیار شما قرار میدهد که با چند دستور ساده میتوانید اقدام به نصب/حذف/بروزرسانی بسته های نرم افزاری نمایید. بسته های نرم افزاری به صورت فایلهایی با پسوند ‎ .tbz یا ‎ .tgz توزیع میشوند. این بسته ها را میتوانید از اینجایا DVD نصب FreeBSD تهیه کنید. هر دیسک FreeBSD شامل یک دایرکتوری به نام ‎ /packages است که این دایرکتوری دربرگیرنده بسیاری از بسته های نرم افزاری پر‌استفاده است. تحت این دایرکتوری، بسته های نرم افزاری به شکل بسیار زیبایی گروه بندی شده‌اند که در یافتن یک بسته به شما کمک فراوان میکند.

نصب یک بسته

میتوانید از pkg_add برای نصب یک بسته استفاده کنید. pkg_add قادر است بسته ها را هم به صورت محلی و هم از طریق یک سرور راه دور نصب کند. در مثال زیر، ابتدا یک بسته نرم افزاری را از طریق اینترنت دانلود کرده و سپس با دستور pkg_add آن را نصب میکنیم:

 

# ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230-     This machine is in Vienna, VA, USA, hosted by Verio.
230-         Questions? E-mail [email protected].
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp> get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for \'lsof-4.56.4.tgz\' (92375 bytes).
100% |**************************************************| 92375       00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp> exit
# pkg_add lsof-4.56.4.tgz

خب همانطور که میبینید کافیست تا نام فایل مورد نظر را بعد از دستور pkg_add بنویسید. اگر میخواهید چند بسته را با هم نصب کنید، به سادگی آن‌ها را پشت سر هم بنویسید. مانند زیر:

 

pkg_add squid-3.1.19.tbz w3m-0.5.3.tbz firefox-10.0.3,1.tbz

این در حالتی است که ما بسته نرم افزاری را قبلاً دانلود کرده ایم. البته pkg_add قادر است تا به صورت خودکار یک بسته نرم افزاری را برای شما دانلود و سپس نصب کند. کافیست تا این دستور را بهمراه گزینه ‎ -r فراخوانی کنید:

 

# pkg_add -r lsof

 

دقت کنید که در صورت استفاده از گزینه ‎ -r، نیازی به نوشتن نسخه مربوط به بسته ندارید.pkg_add به صورت خودکار آخرین نسخه از بسته مورد نظر را دانلود و سپس نصب میکند.

 

گزینه توضیح
-v , –verbose
این گزینه باعث می‌شود تا pkg_add گزارش کاملی را از فرایند نصب ارائه دهد.
-K, –keep
این گزینه باعث می‌شود تا بسته ها بعد از دانلود پاک نشوند. بدین صورت میتوانید آن‌ها را در آینده هم استفاده کنید. اگر متغیر محیطی PKGDIR مقدار‌دهی
شده باشد، بسته ها در آنجا ذخیره خواهند شد وگرنه آن‌ها در دایرکتوری جاری ذخیره میشوند.
-i, –no-deps
یک بسته را بدون دانلود و نصب وابستگیهایش (dependency ) نصب خواهد کرد.
-I, –no-script
هر بسته نرم افزاری ممکن است شامل اسکریپت هایی باشد که بعضی از این اسکریپت ها قبل از نصبِ بسته و بعضی دیگر بعد از نصبِ بسته اجرا میشوند.
این گزینه از اجرا شدن این اسکریپتها جلوگیری میکند.
-n, –dry-run
بسته را به صورت واقعی نصب نخواهد کرد. فقط از مراحل نصب گزارشی را ارائه میدهد.
-f, –force
اگر وابستگی‌های یک بسته نصب نباشند، یا اجرای اسکریپتهای موجود در بسته با شکست مواجه شود، استفاده از این گزینه باعث نادیده گرفتن این
موارد شده و بسته را نصب خواهد کرد.

 

لازم به ذکر است که pkg_add از ابزار fetch برای دانلود بسته ها استفاده میکند. بنابراین شاید لازم باشد تا متغیرهای FTP_PASSIVE_MODE ،FTP_PROXY یا FTP_PASSWORD را مقدار دهی کنید. اگر قرار است از پشت یک فایروال بسته ها را دانلود کنید یا از یک ftp/http پراکسی استفاده کنید باید این متغیرها مقدار دهی شوند. برای اطلاعات بیشتر fetch(3) را ببینید.

info

همانطور که از اسم آن پیداست، از طریق این دستور میتوانید اطلاعاتی را در مورد بسته های نرم افزاری کسب کنید. برای مثال:

 

# pkg_info
cvsup-16.1          A general network file distribution system optimized for CV
docbook-1.2         Meta-port for the different versions of the DocBook DTD
...

میتوانید قبل از نصب یک بسته، اطلاعاتی را در مورد آن بسته بدست آورید:

 

pkg_info squid-3.1.19.tbz

همچنین برای اینکه بدانید در حال حاضر یک بسته نصب است یا نه میتوانید به این صورت عمل کنید:

 

pkg_info -a | grep mutt

 

version

این دستور یک کار جالب انجام میدهد. نسخه نصب شده از یک بسته را با نسخه موجود در درخت port ها مقایسه کرده و به شما اطلاع میدهد که کدام جدیدتر و کدام قدیمیتر است. مثال:

 

# pkg_version
cvsup                       =
docbook                     =
...

 

علامت توضیح
=
نسخه‌ای که در حال حاضر بر روی سیستم نصب است، با نسخه موجود در درخت پورت برابر است.
<
نسخه‌ای که در حال حاضر بر روی سیستم نصب است، قدیمیتر از نسخه موجود در درخت پورتها است.
>
نسخه‌ای که در حال حاضر بر روی سیستم نصب است، جدیدتر از نسخه موجود در درخت پورتها است.
?
نسخه‌ای که در حال حاضر بر روی سیستم نصب است، در درخت پورتها موجود نیست.‌ (ممکن است از درخت پورت ها حذف شده باشد یا اینکه تغییر نام داده باشد)
*
نسخه های مختلفی از بسته وجود دارد.
!
نسخه‌ای که در حال حاضر بر روی سیستم نصب است، در درخت پورتها هم وجود دارد، ولی بنا به دلایلی pkg_version قادر به مقایسه این دو نیست.

پاک کردن یک بسته

برای پاک کردن یک بسته میتوانید از دستور pkg_delete استفاده کنید.

# pkg_delete xchat-1.7.1

دقت کنید که هم باید نام بسته را بنویسید و هم نسخه مربوط به بسته را؛ وگرنه بسته پاک نخواهد شد. در مثال قبل اگر xchat را به جای xchat-1.7.1 مینوشتیم، دستور pkg_delete کار نمیکرد. اگر نسخه یک برنامه را نمیدانید، میتوانید از دستور pkg_version استفاده کرده و نسخه نصب شده را پیدا کنید. البته به جای این کار، میتوانید به سادگی از یک wildcard استفاده کنید:

 

# pkg_delete xchat\\*

دستور بالا تمام بسته هایی که با xchat شروع می‌شوند را پاک میکند.

 

گزینه توضیح
-i, –interactive
قبل از پاک کردن بسته، از کاربر تأیید میگیرد.
-v یا –verbose
این گزینه باعث می‌شود تا pkg_delete از فرایند حذف یک بسته گزارش کاملی را ارائه دهد.
-D, –no-script, –no-scripts
باعث می‌شود تا اسکریپتهای موجود به همراه بسته اجرا نشوند.
-a, –all
باعث می‌شود تا تمام بسته های نصب شده پاک شوند. فقط هسته و بعضی بسته های پایه‌ای باقی خواهد ماند.
-r, –recursive
علاوه بر بسته های مشخص شده، تمام بسته هایی که به این بسته ها احتیاج دارند را پاک میکند.
-n, –dry-run
بسته به صورت واقعی پاک نخواهد شد.



برچسب ها : , , , ,