کوتاه کردن زمان نصب برنامه ها با CCACHE

می دانیم در FreeBSD برای نصب برنامه ها از port استفاده می کنیم و می دانیم که در این روش برنامه مورد نظر در روی سیستم compile می شود و بعد از compile بر روی سیستم نصب می شود . اکثر برنامه هایی که تصب می شود با زبان برنامه نویسی  C نوشته شده اند  و معمولا برای کار کردن احتیاج به compile ان برنامه می باشد .

در FreeBSD کامپایل بعضی از برنامه ها ممکن است زمان زیادی را اشغال کند مخصوصا اگر سیستم قدیمی و کند باشد . در فرآیند نصب برنامه ای برای برنامه دیگر compile می شود و اگر چنانچه دوباره به این برنامه احتیاج داشت برای برنامه دیگری باید فرآیند کامپایل دوباره انجام گیرد . برای روشن شدن موضوع به مثال زیر توجه کنید .

فرض می کنیم برای نصب برنامه x به کامپایل برنامه  y احتیاج است و باید y کامپایل شود تا x نصب گردد حال ممکن است در هنگام نصب x به برنامه z نیز احتیاج شود . برنامه z نیز برای کار کردن و ساخته شده احتیاج به کامپایل y دارد . در حالت عادی بعد از کامپایل y  برای  x نصب ادامه می یابد تا می رسد به z  و چون z به y احتیاج دارد پس باید دوباره y کامپایل شود . پس می بینیم  y دوباره یکی برای x و دفعه بعد برای z کامپایل شده است که این زمان بر می باشد.


حالا فرض کنید برای نصب یک برنامه ممکن است هزاران کامپایل هم نوع انجام شود د راین صورت زمان زیادی صرف compile می شود . در این حالت  است  که برنامه ای به ccache  به داد می رسد این برنامه در FreeBSD کامپایل شده برنامه ای برای خود نگاه می دارد که اگر در جای دیگری به این برنامه کامپایل شده احتیاج شد دوباره مجبور به کامپایل آن برنامه نشود و این در صرفه جویی زمان برای نصب برنامه کمک فراوانی می کند.

برای استفاده از ccache باید این برنامه یا port نصب شود تا سیستم با استفاده از آن در نصب برنامه ها در زمان صرفه جویی کند . برای نصب ccache در FreeBSD کافی است در ترمینال دستور زیر را تایپ کنیم .

 # cd /usr/ports/devel/ccache
# make install clean

بعد از مدتی این برنامه نصب می شود . برای استفاده سیستم از این برنامه باید مراحل زیر حتما طی شود . حالا با برنامه ویرایشگری مانند edit یا mcedit یا nano یا VI  فایل زیر را باز می کنیم

/etc/make.conf
 
و در آن عبارت های زیر را قرار می دهیم
CC=/usr/local/libexec/ccache/world-cc
 CXX=/usr/local/libexec/ccache/world-c++

حال اگر از csh به عنوان SHELL استفاده می کنید کافی است فایل cshrc خود که در پوشه خانگی قرار دارد باز کنید و عبارت های زیر را در آن قرار دهید .

# set ccache varibles
setenv PATH /usr/local/libexec/ccache:$PATH
setenv CCACHE_PATH /usr/bin:/usr/local/bin
setenv CCACHE_DIR /var/tmp/ccache
setenv CCACHE_LOGFILE /var/log/ccache.log

# set ccache temp size to 512MB (default 1GB)
if ( -x /usr/local/bin/ccache ) then
  /usr/local/bin/ccache -M 512m > /dev/null
endif

در فایل بالا ما تعریف کردیم که cache برنامه در چه جایی قرار گیرد که در این مثال شاخه var است و همچنین تعریف کردیم که میزان فضای اشغال شده بوسیله این برنامه در چه حدی باشد .

حال کافی است سیستم را ریست کنیم و شروع به compile برنامه سنگینی مانند نصب openofffice بعد از ریست کنیم ببینیم چه قدر زمان طول می کشد .

اگر سیستم شما یک سیستم پنتیوم چهار سه گیگاهرتز باشد و دارای ۲.۵ گیگ رم باشد . کامپایل OpenOffice  بدون CCACHE در حدود  ۱۰ ساعت طول می کشد ولی اگر از CCACHE استفاده کنید این زمان به ۳ ساعت می رسد  یعنی چیزی در حدود ۷ ساعت در زمان صرفه جویی کرده اید .