هنگامی که این مطلب را میخوانید، ممکن است توسط خودم یا دیگران تغییراتی کرده باشد. بدین ترتیب مشکلات آن برطرف شده و قسمتهای جدیدی به آن اضافه میشوند. همواره میتوانید آخرین نسخه این مطلب را در دانشنامه BSD مطالعه کنید.
یکی دیگر از روشهای نصب برنامهها در FreeBSD، استفاده از مجموعه پورتهای FreeBSD است. یک port عبارتست از یکسری فایل که برای خودکارسازی فرآیند کامپایل و نصب برنامهها از کدهای منبع طراحی شدهاند. در صورتی که خودتان بخواهید یک برنامه را به صورت دستی از کدهای منبع نصب کنید، باید ابتدا آن را دانلود کرده، از حالت فشرده خارج کنید، آن را پیکربندی کرده و کامپایل نمایید و در آخر فایلهای خروجی را به مکان مناسبشان منتقل کنید. اما با استفاده از پورتهای FreeBSD تمام این مراحل به صورت خودکار انجام شده و شما با اجرای چند دستور ساده براحتی برنامه مورد نظر خود را از کدهای منبع نصب خواهید کرد. همچنین تمام وابستگیها به صورت خودکار شناسایی و نصب خواهند شد. فرض کنید که قصد دارید برنامهای را نصب کنید که به یکسری کتابخانه خاص احتیاج دارد. در این صورت، ابتدا شما باید آن کتابخانهها را نصب کرده و سپس اقدام به نصب برنامه مورد نظر خود نمایید. انجام این کار به صورت دستی وقت و حوصله زیادی را میطلبد. اما شما میتوانید مشکل وابستگیها را براحتی با استفاده از پورتها یا بستهها حل کنید. هر دو سیستم پورتها و بستهها وابستگیها را تشخیص داده و آنها را به صورت خودکار نصب خواهند کرد. استفاده از پورتها مزایای دیگری هم دارد که در زیر به برخی از آنها اشاره شده است:
- بستههای باینری طوری کامپایل شدهاند که بر روی انواع مختلفی از سختافزارها قابل اجرا بوده و همچنین جوابگوی نیازهای طیف وسیعی از کاربران باشند. با کامپایل یک برنامه از کدهای منبع، میتوانید آن را مطابق سختافزار رایانه خود کامپایل کرده و همچنین قابلیتهای مورد نیاز خود را فعال کرده و از قابلیتهای اضافه چشمپوشی کنید.
- اجازهنامه برخی از برنامهها، مانع از توزیع آنها به صورت بستههای باینری شده و آن برنامهها حتماً باید به صورت کدهای منبع توزیع شوند.
- بعضی از مردم به بستههای باینری اعتماد ندارند. با داشتن کدهای منبع شما خواهید توانست (به صورت تئوری هم که شده) آن را مطالعه کرده و اشکالات آن را برطرف و امکاناتی را به آن اضافه کنید.
- اگر وصلهای (patch) برای یک برنامه داشته باشید، برای اعمال آن نیاز به کدهای منبع دارید.
- بعضیها دوست دارند تا کدهای منبع را همیشه در جایی داشته باشند. با این کار آنها میتوانند آن را بخوانند، چیزهای جالبی از آن کشف کنند، از کدهای آن قرض بگیرند (البته با رعایت اجازهنامه) و … .
نصب پورتها
شما باید پورتها را بر روی سیستمتان نصب کرده باشید تا بتوانید از آنها استفاده کنید. در هنگام نصب FreeBSD میتوانید آنها را به همراه سایر اجزا برای نصب انتخاب کنید. اگر به هر دلیلی در هنگام نصب FreeBSD ، پورتها را نصب نکردهاید میتوانید با راهکارهایی که در ادامه آمده است اقدام به نصب پورتها نمایید.
روش CVSup
یکی از سریعترین روشها برای نصب و بروز رسانی پورتها استفاده از پروتکل CVSup است.
اگر اولین بار است که csup را اجرا میکنید، مطمئن شوید که دایرکتوری /usr/ports خالی باشد. سپس csup را به صورت زیر اجرا کنید:
# csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
البته بهتر است cvsup.FreeBSD.org را به سروری که در نزدیکی شما قرار دارد تغییر دهید. این لینک را برای دیدن لیست کاملی از Mirror ها ببینید.
دفعات بعد که csup را اجرا کردید، تنها تغییرات جدید در سیستم شما اعمال خواهد شد و نیازی به دانلود کلِ سیستم پورتها نیست.
استفاده از portsnap
FreeBSD یک ابزار برای آپدیت کردن پورتها فراهم کرده:portsnap. این برنامه به یک سایت راه دور متصل شده، کلید امنیتی را بررسی کرده، و یک نسخه جدید از پورتها را کپی میکند. دلیل استفاده از کلید امنیتی این است که مطمئن شویم پورتها آسیب ندیده و یا توسط دیگران دستکاری نشدهاند.
برای دانلود پورتها کافیست دستور زیر را وارد کنید:
# portsnap fetch Looking up portsnap.FreeBSD.org mirrors... 9 mirrors found. Fetching snapshot tag from geodns-1.portsnap.freebsd.org... done. Fetching snapshot metadata... done. Updating from Tue May 22 02:12:15 CEST 2012 to Wed May 23 16:28:31 CEST 2012. Fetching 3 metadata patches.. done. Applying metadata patches... done. Fetching 3 metadata files... done. Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done. Applying patches... done. Fetching 133 new ports or files... done.
یادتان باشد که برای دانلود پورتها باید به اینترنت متصل باشید. بعد از اجرای دستور بالا پورتها در مسیر /var/db/portsnap ذخیره خواهند شد. البته هنوز نصب پورتها به اتمام نرسیده است. از اینجا به بعد میتوانید اتصال اینترنت خود را قطع کنید.
اگر اولین بار است که portsnap را اجرا میکنید، دستور زیر را اجرا کنید تا پورتها در مسیر /usr/ports استخراج شوند:
# portsnap extract /usr/ports/.cvsignore /usr/ports/CHANGES /usr/ports/COPYRIGHT /usr/ports/GIDs /usr/ports/KNOBS /usr/ports/LEGAL /usr/ports/MOVED /usr/ports/Makefile /usr/ports/Mk/bsd.apache.mk /usr/ports/Mk/bsd.autotools.mk /usr/ports/Mk/bsd.cmake.mk ...
اگر قبلاً پورتها را در مسیر /usr/ports استخراج کرده و حالا قصد بروزرسانی آنها را دارید، دستور زیر را اجرا کنید:
# portsnap update
البته میتوانید این مراحل را به صورت یکجا انجام دهید:
# portsnap fetch update
دستور بالا آخرین نسخه از پورتها را دانلود کرده و نسخه موجود در /usr/ports را از روی آن بروزرسانی میکند.
استفاده از sysinstall
در این روش نصب پورتها، از روی رسانه (media) نصب صورت میگیرد. توجه داشته باشید که در این روش چون از روی رسانه نصب اقدام به نصب پورتها میکنیم، یک نسخه قدیمی از پورتها (با توجه به تاریخ انتشار رسانه) نصب خواهد شد. اگر به اینترنت دسترسی دارید، از این روش استفاده نکنید.
دستور sysinstall را از طریق کاربر root اجرا کنید:
# sysinstall
- گزینه Configure را انتخاب کرده و دکمه Enter را فشار دهید.
- گزینه Distributions را انتخاب کرده و Enter را فشار دهید.
- گزینه ports را انتخاب کرده و Space را فشار دهید.
- گزینه Exit را انتخاب کرده و Enter را فشار دهید.
- رسانه نصب خود را انتخاب کنید (مثلاً FTP, CD-ROM و …)
- گزینه Exit را انتخاب کرده و Enter را فشار دهید.
- X را برای خروج از sysinstall فشار دهید.
نصب برنامهها از طریق پورتها
بعد از انجام مراحل بالا پورتها در مسیر /usr/ports نصب خواهند شد. هر پورت شامل یکسری فایل است که عبارتند از:
Makefile: این فایل تعیین میکند که یک برنامه چگونه کامپایل شده و همچنین بعد از کامپایل در کجا نصب شود.
distinfo: برای نصب هر پورتی، احتیاج به فایلهای خاصی داریم که این فایها باید دانلود شوند. لیست تمام این فایلها در فایل distinfo نگهداری میشود. همچنین checksum تمام این فایلها هم در فایل distinfo وجود دارد. بنابراین بعد از اتمام دانلود، تمام فایلها بررسی شده تا مبادا فایلی خراب یا دستکاری شده باشد.
دایرکتوری files: این دایرکتوری دربرگیرنده وصلههایی (patch) است که باید دانلود شوند تا برنامه مورد نظر در سیستم FreeBSD شما کامپایل و نصب شود. patch ها فایلهای کوچکی هستند که برای تغییر دادن محتویات یکسری فایل خاص استفاده میشوند. مثلاً patch ها میگویند «خط دهم را از فلان فایل پاک کن» یا همچنین «خط ۲۶ را به این صورت تغییر بده». patch ها همچنین با نام diffها هم شناخته میشوند. چون توسط برنامهای به نامdiff تولید میشوند. همچنین ممکن است این دایرکتوری دربرگیرنده دیگر فایلهای مورد نیاز برای کامپایل یک برنامه باشد.
pkg-descr: این فایل حاوی توضیحات مفصلی درباره برنامه مورد نظر است.
pkg-plist: این فایل حاوی لیست تمامی فایلهایی است که توسط port مورد نظر نصب خواهند شد. همچنین در هنگام حذف یک port، تعیین میکند که چه فایلهایی باید از روی سیستم حذف شوند.
تمام این فایها در یک دایکتوری همنام با پورتِ مورد نظر قرار دارند. ممکن است یک پورت حاوی فایلهای بیشتری باشد که این فایلها تنها در موارد خاصی استفاده میشوند. اگر میخواهید در مورد این فایلها و به طور کلی در مورد پورتها بیشتر بدانید، توصیه میکنیم FreeBSD Porters handbook را مطالعه کنید.
خب گفتیم پورتها شامل فایلهایی هستند که تنها تعیین میکنند کدهای منبع باید چگونه کامپایل و نصب شوند؛ اما دربرگیرنده کدهای منبع واقعی نیستند. کدهای منبع را میتوانید از طریق CD-ROM یا اینترنت دریافت نمایید. کدهای منبع معمولاً توسط دستور tar به صورت archive درآمده و سپس توسط ابزارهایی مثل gzip یا bzip2 فشرده میشوند. به این فایلهای آرشیو شده و فشرده شده distfiles میگویند.
برای اینکه بتوانید port ها را بر روی سیستم خود نصب کنید، باید به عنوان کاربر ریشه (root) وارد سیستم شوید.
خب برای شروع با دستور cd وارد دایرکتوری حاوی پورت موردنظر شوید. در این مثال ما میخواهیم lsof را نصب کنیم. بنابراین وارد دایرکتوری lsof میشویم:
# cd /usr/ports/sysutils/lsof
خب وقتی که وارد دایرکتوری مورد نظر خود شدید میتوانید فایلهایی را که در مورد آنها بحث کردیم را مشاهده کنید. در مرحله بعد باید پورت مورد نظر خود را کامپایل کنید. کافیست تا دستور make را تایپ کنید:
# make >> lsof_4.57D.freebsd.tar.gz doesn\'t seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/. ===> Extracting for lsof-4.57 ... [extraction output snipped] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [configure output snipped] ... ===> Building for lsof-4.57 ... [compilation output snipped] ... #
بعد از اینکه دستور make را تایپ کردید، سیستم دایرکتوری /usr/ports/distfiles را برای پیدا کردن کدهای منبع جستجو خواهد کرد. اگر کدهای منبع در آنجا قرار نداشته باشند، از طریق اینترنت دانلود شده و در همان دایرکتوری ذخیره میشوند. به همین ترتیب شما میتوانید از کدهای منبع خود backup تهیه کرده و بعداً استفاده کنید.
خب بعد از اینکه کدهایمنبع دانلود شدند، از حالت فشرده خارج شده، پیکربندی و کامپایل میشوند. در هنگام پیکربندی، ممکن است یک منو باز شده و از شما خواسته شود تا گزینههایی را که دوست دارید برنامه مورد نظرتان با آن کامپایل شود را انتخاب کنید. بعد از انتخاب گزینهها، برنامه کامپایل خواهد شد. در مرحله بعد باید پورت مورد نظر خود را نصب کنید. برای نصب یک پورت، کافیست تا کلمه install را به دستور makeاضافه کنید:
# make install ===> Installing for lsof-4.57 ... [installation output snipped] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. #
خب بعد از اینکه پورت مورد نظر نصب شد، شما قادر به اجرای آن خواهید بود. در هنگام کامپایل، فایلهای موقت زیادی ایجاد میشود که این فایلها حجم زیادی از دیسک را اشغال میکنند. بهتر است این فایلهای موقت را پاک کنید. این کار نه تنها در مصرف دیسک صرفهجویی میکند، بلکه از اشکالاتی که ممکن است بعدها در هنگام آپدیت کردن یک پورت پیش آید هم جلوگیری میکند. پس همیشه فایلهای موقت را پاک کنید. این کار با اجرای دستورmake clean قابل انجام است.
# make clean ===> Cleaning for lsof-4.57 #
سیستم portها از ابزارfetch برای دانلود کدهای منبع استفاده میکند. به همین دلیل شما میتوانید یکسری متغیر محیطی مانند FTP_PASSIVE_MODE, FTP_PROXY و FTP_PASSWORD را بسته به نیاز خود مقداردهی کنید. برای دیدن لیست کامل این متغیرها fetch(3) را ببینید.
برای کاربرانی که نمیتوانند همیشه آنلاین باشند، دستور make fetch تدارک دیده شده. این دستور کدهای منبع را فقط دانلود میکند. کافیست این دستور را تحت دایرکتوری /usr/ports اجرا کنید تا تمام فایلهای مورد نیاز دانلود شود. همچنین این دستور تحت دایرکتوریهای سطح پایینتر مثل (/usr/ports/net) یا حتی باز همسطح پایینتر مثل /usr/ports/www/squid هم کار میکند. مثلاً اگر این دستور را تحت دایرکتوری /usr/ports/www/squid اجرا کنید، کدهایمنبع برنامه squid دانلود خواهد شد. دقت کنید که کدهای منبعِ متعلق به وابستگیها دانلود نخواهند شد. در صورتی که میخواهید کدهای منبع یک برنامه و تمام وابستگیهای آن را دانلود کنید، از fetch-recursive استفاده کنید.
در حالت کلی چند دستور هستند که بر روی زیردایرکتوریها به صورت بازگشتی عمل میکنند. این دستورات عبارتند از :
build,checksum,clean,configure,depends,extract,fetch,install و package.
حذف یک پورت
خب حالا که با نحوه نصب کردن پورتها آشنا شدید، شاید برایتان جالب باشد که بدانید چگونه میتوان آنها را حذف کرد. پورتها دقیقاً مانند بسته ها و با دستور pkg_delete حذف میشوند:
# pkg_delete lsof-4.57
جستجو و پیدا کردن یک برنامه برای نصب
اگر دقیقا نمیدانید که دنبال چه نرم افزاری هستید، میتوانید از روشهایی که در ادامه گفته خواهد شد استفاده کنید. فرض کنید قصد دارید نرم افزاری برای خواندن فایلهای PDF نصب کنید. اما نمیدانید چه نرم افزار هایی برای این کار وجود دارد. در این صورت ابتدا وارد درخت پورتها شوید:
cd /usr/ports
سپس دستور زیر را برای جستجو اجرا کنید:
make search key=pdf
در حالت کلی و سریعتر میتوان از دستور زیر برای پیدا کردن یک نرمافزار خاص استفاده کرد:
cd /usr/ports && make search name=query
ممکن است دقیقا بدانید که چه نرمافزاری را میخواهید نصب کنید و از نام کامل آن باخبر باشید، اما ندانید که نرم افزار مورد نظر در کجا قرار دارد. در این حالت میتوانید جستجو را بصورت زیر انجام دهید:
make search name=apache
تغییر دادن دایرکتوریهای پیشفرض
در هنگام کامپایل یک برنامه، فایلهای موقت زیادی ایجاد میشوند. متغیر WRKDIRPREFIX مسیری که این فایلهای موقت در آنجا ذخیره میشوند را تعیین میکند. همچنین برنامهها بعد از کامپایل شدن باید در جایی نصب شوند. متغیر PREFIX هم مسیر نصب برنامهها را مشخص میکند. با تغییر دادن مقدار این متغیر ها میتوانید این مسیرها را عوض کنید. بعضی اوقات این کار میتواند مفید باشد (یا شاید مجبور به انجام این کار باشیم)
در هر صورت میتوانید این مسیرها را بصورت زیر تعیین کنید:
# make WRKDIRPREFIX=/usr/home/example/ports install
دستور بالا پورت مورد نظر را در مسیر /usr/home/example/ports کامپایل کرده و سپس همه چیز را در مسیر /usr/local نصب میکند.
یا:
# make PREFIX=/usr/home/example/local install
دستور بالا پورت مورد نظر را در مسیر /usr/ports کامپایل کرده و سپس آن را در /usr/home/example/local نصب میکند.
البته میتوانید این دو را با هم ترکیب کنید:
# make WRKDIRPREFIX=../ports PREFIX=../local install
این متغیرها را میتوانید به صورت محیطی هم مقدار دهی کنید. برای انجام این کار به مستندات موجود برای پوسته مراجعه کنید.
پیکربندی مجدد پورتها
ممکن است در هنگام کامپایل کردن بعضی از پورتها منویی باز شده و از شما خواسته شود تا گزینههای دلخواه خود را برای عمل کامپایل انتخاب کنید. این منو فقط اولین باری که قصد کامپایل کردن یک پورت را دارید نمایش داده میشود و در آینده دیگر نمایش داده نخواهد شد. پس اگر خواستید برنامه را مجددا برای عمل کامپایل پیکربندی کنید چه؟ چگونه گزینه های کامپایل را اضافه، حذف و … کنیم؟ راههای زیادی برای انجام این کار وجود دارد. یک را این است که وارد شاخه ای که پورت مورد نظر در آن قرار دارد شده و سپس دستور زیر را تایپ کنید:
make config
منوی مورد نظر مجددا نمایش داده میشود و شما میتوانید برنامه خود را پیکربندی کنید. همچنین اگر قبلا برنامهای را پیکربندی کردهاید و حالا میخواهید بدانید که در هنگام پیکربندی چه گزینههایی را انتخاب کردهاید، میتوانید دستور زیر را تایپ کنید:
make showconfig
اگر میخواهید تمام تنظیمات را به حالت اولیه و پیشفرض برگردانید، میتوانید به این صورت عمل کنید:
make rmconfig
دستور بالا تمام پیکربندیهایی که انجام دادهاید را حذف کرده و شما میتوانید از ابتدا شروع به پیکربندی برنامه کنید.
عملیات بعد از نصب
بعد از اینکه برنامهای را نصب کردید، ممکن است بخواهید مستنداتی که به همراه آن برنامه وجود دارد را مطالعه کنید؛ یا فایلهای پیکربندی آن را ویرایش کنید، و یا اینکه ببینید آیا برنامه مورد نظر در هنگام بوت شدن سیستم اجرا میشود یا نه؟ (اگر برنامه مورد نظر یک daemon است)
بدیهی است که مراحل دقیق پیکربندی برنامهها با یکدیگر تفاوت دارد. با این حال اگر برنامه جدیدی نصب کردهاید و از خود میپرسید «حالا چه کار کنم؟» میتوانید نکات زیر را مطالعه کنید:
- از دستور pkg_info استفاده کرده و ببینید که برنامه مورد نظر چه فایلهایی را در سیستم نصب کرده و این فایلها در کجا قرار دارند. برای مثال اگر نسخه ۱٫۰٫۰ از برنامه FooPackage را نصب کردهاید، این دستور را اجرا کنید:
# pkg_info -L foopackage-1.0.0 | less
دستور بالا تمام فایلهای نصب شده توسط بسته را نشان خواهد داد. به فایلهایی که در دایرکتوری man/ نصب شدهاند توجه ویژهای داشته باشید؛ چون این فایلها بخش اصلی مستندات برنامه مورد نظر را تشکیل میدهند. دایرکتوری etc/ دربرگیرنده فایلهای پیکربندی برنامه مورد نظر است. همچنین دایرکتوری doc/ حاوی مستندات جامعتری درباره بسته مورد نظر میباشد.
اگر نمیدانید که کدام نسخه از برنامه را نصب کردهاید، میتوانید بصورت زیر عمل کنید:
# pkg_info | grep -i foopackage
دستور بالا تمام بستههایی که حاوی foopackage هستند را نمایش خواهد داد. بنابراین کلمه foopackage را با نام برنامه مورد نظر خود جایگزین کنید.
- بعد از اینکه فهمیدید صفحات manual برنامه مورد نظر در کجا قرار دارند، از دستور man برای مطالعه آنها استفاده کنید. بعضی از برنامهها حاوی فایلهای پیکربندی نمونهای هستند که میتوانید از آنها هم استفاده کنید. همچنین برای کسب اطلاعات دقیقتر مستنداتی را که در دایرکتوری doc/ قرار دارند را مطالعه کنید.
- اگر برنامه مورد نظر یک وبسایت یا صفحه خانگی دارد، با مراجعه به آن میتوانید اطلاعات بیشتری درباره آن برنامه کسب کنید. اطلاعاتی نظیر مستندات بیشتر و جامعتر، سوالات پر تکرار درباره آن برنامه، ارتباط با توسعه دهندگان و … . برای اینکه صفحه خانگی یک برنامه را پیدا کنید، میتوانید از دستور pkg_info بصورت زیر استفاده کنید:
# pkg_info foopackage-1.0.0
خطی با عنوان WWW: در خروجی وجود دارد که وبسایت رسمی برنامه مورد نظر را نشان میدهد. البته ممکن است بعضی از برنامهها این مورد را نداشته باشند.
- برنامههایی که باید در هنگام بوت شدن سیستم اجرا شوند (مانند سرویسهای اینترنتی) ، معمولا اسکریپتی را در مسیر /usr/local/etc/rc.d نصب میکنند. برای اطلاعات بیشتر این اسکریپت را بررسی کرده و در صورت نیاز آن را تغییر دهید.
دیگر دستورات
دستورات زیادی وجود دارد که میتوان از آنها بهمراه دستور make استفاده کرد:
fetch این دستور تمام فایلهای مورد نیاز برای کامپایل این پورت را دانلود خواهد کرد. دقت کنید که این دستور تنها فایلها را دانلود کرده و آنها را نصب نخواهد کرد. این فایلها در مسیر DISTDIR ذخیره میشوند.
checksum این دستور فایلها را جهت سالم بودن بررسی میکند. ممکن است بنا به دلایلی یک فایل بدرستی دانلود نشود یا اینکه بعد از دانلود بهر دلیلی تغییر کند یا … .
extract این دستور کدهای منبع را در مسیر WRKDIRPREFIX استخراج میکند.
patch در صورت نیاز ، تمام وصلههای موجود برای پورت مورد نظر را اعمال میکند.
configure این دستور پورت مورد نظر را پیکربندی میکند. بعضی از پورتها سوالاتی را از شما خواهند پرسید.
build پورت مورد نظر را کامپایل میکند. مشابه all عمل میکند.
install پورت مورد نظر را نصب کرده و آن را در سیستم ثبت میکند. این تمام کاریست که شما باید انجام دهید.
showconfig نشان میدهد که پورت مورد نظر قرار است با چه تنظیماتی کامپایل شود.
showconfig-recursive تنظیمات انجام شده برای کامپایل این پورت و سایر وابستگیهایش را نمایش میدهد.
rmconfig پیکربندی انجام شده توسط کاربر را پاک کرده و پیکربندی پیشفرض جایگزین میشود.
rmconfig-recursive پیکربندی انجام شده برای این پورت و تمام وابستگیهایش را پاک کرده و پیکربندی پیشفرض برای همه آنها جایگزین خواهد شد.
config-recursive پورت مورد نظر و تمام وابستگیهای آن برای عمل کامپایل پیکربندی میشوند. این کار توسط ابزار dialog انجام میشود.
fetch-list لیست فایلهای مورد نیاز برای کامپایل این پورت را چاپ میکند.
fetch-recursive کدهای منبع پورت مورد نظر و تمام وابستگیهای آن دانلود خواهند شد.
package-name نام و نسخه پورت مورد نظر را چاپ میکند.
package یک بسته باینری از این پورت ایجاد میکند. این گزینه باعث میشود تا پورت مورد نظر نصب شود؛ البته اگر در حال حاضر نصب نیست. بسته ایجاد شده یک فایل .tbz است که میتوانید به کمک دستور pkg_add آن را نصب کنید. بسته مورد نظر در مسیری که توسط متغیر PACKAGES مشخص شده ایجاد میشود. اگر این متغیر مقدار دهی نشده باشد، بسته مورد نظر در مسیر جاری ایجاد میشود.
package-recursive این دستور بسته های باینری از پورت مورد نظر به همراه تمام وابستگیهای آن ایجاد میکند.
دیگر متغیرها
متغیرهای زیادی وجود دارد که با مقدار دهی مناسب آنها میتوان کارهای جالبی انجام داد:
PORTSDIR این متغیر مشخص میکند که درخت پورتها در کجا قرار دارد. در سیستمعاملهای FreeBSD و OpenBSD این درخت در مسیر /usr/ports و در NetBSD در مسیر /usr/pkgsrc قرار دارد.
WRKDIRPREFIX مشخص میکند که فایلهای موقت در کجا ذخیره شوند. این متغیر میتواند در مواقعی که شاخه PORTSDIR بصورت فقط-خواندنی است، مفید باشد. (مثلا وقتی که درخت پورتها بر روی CDROM قرار دارد)
DISTDIR این متغیر مسیری که کدهای منبع (یا همان distfiles) در آنجا قرار دارند را مشخص میکند. معمولا کدهای منبع در مسیر PORTSDIR/distfiles قرار دارند.
PREFIX این متغیر مشخص میکند که برنامه مورد نظر در کجا نصب شود. معمولا برنامه ها در مسیر /usr/local نصب میشوند. اگر میخواهید آنها را در جای دیگری نصب کنید، میتوانید این مسیر را به دلخواه تنظیم کنید.
MASTER_SITES اگر کدهای منبع در مسیر DISTDIR قرار نداشتند، لازم است تا از طریق اینترنت دانلود شوند. سایتهای زیادی برای دانلود این کدهای منبع وجود دارد که این سایتها یکی یکی چک میشوند. اگر میخواهید سایتی را بعنوان سایت اصلی برای دریافت این کدهای منبع انتخاب کنید، میتوانید این متغیر را مقدار دهی کنید.
PATCH_SITES این متغیر سایتهایی را مشخص میکند که وصله ها قرار است از آنجا دانلود شوند.
MASTER_SITE_FREEBSD اگر این متغیر مقدار دهی شده باشد، تمام کدهای منبع از سایت رسمی FreeBSD دانلود خواهد شد.
FETCH_CMD فایلها معمولا از طریق ابزار fetch دانلود میشوند. اگر میخواهید آرگومانهای خاصی برای این برنامه ارسال کنید و یا اصلا از برنامه دیگری برای دانلود فایلها استفاده کنید، میتوانید این متغیر را به دلخواه مقدار دهی کنید.