تاریخچه

سیستم عامل FreeBSD به طور دائم در حال توسعه است. بعضی از افراد ترجیح می دهند که از نسخه های رسمی استفاده کنند و برخی دیگر ترجیح می دهند که به صورت مداوم با اخرین نسخه های این سیستم عامل هماهنگ باشند. هرچند که نسخه های رسمی هم از لحاظ باگ های امنیتی و مشکلات بحرانی به روزرسانی می شوند. صرف نظر از ورژن درحال استفاده، FreeBSD ابزارهای متعددی برای به روزرسانی و مهاجرت بین نسخه های مختلف سیستم ارائه می دهد.

به روز رسانی بسته های امنیتی، یکی از مهمترین بخش های پشتیبانی و نگهداری نرم افزارها و به ویژه سیستم عامل هاست. در گذشته به روزرسانی سیستم عامل FreeBSD یک کار طاقت فرسا بود و برای اعمال کردن یه بسته امنیتی باید سورس کد آن را کامپایل کرده و سیس کد کامپایل شده را به باینری تبدیل می کردیم و در مرحله اخر می توانستیم کدهای باینری را نصب کنیم.

روش های قدیمی در سیستم عامل FreeBSD به کمک نرم افزار freebsd-update به یک روش بسیار مدرن و راحت تبدیل شده است. این ابزار ساده دارای ۲ عملکرد خاص است. اول، بسته های به روزرسانی شده باینری و بسته های امنیتی را بدون نیاز به عمل خاصی بر روی سیستم نصب می کند. دوم، از ۲ قابلیت به روزرسانی جزئی و کلی برخوردار است.

بسته های به روزرسانی شده برای تمامی معماری ها قابل دسترس هستند و توسط تیم امنیت پشتیبانی می شوند.

قبل از ارائه هر نسخه سیستم عامل گروه پشتیبانی نکات مهمی در مورد قابلیت ها و امکانات جدید سیستم عامل در سایت قرار می دهند که توسط این لینک قابل مشاهده است.

نکته:
قبل از انجام پروسه به روزرسانی هر عمل freebsd-update را در crontab غیر فعال کنید.

تنظیمات اصلی

ممکن است بعضی از افراد بخواهند که فایل پیکربندی پیش فرض /etc/freebsd-update.conf را تغییر دهند که باعث کنترل بهتر عملیات می شود. در فایل ذکر شده توضیحات پیکربندی به صورت بسیار عالی قرار گرفته ولی خالی از لطف نیست که بعضی از مهم ترین قسمت ها را با هم مرور کنیم.

# Components of the base system which should be kept updated.
Components src world kernel 

این پارامترها کنترل می کنند که چه قسمت هایی از FreeBSD به روزرسانی شوند. به طور پیش فرض سورس کدها، هسته سیستم و کل سیستم پایه به روزرسانی می شود. اجزای سیستم دقیقا مانند قسمت های دردسترس برای به روزرسانی، به روز می شوند. برای مثال اضافه کردن ‎world/games قابلیت به روزرسانی به بسته های games را می دهد و src/bin قابلیت به روز رسانی را به سورس کدهای src/bin می دهد.

بهتر است که تنظیمات این قسمت را به طور پیش فرض رها کرد. برای تغییر تنظیمات بهتر است که کاربر لیستی دقیق از اجزای سیستم را برای به روزرسانی آماده کند اما این کار می تواند خطرهای زیادی را برای سورس کدها و یا بسته های باینری سیستم داشته باشد چون ممکن است با یک اشتباه کوچک در تنظیمات, سیستم دیگر درست به روزرسانی نشود.

# Paths which start with anything matching an entry in an IgnorePaths
# statement will be ignored.
IgnorePaths 

اضافه کردن مسیر در این قسمت به طور مثال /bin و یا /sbin مشخص می کند که سیستم در مسیرهای مشخص شده عمل به روزرسانی را انجام ندهد. این خصیصه در freebsd-update این امکان را به کاربر می دهد که با تعریف مسیر یا فایل مشخصی در این قسمت از تغییرات احتمالی بر آنها جلوگیری کند.

