FreeBSD مانند لینوکس، سیستم عاملی مبتنی بر یونیکس و اپن سورس و آزاد می باشد. در واقع BSD شاخه ای از یونیکس اولیه بود که رایگان در اختیار دیگران قرار نمی گرفت و FreeBSD مبتنی بر BSD اولیه است که اپن سورس و رایگان در اختیار عموم قرار گرفت. در FreeBSD از مجموعه Port ها برای نصب برنامه ها استفاده می شود. پورت ها در زیر دایرکتوری usr/ports/ به صورت دسته بندی شده، قرار دارند. هر پورت (که در زیر هر دایرکتوری قرار دارد) شامل تمامی فایل ها برای واکشی و کامپایل بسته نرم افزاری و نصب و اجرای آن بر روی سیستم است.در شکل زیر دایرکتوری های درون دایرکتوری usr/ports/ را می بینید که دسته بندی بسته های نرم افزاری را بر اساس نوع آنها نشان می دهد.
زیر هر دایرکتوری مربوط به هر بسته ی نرم افزاری، تمامی فایل های لازم برای کامپایل و اجرای آن بسته نرم افزاری بر روی سیستم وجود دارد. به طور مثال فایل های زیر برای نصب بسته اسکویید در FreeBSD در زیر دایرکتوری مربوط به آن وجود دارد.
cd /usr/ports/www/squid
ls
OUTPUT
Makefile distinfo files pkg-descr
کامپایل بسته نرم افزاری بسیار ساده استف تنها کافیست دستور make install یا make install clean را در زیر دایرکتوری مربوط به بسته نرم افزاری اجرا کنید. سپس Makefile سورس کد بسته نرم افزاری را واکشی، سپس آنرا از حالت فشرده خارج و Patch ها را اعمال و آنرا کامپایل و نصب می کند. البته امکان دانلود و استفاده از پورت های جدید از FreeBSD repository بر روی سیستم شما که نسبت به آنها قدیمی تر است نیز وجود دارد. شکل زیر بخشی از فایل Makefile مربوط به اسکویید را نشان می دهد که محل واکشی سورس کد بسته نرم افزری squid را مشخص شده است :
اما چگونه محل یک بسته زیر دایرکتوری usr/ports/ را پیدا کنیم؟
برای این کار از دستور whereis به همراه نام بسته نرم افزاری استفاده می کنیم.
whereis PACKAGE_NAME
whereis squid
whereis htop
روش دیگر برای پیدا کردن پورت مربوط به بسته نرم افزاری استفاده از make search name است. توسط روش زیر نخست باید به دایرکتوری usr/ports/ رفته و سپس دستور make search name را به همراه نام بسته مورد نظر اجرا کنید. در خروجی دستور زیر path مسیر پورت مورد نظر را نشان می دهد.
cd /usr/ports
make search name=PACKAGE_NAME
OR
cd /usr/ports;make search name=PACKAGE_NAME
البته می توانید از quicksearch نیز استفاده کنید که خروجی آن خلاصه تر است :
cd /usr/ports;make quicksearch name=PACKAGE_NAME
نصب پورت توسط دستور make install
پس از پیدا کردن محل پورت بسته مورد نظر باید با دستور cd به دایرکتوری آن رفته و سپس با مجوز root دستور make install را اجرا کنید. به طور مثال برای نصب اسکویید
cd /usr/ports/www/squid
make install
پس از واکشی بسته از محل مشخص شده در فایل Makefile ممکن است که صفحه ای مانند زیر نشان داده شود که Option ها یا گزینه های پیکربندی را برای بسته انتخاب کنید. توجه کنید که با استفاده از پورت ها مانند آنچه که به طور معمول در روند کامپایل سورس کد ها انجام می دهید، نیز در روند نصب پورت صورت می گیرد. پس شکل زیر مانند آن است که در هنگام کامپایل یک بسته جلوی دستور configure/. گزینه های پیکربندی آنرا مشخص کنید.
شکل زیر که مربوط به نصب Apache 2.2 است را نشان می دهد که بسته در حال واکشی (Fetch) شدن از منبع سورس کد که در Makefile مشخص شده است.
برای پاک شدن خودکار فایل tar (سورس کد) دانلود شده به جای make install از دستور زیر استفاده کنید :
make install distclean
و برای حذف بسته نصب شده از دستور زیر استفاده کنید. به طور مثال برای حذف بسته iftop
whereis iftop
Output : /usr/ports/net-mgmt/iftop
cd /usr/ports/net-mgmt/iftop
make deinstall
اگر دستور make deinstall را اجرا کنید و بسته نصب نشده باشد خطای زیر نشان داده می شود :
iftop not installed, skipping