آپدیت کردن ports tree به وسیله cvsup

گفتیم برای نصب package ها در FreeBSD از روش port استفاده می کنیم . گفتیم بعد از اینکه port را نصب کردیم به شاخه مربوطه به package ی که می خواهیم نصب کنیم می رویم و دستور make install clean را تایپ می کنیم .

می دانیم که package ها به مرور زمان ارتقا پیدا می کنند و به اصطلاح update می شوند . اگر ما port tree خود را update نکنیم همیشه یک ورژن از package برای ما نصب می شود . مثلا ممکن است firefox 3.5 را داشته باشیم و به نسخه بالاتر نتوانیم ارتقا دهیم چون در port tree نعریف شده است که هنگامی من make install clean می زنم به server های mozilla مراجعه کند و ورژن 3.5 را دریافت و برای ما نصب کند . پس لازم است port tree خود را update کنیم . در FreeBSD را ه های مختلفی برای این کار وجود دارد که یکی از بهترین راه ها استفاده از cvsup می باشد

cvsup به تنهایی خود یک package می باشد برای نصب این package مراحل زیر را طی می کنیم .

# cd /usr/ports/net/cvsup-without-gui

به شاخه مورد نظر می رویم و دستور

# make install clean

را تایپ می کنیم و بعد از مدتی این package  نصب می شود .

حالا به شاخه زیر می رویم

/usr/share/examples/cvsup

و یکی از فایل های stable-supfile یا standard-supfile را به هر جایی که می خواستید copy می کنید که من فایل standard-supfile  را به شاخه etc با دستور زیر کپی می کنم

# cp standard-supfile /etc

خوب حالا این فایل را با استفاده از یک ادیتور فایل مانند Vi یا Vim یا edit یا mcedit باز می کنیم . که من از edit استفادهمی کنم.


پس در ترمینال تایپ می کنم

# edit /etc/standard-supfile

یک فایل متنی مشابه زیر را خواهید دید.

# $FreeBSD: src/share/examples/cvsup/standard-supfile,v 1.25.2.1.6.2 2009/04/15 04:24:24 kensmith Exp $
#
# This file contains all of the "CVSup collections" that make up the
# FreeBSD-current source tree.
#
# CVSup (CVS Update Protocol) allows you to download the latest CVS
# tree (or any branch of development therefrom) to your system easily
# and efficiently (far more so than with sup, which CVSup is aimed
# at replacing).  If you're running CVSup interactively, and are
# currently using an X display server, you should run CVSup as follows
# to keep your CVS tree up-to-date:
#
#	cvsup standard-supfile
#
# If not running X, or invoking cvsup from a non-interactive script, then
# run it as follows:
#
#	cvsup -g -L 2 standard-supfile
#
# You may wish to change some of the settings in this file to better
# suit your system:
#
# host=CHANGE_THIS.FreeBSD.org
#		This specifies the server host which will supply the
#		file updates.  You must change it to one of the CVSup
#		mirror sites listed in the FreeBSD Handbook at
#		http://www.freebsd.org/doc/handbook/mirrors.html.
#		You can	override this setting on the command line
#		with cvsup's "-h host" option.
#
# base=/var/db
#		This specifies the root where CVSup will store information
#		about the collections you have transferred to your system.
#		A setting of "/var/db" will generate this information in
#		/var/db/sup.  You can override the "base" setting on the
#		command line with cvsup's "-b base" option.  This directory
#		must exist in order to run CVSup.
#
# prefix=/usr
#		This specifies where to place the requested files.  A
#		setting of "/usr" will place all of the files requested
#		in "/usr/src" (e.g., "/usr/src/bin", "/usr/src/lib").
#		The prefix directory must exist in order to run CVSup.

# Defaults that apply to all the collections
#
# IMPORTANT: Change the next line to use one of the CVSup mirror sites
# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
*default host=CHANGE_THIS.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_7_2
*default delete use-rel-suffix

# If you seem to be limited by CPU rather than network or disk bandwidth, try
# commenting out the following line.  (Normally, today's CPUs are fast enough
# that you want to run compression.)
*default compress

## Main Source Tree.
#
# The easiest way to get the main source tree is to use the "src-all"
# mega-collection.  It includes all of the individual "src-*" collections.
src-all

# These are the individual collections that make up "src-all".  If you
# use these, be sure to comment out "src-all" above.
#src-base
#src-bin
#src-cddl
#src-contrib
#src-etc
#src-games
#src-gnu
#src-include
#src-kerberos5
#src-kerberosIV
#src-lib
#src-libexec
#src-release
#src-rescue
#src-sbin
#src-share
#src-sys
#src-tools
#src-usrbin
#src-usrsbin
# These are the individual collections that make up FreeBSD's crypto
# collection. They are no longer export-restricted and are a part of
# src-all
#src-crypto
#src-eBones
#src-secure
#src-sys-crypto

خوب در این فایل گزینه های زیادی وجود دارد و چون ما می خواهیم port tree را update کنیم به بقیه کاری نداریم و فقط باید گزینه های زیر را برای نیاز خود دستکاری کنیم

به خط

*default host=CHANGE_THIS.FreeBSD.org

و در اینجا یکی از server هایی را که می خواهیم port tree یا source کرنل سیستم ما update شود را وارد می کنیم