# Paths which start with anything matching an entry in an UpdateIfUnmodified
# statement will only be updated if the contents of the file have not been
# modified by the user (unless changes are merged; see below).
UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile

در این قسمت فایل ها یا مسیرهای موجود فقط در یک صورت به روزرسانی می شوند که تغییر نکرده باشند. هر گونه تغییر توسط کاربر باعث به ابطال رساندن فایل ها برای به روزرسانی می شود.

# If the user has modified file ownership, permissions, or flags, should
# FreeBSD Update retain this modified metadata when installing a new ersion
# of that file?
# KeepModifiedMetadata yes

یکی از امکانات دیگر freebsd-update به نام KeepModifiedMetadata می باشد که وظیفه ذخیره سازی تغییرات و نگه داری permission های فایل را به هنگام ترکیب کردن و به روزرسانی دارد.

# When upgrading to a new FreeBSD release, files which match MergeChanges
# will have any local changes merged into the version from the new release.
MergeChanges /etc/ /var/named/etc/

لیست پوشه ها با فایل های پیکربندی که در این قسمت قرار می گیرد توسط روشی که در freebsd-update قرار دارد به روزرسانی می شود ولی با این تفاوت که تنظیماتی که توسط کاربر بر روی فایل اعمال می شود را حفظ کرده و تغییرات جدید را در فایل اعمال می کند. این عملکرد ترکیب چندین بسته ‎diff(1)‎ می باشد که شباهت زیادی به دستور ‎mergemaster(8)‎ با قابلیت های کمتری می باشد.

# Directory in which to store downloaded updates and temporary
# files used by FreeBSD Update.
# WorkDir /var/db/freebsd-update

این پوشه وظیفه ذخیره سازی و نگهداری تمام بسته های دانلود شده توسط freebsd-update را داراست که حداقل نیازمند ۱ گیگ فضای آزاد می باشد.

 

به روز رسانی

به روز رسانی جزئی:

قبل از هر عملی ما می توانیم با دستور uname –a ورژن فعلی سیستم عامل را مشاهده کنیم

‎# FreeBSD  8.2-RELEASE FreeBSD 8.2-RELEASE #0: Fri Feb 18 02:24:46 UTC 2011
root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
نکته:
به ورژن سیستم عامل قبل از عمل به روز رسانی دقت کنید ‎ ۸٫۲-RELEASE #0

به روزرسانی سیستم عامل FreeBSD توسط بسته های باینری دارای ۲ قسمت مهم است: دانلود بسته های به روز رسانی شده و اعمال آنها.

برای دانلود کردن بسته های به روزرسانی شده فقط کافیست از دستور زیر استفاده کنید:

# freebsd-update fetch

بعد از اجرای این دستور برنامه freebsd-update بسته های جدید به روزرسانی شده را پیدا کرده و شروع به دانلود می کند و در اخر با پیغامی شبیه به این مواجه می شوید.

#The following files will be updated as part of updating to 8.2-RELEASE-p2:
/boot/kernel/kernel
/etc/rc.d/jail
/usr/bin/dig
...
نکته:
بعد از عمل fetch لیست تمامی فایل های به روزرسانی شده همراه با ورژنی که سیستم به آن ارتقاء پیدا خواهد کرد را نمایش می دهد ۸٫۲-RELEASE-p2 که در اینجا از ورژن ‎ ۸-۲ #۰ به ورژن ‎۸-۲ #p2 ارتقاء خواهیم داشت.
بعد از عمل fetch کردن می توانیم با دستور زیر تمامی بسته های دانلود شده را بر روی سیستم عامل نصب کنیم.
# freebsd-update install
Installing updates… done.

در پابان کار سیستم را با دستور Reboot راه اندازی مجدد می کنیم.