بررسی اجمالی نحوه نصب نرم‌افزار‌ها

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

  • بسته‌های باینری طوری کامپایل شده‌اند که بر روی انواع مختلفی از سخت‌افزارها قابل اجرا بوده و همچنین جوابگوی نیازهای طیف وسیعی از کاربران باشند. با کامپایل یک برنامه از کدهای منبع، می توانید آن را مطابق سخت‌افزار رایانه خود کامپایل کرده و همچنین قابلیت های مورد نیاز خود را فعال کرده و از قابلیت های اضافه چشم‌ پوشی کنید.
  • اجازه‌نامه برخی از برنامه‌ها، مانع از توزیع آن‌ها به صورت بسته‌های باینری شده و آن برنامه‌ها حتماً باید به صورت کدهای منبع توزیع شوند.
  • بعضی از مردم به بسته‌های باینری اعتماد ندارند. با داشتن کدهای منبع شما خواهید توانست (به صورت تئوری هم که شده) آن را مطالعه کرده و اشکالات آن را برطرف و امکاناتی را به آن اضافه کنید.
  • اگر وصله‌ای (patch) برای یک برنامه داشته باشید، برای اعمال آن نیاز به کدهای منبع دارید.
  • بعضی‌ها دوست دارند تا کدهای منبع را همیشه در جایی داشته باشند. با این کار آن‌ها می توانند آن را بخوانند، چیزهای جالبی از آن کشف کنند، از کدهای آن قرض بگیرند (البته با رعایت اجازه‌نامه) و … .

نصب پورت‌ها

شما باید پورت‌ها را بر روی سیستم‌تان نصب کرده باشید تا بتوانید از آن‌ها استفاده کنید. در هنگام نصب FreeBSD می توانید آن‌ها را به همراه سایر اجزا برای نصب انتخاب کنید. اگر به هر دلیلی در هنگام نصب FreeBSD ، پورت ها را نصب نکرده‌اید می توانید با راهکارهایی که در ادامه آمده است اقدام به نصب پورت ها نمایید.

روش CVSup

یکی از سریع ترین روش ها برای نصب و به روزرسانی پورت ها استفاده از پروتکل CVSup است.

نکته:
یک نسخه پیاده‌سازی شده از پروتکل CVSup در FreeBSD وجود دارد که با نام csup شناخته می شود.

اگر اولین بار است که csup را اجرا می‌کنید، مطمئن شوید که دایرکتوری /usr/ports خالی باشد. سپس csup را به صورت زیر اجرا کنید:

# csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

البته بهتر است cvsup.FreeBSD.org را به سروری که در نزدیکی شما قرار دارد تغییر دهید.

دفعات بعد که 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
  1. گزینه Configure را انتخاب کرده و دکمه Enter را فشار دهید.
  2. گزینه Distributions را انتخاب کرده و Enter را فشار دهید.
  3. گزینه ports را انتخاب کرده و Space را فشار دهید.
  4. گزینه Exit را انتخاب کرده و Enter را فشار دهید.
  5. رسانه نصب خود را انتخاب کنید (مثلاً FTP, CD-ROM و …)
  6. گزینه Exit را انتخاب کرده و Enter را فشار دهید.
  7. 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
#
نکته:
می توانید این سه مرحله را با اجرای دستور make install clean با هم ترکیب کنید.

سیستم port‌ها از ابزارfetch برای دانلود کد‌های منبع استفاده می‌کند. به همین دلیل شما می‌توانید یکسری متغیر محیطی مانند FTP_PASSIVE_MODE, FTP_PROXY و FTP_PASSWORD را بسته به نیاز خود مقدار‌دهی کنید. برای دیدن لیست کامل این متغیرها ‎fetch را ببینید.

برای کاربرانی که نمی‌توانند همیشه آنلاین باشند، دستور make fetch تدارک دیده شده. این دستور کدهای منبع را فقط دانلود می‌کند. کافی است این دستور را تحت دایرکتوری /usr/ports اجرا کنید تا تمام فایل های مورد نیاز دانلود شود. همچنین این دستور تحت دایرکتوری‌های سطح پایین تر مثل (/usr/ports/net) یا حتی باز هم‌سطح پایین تر مثل /usr/ports/www/squid هم کار می‌کند. مثلاً اگر این دستور را تحت دایرکتوری /usr/ports/www/squid اجرا کنید، کدهای‌منبع برنامه squid دانلود خواهد شد. دقت کنید که کدهای منبعِ متعلق به وابستگی‌ها دانلود نخواهند شد. در صورتی که می خواهید کدهای منبع یک برنامه و تمام وابستگی‌های آن را دانلود کنید، از fetch-recursive استفاده کنید.

نکته:
می توانید تمام پورت های موجود در یک دسته (مثلاً net) را با اجرای دستورmake در یک دایرکتوری سطح بالا کامپایل کنید. (دقیقاً مثل make fetch)

در حالت کلی چند دستور هستند که بر روی زیر‌دایرکتوری‌ها به صورت بازگشتی عمل می‌کنند. این دستورات عبارتند از:

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 دانلود می‌شوند. اگر می‌خواهید آرگومانهای خاصی برای این برنامه ارسال کنید و یا اصلا از برنامه دیگری برای دانلود فایلها استفاده کنید، می توانید این متغیر را به دلخواه مقدار دهی کنید.