در سراسر دنیا سرور های زیادی وجود دارند که برای اینکار ساخته شده اند .با توجه به موقعیت جغرافیای خود با ید سرور نزدیکتر و سریع تری را انتخاب کنیم .لیست server هایی را که برای cvsup در freebsd استفاده می شوند را ی توانید در لینک زیر پیدا کنید

http://www.freebsd.org/doc/handbook/cvsup.html#CVSUP-MIRRORS

با توجه به محلی که من زندگی می کنم خط بالا را به صورت زیر تغییر می دهم

default host=cvsup14.FreeBSD.org

این یعنی اینکه برای cvsup از server جهاردهم freebsd که در آمریکا وجود دارد استفاده شود.

پس از مشخص نمودن server برای cvsup به آخر فایل standard-supfile می رویم وخط زیر را اضافه می کنیم

ports-all tag=.

این خط یعنی اینکه در هنگام cvsup نمودن فقط port tree آپدیت شود و بقیه چیز ها مانند source کرنل یا doc ها آپدیت نشوند.

خوب حالا تغییرات را ذخیره می کنیم .

اگر از edit استفاده کرده اید کافی است کلید Esc را فشار دهید صفحه جدیدی باز می شود و می پرسد که آیا تغییرات ذخیره شود یا نه که شما گزینه yes save را انتخاب می کنید.

اگر از mcedit استفاده می کنید کافی است کلید F2 را فشار دهید تا تغییرات ثبت شود و سپس F10  را فشار دهید تا خارج شوید.

اگر از Vi یا Vim استفاده می کنید کافی است به حالت دستوری بروید و عبارت

:wq

را تایپ کنید.

حالا در ترمینال دستور زیر را تایپ کنید

# cvsup /etc/standard-supfile

برنامه cvsup به server ی که برای cvsup مشخص کرده اید می رود و اطلاعات موجود در سیستم شما در مورد port tree را با اطلاعات server مقایسه می کند و port tree شما را با سرور cvsup یکی می کند اگر خروجی را به دقت مطالعه کنید  مشاهده می کند که در بعضی جا ها فایلی را edit و در بعضی جا ها فایل را delete می کند

ممکن است خروجی دستور بالا به شکل زیر باشد

Connected to cvsup14.FreeBSD.org
Updating collection src-all/cvs
Updating collection ports-all/cvs
 Edit ports/devel/p5-B-Utils/Makefile
 Edit ports/devel/p5-B-Utils/distinfo
 Edit ports/devel/p5-Config-Model/Makefile
 Edit ports/devel/p5-Config-Model/distinfo
 Edit ports/devel/p5-MooseX-Aliases/Makefile
 Edit ports/devel/p5-MooseX-Aliases/distinfo
 Edit ports/devel/p5-Mouse/Makefile
 Edit ports/devel/p5-Mouse/distinfo
 Edit ports/devel/p5-Test-Pod/Makefile
 Edit ports/devel/p5-Test-Pod/distinfo
 Edit ports/devel/p5-Test-Pod/pkg-plist
 Edit ports/devel/p5-mixin/Makefile
 Edit ports/devel/p5-mixin/distinfo
 Edit ports/devel/p5-mixin/pkg-plist
 Edit ports/devel/p5-namespace-clean/Makefile
 Edit ports/devel/p5-namespace-clean/distinfo
 Edit ports/www/p5-HTTP-Request-Params/Makefile
 Edit ports/www/p5-Handel/Makefile
 Edit ports/www/p5-Jifty/Makefile
 Edit ports/www/p5-MasonX-Request-WithApacheSession/Makefile
 Edit ports/www/p5-MojoMojo/Makefile
 Edit ports/www/p5-POE-Component-Client-HTTP/Makefile
 Edit ports/www/p5-POE-Component-Server-SimpleHTTP/Makefile
 Edit ports/www/p5-Template-Timer/Makefile
 Edit ports/www/p5-Test-HTTP-Server-Simple/Makefile
 Edit ports/www/p5-TestGen4Web-Runner/Makefile
 Edit ports/www/p5-URI-ToDisk/Makefile
 Edit ports/www/p5-W3C-LinkChecker/Makefile
 Edit ports/www/p5-WWW-Comic/Makefile
 Edit ports/www/p5-WWW-HatenaStar/Makefile
 Edit ports/www/p5-WWW-Mechanize-Pluggable/Makefile
 Edit ports/www/p5-WWW-Mechanize-Plugin-phpBB/Makefile
 Edit ports/www/p5-WWW-Mediawiki-Client/Makefile
 Edit ports/www/photo_gallery/Makefile
 Edit ports/www/rt36/Makefile
 Edit ports/www/syndigator/Makefile
Updating collection doc-all/cvs
Finished successfully

خوب الان می توانید به راحتی به شاخه port مراجعه کنید و با دستور make install clean برنامه یا package مورد نظر خود را نصب کنیدو آسوده باشید که آخرین ورژن را نصب کرده اید.

بهتر است دستور cvsup را هر روز اجرا کنید تا  port tree  شما همیشه آپدیت باشد

می توانید از crontab برای اجرای خود کار این دستور در زمان نشخص استفاده کنید.