FreeBSD Porter ÊÖ²á

The FreeBSD Documentation Project

FreeBSD ÖÐÎļƻ®

FreeBSDÊÇFreeBSD»ù½ð»áµÄ×¢²áÉ̱ꡣ

UNIXÊÇOpen GroupÔÚÃÀ¹úºÍÆäËü¹ú¼ÒµÄ×¢²áÉ̱ꡣ

Sun, Sun Microsystems, SunOS, Solaris, Java, JDK, ÒÔ¼° OpenJDK ÊÇ Sun Microsystems, Inc. ÔÚÃÀ¹úºÍÆäËü¹ú¼ÒµÄÉ̱ê»ò×¢²áÉ̱ꡣ

Apple and QuickTimeÊÇApple Computer, Inc.µÄÉ̱꣬ ÔÚÃÀ¹úºÍÆäËü¹ú¼Ò×¢²á¡£

Macromedia and FlashÊÇMacromedia, Inc. ÔÚÃÀ¹úºÍ/»òÆäËü¹ú¼ÒµÄÉ̱ê»ò×¢²áÉ̱ꡣ

Microsoft, Windows, and Windows MediaÊÇMicrosoft Corporation ÔÚÃÀ¹úºÍ/»òÆäËü¹ú¼ÒµÄÉ̱ê»ò×¢²áÉ̱ꡣ

PartitionMagicÊÇPowerQuest CorporationÔÚÃÀ¹úºÍ/»òÆäËü¹ú¼ÒµÄ×¢²áÉ̱ꡣ

Ðí¶àÖÆÔìÉ̺;­ÏúÉÌʹÓÃһЩ³ÆÎªÉ̱êµÄͼ°¸»òÎÄ×ÖÉè¼ÆÀ´ÕÃÏÔ×Ô¼ºµÄ²úÆ·¡£ ±¾ÎĵµÖгöÏֵģ¬ Ϊ FreeBSD Project ËùÖªÏþµÄÉ̱꣬ºóÃæ½«ÒÔ '"' »ò '®' ·ûºÅÀ´±ê×¢¡£

ÖØÒª: ±¾ÎÄÖÐÐí¿ÉÖ¤µÄ·Ç¹Ù·½ÖÐÎÄ·­Òë½ö¹©²Î¿¼£¬ ²»×÷ΪÅж¨ÈκÎÔðÈεÄÒÀ¾Ý¡£ÈçÓëÓ¢ÎÄÔ­ÎÄÓгöÈ룬ÔòÒÔÓ¢ÎÄÔ­ÎÄΪ׼¡£

ÔÚÂú×ãÏÂÁÐÐí¿ÉÌõ¼þµÄǰÌáÏ£¬ ÔÊÐíÔÙ·Ö·¢»òÒÔÔ´´úÂë (SGML DocBook) »ò ¡°±àÒ롱 (SGML, HTML, PDF, PostScript, RTF µÈ) µÄ¾­¹ýÐ޸ĻòδÐ޸ĵÄÐÎʽ£º

  1. ÔÙ·Ö·¢Ô´´úÂë (SGML DocBook) ±ØÐë²»¼ÓÐ޸ĵı£ÁôÉÏÊö°æÈ¨¸æÊ¾¡¢ ±¾Ìõ¼þÇåµ¥ºÍÏÂÊöÆúȨÊé×÷Ϊ¸ÃÎļþµÄ×îÏÈÈô¸ÉÐС£

  2. ÔÙ·Ö·¢±àÒëµÄÐÎʽ (ת»»ÎªÆäËüDTD¡¢ PDF¡¢ PostScript¡¢ RTF »òÆäËüÐÎʽ)£¬ ±ØÐ뽫ÉÏÊö°æÈ¨¸æÊ¾¡¢±¾Ìõ¼þÇåµ¥ºÍÏÂÊöÆúȨÊ鏴֯µ½Óë·Ö·¢Æ·Ò»Í¬ÌṩµÄÎļþ£¬ ÒÔ¼°ÆäËü²ÄÁÏÖС£

ÖØÒª: ±¾ÎĵµÓÉ FREEBSD DOCUMENTATION PROJECT ¡°°´ÏÖ×´Ìõ¼þ¡± Ìṩ£¬ ²¢ÔÚ´ËÃ÷ʾ²»ÌṩÈκÎÃ÷ʾ»ò°µÊ¾µÄ±£ÕÏ£¬ °üÀ¨µ«²»ÏÞÓÚ¶ÔÉÌÒµÊÊÏúÐÔ¡¢ ¶ÔÌØ¶¨Ä¿µÄµÄÊÊÓÃÐԵݵʾ±£ÕÏ¡£ ÈκÎÇé¿öÏ£¬ FREEBSD DOCUMENTATION PROJECT ¾ù²»¶ÔÈκÎÖ±½Ó¡¢ ¼ä½Ó¡¢ żȻ¡¢ ÌØÊâ¡¢ ³Í·£ÐԵģ¬ »ò±ØÈ»µÄËðʧ (°üÀ¨µ«²»ÏÞÓÚÌæ´úÉÌÆ·»ò·þÎñµÄ²É¹º¡¢ ʹÓᢠÊý¾Ý»òÀûÒæµÄËðʧ»òÓªÒµÖжÏ) ¸ºÔ𣬠ÎÞÂÛÊÇÈçºÎµ¼ÖµIJ¢ÒÔÈκÎÓÐÔðÈÎÂß¼­µÄ£¬ ÎÞÂÛÊÇ·ñÊÇÔÚ±¾ÎĵµÊ¹ÓÃÒÔÍâÒÔÈκη½Ê½²úÉúµÄÆõÔ¼¡¢ ÑϸñÔðÈλòÊÇÃñÊÂÇÖȨÐÐΪ(°üÀ¨Êèºö»òÆäËü)Öеģ¬ ¼´Ê¹Òѱ»¸æÖª·¢Éú¸ÃËðʧµÄ¿ÉÄÜÐÔ¡£

Redistribution and use in source (SGML DocBook) and 'compiled' forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code (SGML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified.

  2. Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

ÖØÒª: THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Ŀ¼
µÚ1Õ¡¡½éÉÜ
µÚ2Õ¡¡×ÔÐÐÖÆ×÷Рport
µÚ3Õ¡¡¼òµ¥µÄ port
3.1 ±àд Makefile
3.2 ´´½¨ÃèÊöÎļþ
3.2.1 pkg-descr (¹ØÓÚ port µÄÈß³¤ÃèÊöÎļþ)
3.2.2 pkg-plist (port µÄ×°Ïäµ¥)
3.3 ´´½¨Ð£ÑéºÍÎļþ
3.4 ²âÊÔ port
3.5 Óà portlint À´¼ì²é port
3.6 ÌύРport
µÚ4Õ¡¡¸´Ô Porting
4.1 Õû¸öϵͳÊÇÈçºÎÔËתµÄ?
4.2 »ñȡԴ´úÂë
4.3 ÐÞ¸Ä port
4.4 ´ò²¹¶¡
4.5 ÅäÖÃ
4.6 ´¦ÀíÓû§ÊäÈë
µÚ5Õ¡¡ÅäÖà Makefile
5.1 ×÷Õß·¢²¼µÄ´úÂë
5.2 ̟̞
5.2.1 PORTNAME ºÍ PORTVERSION
5.2.2 PORTREVISION ºÍ PORTEPOCH
5.2.3 PKGNAMEPREFIX ºÍ PKGNAMESUFFIX
5.2.4 LATEST_LINK
5.2.5 °üÃüÃû¹æÔò
5.3 ·ÖÀà
5.3.1 CATEGORIES (ËùÊô·ÖÀà)
5.3.2 ĿǰµÄ·ÖÀà±í
5.3.3 Ñ¡ÔñÕýÈ·µÄ·ÖÀà
5.3.4 ÈçºÎÌáÒ齨Á¢ÐµķÖÀà
5.3.5 ÈçºÎÌáÒé¶Ô·ÖÀà½øÐÐÖØÐÂ×éÖ¯
5.4 Ô´Âë°üÎļþ
5.4.1 DISTVERSION/DISTNAME (Ô´Âë°ü°æ±¾ºÅ/Ãû³Æ)
5.4.2 MASTER_SITES (Ö÷Á÷ÏÂÔØÕ¾µã)
5.4.3 EXTRACT_SUFX (ѹËõ°üËùÓõÄÀ©Õ¹Ãû)
5.4.4 DISTFILES (È«²¿Ô´´úÂë°ü)
5.4.5 EXTRACT_ONLY (Ö»½âѹËõ²¿·ÖÔ´Îļþ)
5.4.6 PATCHFILES (ͨ¹ýÏÂÔØµÃµ½µÄ²¹¶¡Îļþ)
5.4.7 À´×Ô²»Í¬Õ¾µãµÄ¶à¸öÔ´´úÂë°ü»ò²¹¶¡Îļþ (MASTER_SITES:n)
5.4.8 DIST_SUBDIR (¶ÀÁ¢µÄÔ´Âë°ü×ÓĿ¼)
5.4.9 ALWAYS_KEEP_DISTFILES (Ò»Ö±±£´æÔ´Âë°ü)
5.5 MAINTAINER (¼à»¤ÈË)
5.6 COMMENT (Ò»¾ä»°ËµÃ÷)
5.7 ÒÀÀµ¹ØÏµ
5.7.1 LIB_DEPENDS (ÒÀÀµµÄº¯Êý¿â/¹²Ïí¿â)
5.7.2 RUN_DEPENDS (ÒÀÀµµÄÔËÐл·¾³)
5.7.3 BUILD_DEPENDS (ÒÀÀµµÄÁª±à»·¾³)
5.7.4 FETCH_DEPENDS (ÒÀÀµµÄÏÂÔØ»·¾³)
5.7.5 EXTRACT_DEPENDS (ÒÀÀµµÄ½âѹËõ»·¾³)
5.7.6 PATCH_DEPENDS (ÒÀÀµµÄ´ò²¹¶¡»·¾³)
5.7.7 USE_*
5.7.8 ÔÚÒÀÀµ¹ØÏµÖÐÖ¸¶¨×îµÍ°æ±¾
5.7.9 ¹ØÓÚÒÀÀµ¹ØÏµµÄ²¹³ä˵Ã÷
5.7.10 Ñ­»·µÄÒÀÀµ¹ØÏµÊÇÖÂÃüµÄ
5.8 MASTERDIR (Ö÷ port ËùÔÚµÄĿ¼)
5.9 Áª»úÊÖ²á
5.10 Info Îļþ
5.11 Makefile Ñ¡Ïî
5.11.1 ¿ª¹Ø (Knobs)
5.11.2 OPTIONS (²Ëµ¥Ê½¿ÉÑ¡Ïî)
5.11.3 ×Ô¶¯¼¤»îµÄÌØÐÔ
5.12 Ö¸¶¨¹¤×÷ÁÙʱĿ¼
5.12.1 WRKSRC (¿ªÊ¼Áª±à²Ù×÷µÄĿ¼Ãû)
5.12.2 NO_WRKSUBDIR (²»ÐèÒªÁÙʱµÄÁª±àĿ¼)
5.13 ´¦Àí³åÍ»
5.13.1 CONFLICTS_INSTALL
5.13.2 CONFLICTS_BUILD
5.13.3 CONFLICTS
5.14 °²×°Îļþ
5.14.1 INSTALL_* ºê
5.14.2 ¶Ô¿ÉÖ´ÐÐÎļþºÍ¶¯Ì¬Á¬½Ó¿â×öÍÑÄ£ (strip) ²Ù×÷
5.14.3 °²×°Ò»¸öĿ¼ÏµÄÈ«²¿Îļþ
5.14.4 °²×°¸½¼ÓµÄÎĵµ
5.14.5 ×ÓĿ¼
µÚ6Õ¡¡ÌØÊâÇé¿ö
6.1 ¹²Ïí¿â
6.2 Ports µÄ·¢ÐÐÏÞÖÆ
6.2.1 NO_PACKAGE (½ûÖ¹±àÒë½á¹û´ò°ü)
6.2.2 NO_CDROM (½ûÖ¹ÒÔ CDROM ·¢ÐÐÔ¤±àÒë°ü)
6.2.3 NOFETCHFILES (²»×Ô¶¯×¥È¡Ö¸¶¨µÄÎļþ)
6.2.4 RESTRICTED (½ûÖ¹ÈκÎÐÎʽµÄÔÙ·Ö·¢)
6.2.5 RESTRICTED_FILES (½ûֹijЩÎļþµÄÔÙ·Ö·¢)
6.3 Áª±à»úÖÆ
6.3.1 Ports µÄ²¢ÐÐÁª±à
6.3.2 make¡¢ gmake£¬ ÒÔ¼° imake
6.3.3 configure ½Å±¾
6.3.4 ʹÓà scons
6.4 ÀûÓÃ GNU autotools
6.4.1 ÈëÃÅ
6.4.2 libtool
6.4.3 libltdl
6.4.4 autoconf ºÍ autoheader
6.4.5 automake ºÍ aclocal
6.5 ʹÓà GNU gettext
6.5.1 »ù±¾Ó÷¨
6.5.2 ¿ÉÑ¡Ó÷¨
6.5.3 ´¦ÀíÏûÏ¢±à¼Ŀ¼
6.6 ʹÓà perl
6.7 ʹÓà X11
6.7.1 X.Org ×é¼þ
6.7.2 ÐèҪʹÓà Motif µÄ port
6.7.3 X11 ×ÖÌå
6.7.4 ͨ¹ý Xvfb À´»ñµÃÐéÄâµÄ DISPLAY
6.7.5 ×ÀÃæÏî
6.8 ʹÓà GNOME
6.9 ʹÓà Qt
6.9.1 ÔÚ port ÖÐʹÓà Qt
6.9.2 ×é¼þµÄÑ¡Ôñ (½öÏÞ Qt 4.x)
6.9.3 ÆäËû¿¼ÂÇ
6.10 ʹÓà KDE
6.10.1 ±äÁ¿¶¨Òå (Ö»ÓÃÓÚ KDE 3.x)
6.10.2 ÓÃÓÚ KDE 4 µÄ±äÁ¿¶¨Òå
6.11 ʹÓà Java
6.11.1 ±äÁ¿¶¨Òå
6.11.2 ²ÉÓà Ant ½øÐÐÁª±à
6.11.3 ×î¼Ñʵ¼ù
6.12 Web Ó¦Ó㬠Apache ºÍ PHP
6.12.1 Apache
6.12.2 Web Ó¦ÓÃ
6.12.3 PHP
6.12.4 PEAR Ä£¿é
6.13 ʹÓà Python
6.14 ʹÓà Tcl/Tk
6.15 ʹÓà Emacs
6.16 ʹÓà Ruby
6.17 ʹÓà SDL
6.18 ʹÓà wxWidgets
6.18.1 ½éÉÜ
6.18.2 °æ±¾µÄÑ¡Ôñ
6.18.3 Ñ¡Ôñ×é¼þ
6.18.4 Unicode
6.18.5 ¼ì²âÒѰ²×°µÄ°æ±¾
6.18.6 ¶¨ÒåµÄ±äÁ¿
6.18.7 ÔÚ bsd.port.pre.mk ÖнøÐд¦Àí
6.18.8 ¶îÍâµÄ configure ²ÎÊý
6.19 ʹÓà Lua
6.19.1 ½éÉÜ
6.19.2 Ñ¡Ôñ°æ±¾
6.19.3 ×é¼þµÄÑ¡Ôñ
6.19.4 ¼ì²âϵͳÖÐÒѰ²×°µÄ°æ±¾
6.19.5 ¶¨ÒåµÄ±äÁ¿
6.19.6 ÔÚ bsd.port.pre.mk ʱ½øÐд¦Àí
6.20 ʹÓà Xfce
6.21 ʹÓà Mozilla
6.22 ʹÓÃÊý¾Ý¿â
6.23 Æô¶¯ºÍÍ£Ö¹·þÎñ (rc ½Å±¾)
6.23.1 Ð¶ÔØÊ±Í£Ö¹·þÎñ
6.24 Ìí¼ÓÓû§ºÍÓû§×é
6.25 ÒÀÀµÄÚºËÔ´´úÂëµÄ Ports
µÚ7Õ¡¡¸ß¼¶ pkg-plist Ó÷¨
7.1 ¸ù¾Ý make ±äÁ¿¶Ô pkg-plist ½øÐÐÐÞ¸Ä
7.2 ¿ÕĿ¼
7.2.1 ÇåÀí¿ÕĿ¼
7.2.2 ÈçºÎ½¨Á¢¿ÕĿ¼
7.3 ÅäÖÃÎļþ
7.4 ¶¯Ì¬×°Ïäµ¥Ó뾲̬װÏäµ¥µÄ¶Ô±È
7.5 ×°Ïäµ¥ (package list) µÄ×Ô¶¯»¯ÖÆ×÷
µÚ8Õ¡¡pkg-* Îļþ
8.1 pkg-message (°²×°Ô¤±àÒë°üʱÏÔʾµÄÏûÏ¢Îļþ)
8.2 pkg-install (°²×°Ô¤±àÒë°üʱִÐеĽű¾Îļþ)
8.3 pkg-deinstall (Ð¶ÔØÊ±Ö´ÐеĽű¾Îļþ)
8.4 pkg-req (°²×°Ô¤±àÒë°üʱ¼ì²âÊÇ·ñÓ¦Ö´ÐвÙ×÷µÄ½Å±¾Îļþ)
8.5 ¸Ä±ä pkg-* ÎļþµÄÃû×Ö
8.6 ʹÓà SUB_FILES ºÍ SUB_LIST
µÚ9Õ¡¡²âÊÔÄúµÄ port
9.1 ÔËÐÐ make describe
9.2 Portlint
9.3 ʹÓà Port Tools À´Íê³É²âÊÔ
9.4 PREFIX (°²×°Ê±µÄ¶¥¼¶Ä¿Â¼Ãû) ºÍ DESTDIR
9.5 Tinderbox
µÚ10Õ¡¡Éý¼¶Ò»¸ö port
10.1 ʹÓà CVS ÖÆ×÷²¹¶¡
10.2 UPDATING ºÍ MOVED Îļþ
µÚ11Õ¡¡Ports µÄ°²È«
11.1 °²È«ÎªºÎÈç´ËÖØÒª
11.2 ÐÞ¸´°²È«Â©¶´
11.3 ֪ͨÕû¸öÓû§ÈºÌå
11.3.1 VuXML Êý¾Ý¿â
11.3.2 VuXML ¼ò½é
11.3.3 ²âÊÔÄú¶Ô VuXML Êý¾Ý¿âËù×÷µÄÐÞ¸Ä
µÚ12Õ¡¡¸Ã×öʲôºÍ²»¸Ã×öʲô
12.1 ½éÉÜ
12.2 WRKDIR (Áª±àʱʹÓõÄÁÙʱĿ¼)
12.3 WRKDIRPREFIX (ÓÃÓÚÁª±àµÄÁÙʱĿ¼µÄ¸¸Ä¿Â¼Ãû)
12.4 Çø·Ö²»Í¬µÄ²Ù×÷ϵͳ£¬ ÒÔ¼° OS µÄ°æ±¾
12.5 __FreeBSD_version Öµ
12.6 ÔÚ bsd.port.mk Ö®ºóдһЩÄÚÈÝ
12.7 ÔÚ wrapper ½Å±¾ÖÐʹÓà exec Óï¾ä
12.8 ÀíÐÔÐÐÊÂ
12.9 ×ñÑ­ CC ºÍ CXX ÉèÖÃ
12.10 ×ñÑ­ CFLAGS
12.11 Ï߳̿â
12.12 ·´À¡
12.13 README.html
12.14 ʹÓà BROKEN¡¢ FORBIDDEN »ò IGNORE ×èÖ¹Óû§°²×° port
12.14.1 ±äÁ¿
12.14.2 ʵÏÖ˵Ã÷
12.15 ʹÓà DEPRECATED »ò EXPIRATION_DATE ±íʾij¸ö port ½«±»É¾³ý
12.16 ±ÜÃâʹÓà .error ½á¹¹
12.17 ¶ÔÓÚ sysctl µÄʹÓÃ
12.18 ÖØÐ·¢²¼µÄ distfiles
12.19 ÔÓ¼Ç
µÚ13Õ¡¡Ê¾·¶µÄ Makefile
µÚ14Õ¡¡±£³Öͬ²½
14.1 FreshPorts
14.2 ´úÂë¿âµÄ Web ·ÃÎʽçÃæ
14.3 FreeBSD Ports ÓʼþÁбí
14.4 λÓÚ pointyhat.FreeBSD.org µÄ FreeBSD Port Áª±à¼¯Èº
14.5 FreeBSD µÄ Ports Distfile ɨÃèÆ÷
14.6 FreeBSD µÄ Ports ×·×Ùϵͳ
±í¸ñÇåµ¥
±í5-1. ³£ÓõÄħÊõ MASTER_SITES ºê
±í5-2. ³£ÓÃµÄ USE_* ±äÁ¿
±í5-3. ³£¼ûµÄ WITH_* ºÍ WITHOUT_* ±äÁ¿
±í6-1. Óë gmake ÓÐ¹ØµÄ port ±äÁ¿
±í6-2. ÓÃÓÚÓõ½ÁË configure ½Å±¾µÄ port µÄ±äÁ¿
±í6-3. ʹÓà scons µÄ port »áÓõ½µÄ±äÁ¿
±í6-4. ÓÃÓÚÓõ½ perl µÄ port µÄ±äÁ¿
±í6-5. Óõ½ X µÄ port ¿ÉÒÔʹÓõıäÁ¿
±í6-6. ÓÃÓÚ±íʾ¶Ô X11 ijЩ×é¼þµÄÒÀÀµ¹ØÏµµÄ±äÁ¿
±í6-7. ÓÃÓÚʹÓà Qt µÄ port µÄ±äÁ¿
±í6-8. ÆäËûÓÃÓÚʹÓà Qt 4.x µÄ±äÁ¿
±í6-9. ¿ÉÓÃµÄ Qt4 º¯Êý¿â×é¼þ
±í6-10. ¿ÉÓÃµÄ Qt4 ¹¤¾ß×é¼þ
±í6-11. ¿ÉÓÃµÄ Qt4 ²å¼þ×é¼þ
±í6-12. ÓÃÓÚʹÓà KDE 3.x µÄ port µÄ±äÁ¿
±í6-13. ¿ÉÓÃµÄ KDE4 ×é¼þ
±í6-14. Óõ½ Java µÄ port ¿ÉÒÔʹÓõıäÁ¿
±í6-15. ÏòʹÓÃÁË Java µÄ port ÌṩµÄ±äÁ¿
±í6-16. ΪʹÓà Java µÄ port ¶¨ÒåµÄ³£Á¿
±í6-17. Óõ½ Apache µÄ port ¿ÉÒÔʹÓõıäÁ¿
±í6-18. ÔÚÒÆÖ² Apache Ä£¿éʱ±È½ÏÓÐÓõıäÁ¿
±í6-19. Óõ½ PHP µÄ port ÖпÉÒÔʹÓõıäÁ¿
±í6-20. ¶ÔÓõ½ Python µÄ port ×îÓÐÓõÄһЩ±äÁ¿
±í6-21. Óõ½ Tcl/Tk µÄ port ¿ÉÒÔʹÓõıäÁ¿
±í6-22. ʹÓà Ruby µÄ port ¿ÉÒÔʹÓõıäÁ¿
±í6-23. ʹÓà Ruby µÄ port ÖеÄһЩ¿ÉÓõÄÖ»¶Á±äÁ¿
±í6-24. ÓÃÓÚÑ¡Ôñ wxWidgets °æ±¾µÄ±äÁ¿
±í6-25. ¿ÉÓÃµÄ wxWidgets versions
±í6-26. wxWidgets °æ±¾
±í6-27. ÓÃÓÚÑ¡ÔñÏ£ÍûµÄ°æ±¾µÄ wxWidgets versions
±í6-28. ¿ÉÓÃµÄ wxWidgets ×é¼þ
±í6-29. ¿ÉÓÃµÄ wxWidgets ÒÀÀµÀàÐÍ
±í6-30. ĬÈ쵀 wxWidgets ÒÀÀµ¹ØÏµÀàÐÍ
±í6-31. ÓÃÒÔÔÚ Unicode °æ±¾µÄ wxWidgets µÄ±äÁ¿
±í6-32. ΪʹÓà wxWidgets µÄ port ¶¨ÒåµÄ±äÁ¿
±í6-33. ¿ÉÓÃÓÚ WX_CONF_ARGS µÄÖµ
±í6-34. ÓÃÓÚÑ¡Ôñ Lua °æ±¾µÄ±äÁ¿
±í6-35. ¿ÉÓÃµÄ Lua °æ±¾
±í6-36. Ö¸¶¨ Lua °æ±¾
±í6-37. ÓÃÓÚÑ¡ÔñÍÆ¼ö Lua °æ±¾µÄ±äÁ¿
±í6-38. ¿ÉÓÃµÄ Lua ×é¼þ
±í6-39. ¿ÉÓÃµÄ Lua ÒÀÀµ¹ØÏµÀàÐÍ
±í6-40. ĬÈ쵀 Lua ÒÀÀµ¹ØÏµÀàÐÍ
±í6-41. ΪÓõ½ Lua µÄ port ¶¨ÒåµÄ±äÁ¿
±í6-42. Óõ½ Mozilla µÄ port ʹÓõıäÁ¿
±í6-43. ports ÖÐÓйØÊý¾Ý¿âµÄ±äÁ¿
±í10-1. cvs update ÎļþÃûǰ×Öĸǰ׺µÄº¬Òå
±í12-1. __FreeBSD_version Öµ
·¶ÀýÇåµ¥
Àý5-1. ¼ò»¯µÄ MASTER_SITES:n Ó÷¨£¬ ÿ¸öÎļþÀ´×ÔÒ»¸öÕ¾µã
Àý5-2. ¼ò»¯µÄ MASTER_SITES:n Ó÷¨£¬ ÆäÖÐͬһ¸öÕ¾µãÉÏÌṩÁ˲»Ö¹Ò»¸öÎļþ
Àý5-3. ÔÚ MASTER_SITE_SUBDIR ÖÐ MASTER_SITES:n µÄÏêϸÓ÷¨
Àý5-4. Óõ½¶ººÅ·Ö¸ô·û¡¢ ¶à¸öÎļþ£¬ ¶à¸öÕ¾µãºÍ ²»Í¬×ÓĿ¼µÄ MASTER_SITES:n ÏêϸÓ÷¨
Àý5-5. MASTER_SITE_SOURCEFORGE ÖÐ MASTER_SITES:n µÄÏêϸÓ÷¨
Àý5-6. ¼ò»¯µÄ PATCH_SITES ÖÐµÄ MASTER_SITES:n Ó÷¨¡£
Àý5-7. ÈçºÎʹÓà ALWAYS_KEEP_DISTFILES¡£
Àý5-8. ¼òµ¥µÄ OPTIONS Ó÷¨
Àý5-9. Old style use of OPTIONS
Àý5-10. ´¦ÀíÑ¡ÏîʱµÄ´íÎó×ö·¨
Àý5-11. ´¦ÀíÑ¡ÏîʱµÄÕýÈ·×ö·¨
Àý6-1. ʹÓà USE_XORG µÄÀý×Ó
Àý6-2. ÔÚ±äÁ¿ÖÐʹÓÃÓë X11 ÓйصıäÁ¿
Àý6-3. Ñ¡Ôñ Qt4 ×é¼þ
Àý6-4. USE_KDE4 ʾÀý
Àý6-5. ÓÃÓÚ PEAR ÀàµÄ Makefile Àý×Ó
Àý6-6. Ñ¡Ôñ wxWidgets ×é¼þ
Àý6-7. ¼ì²âÒѰ²×°µÄ wxWidgets °æ±¾ºÍ×é¼þ
Àý6-8. ÔÚÃüÁîÖÐʹÓà wxWidgets ±äÁ¿
Àý6-9. Ñ¡Ôñ Lua °æ±¾
Àý6-10. Ñ¡Ôñ Lua ×é¼þ
Àý6-11. ¼ì²âÒѰ²×°µÄ Lua °æ±¾ºÍ×é¼þ
Àý6-12. ¸æËß port µ½Ê²Ã´µØ·½È¥ÕÒ Lua
Àý6-13. ÔÚÃüÁîÖÐʹÓà Lua ±äÁ¿
Àý12-1. ÔõÑù±ÜÃâʹÓà .error

µÚ1Õ ¡¡½éÉÜ

¡¡¡¡¼¸ºõÿ¸öÈ˶¼ÊÇͨ¹ý FreeBSD Ports Collection ÔÚ FreeBSD ÉÏÃæ×°Ó¦ÓóÌÐò (¡°ports¡±)µÄ¡£ ¾ÍÏñFreeBSDµÄÆäËü²¿·ÖÒ»Ñù£¬ ËüÖ÷ÒªÀ´×ÔÓÚÖ¾Ô¸ÕßµÄŬÁ¦¡£ ËùÒÔÔÚÔĶÁÕâ·ÝÎĵµµÄʱºòÇëÎñ±Ø¼ÇסÕâЩ¡£

¡¡¡¡ÔÚ FreeBSD µÄÊÀ½çÀ ÈκÎÈ˶¼ÄÜÌá½»Ð嵀 port£¬ »òÖ¾Ô¸µØÎ¬»¤Ò»¸öÒÑÓÐµÄ port£¬ Èç¹ûÄǸö port ûÈËά»¤µÄ»° ©¤©¤ ²»ÐèÒªÈκÎÌØÊâµÄȨÏÞÀ´×öÕâ¼þÊÂÇé¡£


µÚ2Õ ¡¡×ÔÐÐÖÆ×÷Рport

¡¡¡¡ÄÇô£¬ ÄúÓÐÐËȤ´´½¨×Ô¼ºµÄ port »òÉý¼¶ÏÖÓÐµÄ port£¿ Ì«ºÃÁË¡£

¡¡¡¡ÏÂÃæµÄÄÚÈݽ«»áÌṩһЩ´´½¨FreeBSD portµÄÖ¸µ¼¡£ Èç¹ûÏëÉý¼¶Ò»¸öÏÖÓÐµÄ port£¬ ÄÇôÄúÓ¦¸ÃÔÚ¿´ÍêÕâЩÄÚÈݲ¢ÔĶÁ µÚ 10 Õ¡£

¡¡¡¡ÒòΪÕâ·ÝÎĵµ²»ÊÇÊ®·ÖÏêϸ£¬ Äú»¹Ó¦¸ÃÔٲο¼Ò»Ï /usr/ports/Mk/bsd.port.mk£¬ ËùÓÐ port µÄ Makefile Îļþ¶¼»á°üº¬Ëü¡£ ¼´Ê¹²»ÊÇÿÌ춼ȥ°ÚŪ Makefile£¬ ÄúÒ²»á´ÓÄǸöÎļþÀïÃæ»ñµÃºÜ¶à֪ʶ£¬ ÀïÃæµÄ×¢Êͷdz£Ïêϸ¡£ »¹ÓÐÒª²¹³äһϣ¬Èç¹ûÄúÓÐÆäËüµÄÎÊÌ⣬ ¿ÉÒÔ¸øFreeBSD ports ÓʼþÁбí Õâ¸ö mailing list ·¢ÐÅ¡£

×¢Òâ: ÔÚÕâ·ÝÎĵµÀïÌáµ½µÄ´ó²¿·ÖµÄ±äÁ¿ (VAR) ÊDz»ÄÜÐ޸ĵġ£ ´ó¶à (µ«²»ÊÇÈ«²¿) ¶¼ÔÚ /usr/ports/Mk/bsd.port.mk µÄ¿ªÊ¼²¿·Ö½øÐÐÁ˽éÉÜ£» ÆäËüһЩҲӦ¸Ã¿ÉÒÔÔÚÄÇÀïÕÒµ½¡£ ×¢ÒâÕâЩÎļþʹÓÃÁ˷DZê×¼µÄÖÆ±í·û£º Emacs ºÍ Vim Ó¦¸ÃÄÜÔÚ´ò¿ªÎļþµÄʱºò×Ô¶¯Ê¶±ðËü£¬ ¶ø vi(1) ºÍ ex(1) ÔòÐèÒªÔÚ´ò¿ªÎļþµÄʱºòͨ¹ý :set tabstop=4 À´ÐÞÕýĬÈϵÄÉèÖá£

¡¡¡¡ ÏëÁ·Á·ÊÖÂ𣿠Çë²ÎÔÄÎÒÃÇµÄ Ï£ÍûÒÆÖ²µÄÈí¼þÁбí À´¿´¿´ÄúÊÇ·ñÓÐÐËȤÍê³ÉÆäÖеÄÈÎÎñ¡£


µÚ3Õ ¡¡¼òµ¥µÄ port

¡¡¡¡ÕâÒ»Õ½«½éÉÜÈçºÎ¿ìËÙ´´½¨Ò»¸öÈ«Ð嵀 port¡£ ºÜ¶àʱºò£¬ ÕâµãÄÚÈÝÊDz»¹»µÄ£¬ ÄúÐèÒªÔĶÁÕâ·ÝÎĵµÖиüÉîÈëµÄÄÚÈÝ¡£

¡¡¡¡Ê×ÏÈ£¬ ÐèҪȡµÃ°üº¬Ô´´úÂëµÄ tar°ü£¬ ²¢°ÑËü·Åµ½ DISTDIR±äÁ¿ËùÖ¸µÄµØ·½¡£ ĬÈϵÄÇé¿öÏ£¬ ÕâÓ¦¸ÃÊÇ /usr/ports/distfiles¡£

×¢Òâ: ÏÂÃæµÄÄÚÈݼٶ¨Äú²»ÐèÒªÐÞ¸ÄÈí¼þµÄÔ´´úÂë¾ÍÄÜÔÚ FreeBSD ÉϱàÒëͨ¹ý¡£ Èç¹ûÐèÒªÐ޸ĴúÂ룬 ¾ÍÐèÒª²Î¿¼ÏÂÒ»ÕµÄÄÚÈÝÁË¡£


3.1 ±àд Makefile

¡¡¡¡×î¼òµ¥µÄ Makefile Ó¦¸ÃÊÇÕâ¸öÑù×ӵģº

# New ports collection makefile for:   oneko
# Date created:        5 December 1994
# Whom:                asami
#
# $FreeBSD$
#

PORTNAME=      oneko
PORTVERSION=   1.1b
CATEGORIES=    games
MASTER_SITES=  ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/

MAINTAINER=    asami@FreeBSD.org
COMMENT=       A cat chasing a mouse all over the screen

MAN1=          oneko.1
MANCOMPRESSED= yes
USE_IMAKE=     yes

.include <bsd.port.mk>

¡¡¡¡¿´¿´ÄúÊÇ·ñÄܹ»¿´¶®¡£ ²»±Øµ£ÐÄ $FreeBSD$ ÄÇÒ»ÐУ¬ µ±Õâ¸ö port ±»µ¼Èëµ½ ports Ê÷ÀïµÄʱºò£¬ CVS »á×Ô¶¯ÌîдËü¡£ Äú¿ÉÒÔÔÚ Ê¾·¶µÄ MakefileÄÇÕÂÕÒµ½¸ü¶àµÄϸ½Ú¡£


3.2 ´´½¨ÃèÊöÎļþ

¡¡¡¡ÓÐ 2 ¸öÃèÊöÎļþ¶ÔÓÚÈκÎÒ»¸ö port À´ËµÊDZØÐëµÄ£¬ ²»ÂÛËüÊDz»ÊÇ´òËã³ÉΪ package¡£ ËüÃÇÊÇ pkg-descr ºÍ pkg-plist¡£ ÕâÁ½¸öÎļþʹÓà pkg- ǰ׺ÒÔÇø±ðÓÚÆäËüÎļþ¡£


3.2.1 pkg-descr (¹ØÓÚ port µÄÈß³¤ÃèÊöÎļþ)

¡¡¡¡ÕâÊÇ port ÀïÒ»¸ö½Ï³¤µÄÃèÊöÎļþ¡£ ʹÓÃÒ»¶Î»ò¼¸¶ÎÎļþÎÄ×ÖÀ´¼òÃ÷µÄÃèÊöÕâ¸ö ports ÊÇÓÃÀ´×öʲôµÄ¡£

×¢Òâ: Õâ ²»ÊÇ ÊÖ²á»òÕß¶ÔÈçºÎ ÉîÈëʹÓÃ/±àÒëÕâ¸öportµÄ˵Ã÷£¡ ÒªÊÇÄú´Ó README »òÕßÁª»úÊÖ²áÀïÃæÖи´ÖÆÎÄ×ֵϰ£¬ ÇëÎñ±ØÐ¡ÐÄ£» ͨ³££¬ ËüÃDz»ÊǶÔÕâ¸ö port ¼òÃ÷¶óÒªµÄÃèÊö£¬ »òÕßÓÃÁËÄÑÒÔʹÓõĸñʽ (±ÈÈ磬 Áª»úÊÖ²áÀïÓÐÆÈʹÁ½¶Ë¶ÔÆëµÄ¿Õ¸ñ)¡£ Èç¹ûÒªÒÆÖ²µÄÈí¼þÓйٷ½µÄWWWÍøÒ³£¬ ÄúÓ¦¸ÃÔÚÕâÀïÁгöÀ´¡£ ʹÓà WWW: ×÷Ϊǰ׺À´±íʾ Ò»¸öÍøÕ¾£¬ ÕâÑùÆäËüµÄ×Ô¶¯¹¤¾ß¾ÍÄÜÕý³£¹¤×÷ÁË¡£

¡¡¡¡ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄ pkg-descr Àý×Ó£º

This is a port of oneko, in which a cat chases a poor mouse all over
the screen.
 :
(etc.)

WWW: http://www.oneko.org/

3.2.2 pkg-plist (port µÄ×°Ïäµ¥)

¡¡¡¡Õâ·ÝÎļþÁгöÁË port ËùÒª°²×°µÄËùÓÐÎļþ¡£ ÓÉÓÚ package Ò²ÊǾݴ˽øÐдò°ü£¬ Òò´ËËüÒ²±»³Æ×÷ ¡°×°Ïäµ¥(packing list)¡±. Õâ¸öÎļþÖУ¬ ·¾¶ÊÇÏà¶ÔÓÚ°²×°µÄ·¾¶µÄ (ͨ³£ÊÇ /usr/local »ò /usr/X11R6)¡£ Èç¹ûÄúʹÓà MANn ±äÁ¿µÄ»°£¬ Çë²»ÒªÔÚÕâÀïÁгöÈκÎÁª»úÊֲᡣ ¼ÙÈç port ÔÚ°²×°¹ý³ÌÖлᴴ½¨Ò»Ð©Ä¿Â¼£¬ ÇëÎñ±ØÔö¼Ó¶ÔÓ¦µÄ @dirrm ÐУ¬ ÒÔ±ãÔÚ package ±»Ð¶ÔØÊ±ÓèÒÔ×Ô¶¯É¾³ý¡£

¡¡¡¡ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó£º

bin/oneko
lib/X11/app-defaults/Oneko
lib/X11/oneko/cat1.xpm
lib/X11/oneko/cat2.xpm
lib/X11/oneko/mouse.xpm
@dirrm lib/X11/oneko

¡¡¡¡²Î¿¼ pkg_create(1) µÄÁª»úÊÖ²áÒÔ»ñµÃ¸ü¶àÓйØ×°Ïäµ¥µÄϸ½Ú

×¢Òâ: ½¨ÒéÄú½«Õâ¸öÎļþÀïµÄËùÓеÄÎļþÃû°´×ÖĸÅÅÐò¡£ ÕâÑù£¬ ÔÚÉý¼¶Õâ¸öportµÄʱºò¾ÍÄܹ»¸ü·½±ãµØºËʵËù×öµÄÐ޸ġ£

×¢Òâ: ÊÖ¹¤´´½¨ÕâÑùÒ»·ÝÁбí¿ÉÄÜÊÇÒ»¼þ·Ç³£¿ÝÔïµÄÊÂÇé¡£ Èç¹ûÄúµÄ port ÐèÒª°²×°´óÁ¿µÄÎļþ£¬ ×Ô¶¯´´½¨×°Ïäµ¥ »á°ïÄúʡϲ»ÉÙʱ¼ä¡£

¡¡¡¡Ö»ÓÐÒ»ÖÖÇé¿ö¿ÉÒÔ²»Óà pkg-plistÎļþ¡£ Èç¹ûÕâ¸ö port Ö»°²×°ºÜÉÙÁ¿µÄһЩÎļþ»òĿ¼µÄ»°£¬ ÕâЩÎļþºÍĿ¼¾Í¿ÉÒÔ·Ö±ðÁÐÔÚ Makefile µÄ PLIST_FILESºÍPLIST_DIRS ±äÁ¿Àï¡£ ¾Ù¸öÀý×ÓÀ´Ëµ£¬ ÎÒÃÇ¿ÉÒÔÔÚÉÏÃæÄǸö oneko port ÀïÃæ²»Óà pkg-plist£¬ ¶ø°ÑÏÂÃæµÄÕ⼸Ðмӵ½ Makefile ÀïÃæ£º

PLIST_FILES=    bin/oneko \
                lib/X11/app-defaults/Oneko \
                lib/X11/oneko/cat1.xpm \
                lib/X11/oneko/cat2.xpm \
                lib/X11/oneko/mouse.xpm
PLIST_DIRS=     lib/X11/oneko

¡¡¡¡µ±È»£¬ Èç¹ûÒ»¸ö port ²»ÐèÒª¸øËü×Ô¼º´´½¨Ä¿Â¼µÄ»°£¬ ¾Í²»ÓÃÉèÖà PLIST_DIRS ±äÁ¿ÁË¡£

¡¡¡¡²»¹ý£¬ Èç¹ûÓÃÕâÖÖ·½Ê½À´Áгö port Òª°²×°µÄÎļþºÍĿ¼µÄ»°£¬ Ò²¾ÍÎÞ·¨ÀûÓÃÔÚ pkg_create(1) Àï½éÉܵÄÃüÁîÀ´ÖÆ×÷ package ÁË¡£ Òò´Ë£¬ ÕâÖÖ·½·¨Ö»ÊÊÓÃÓÚÄÇЩ¼òµ¥µÄ port£¬ ʹËüÃǸüΪ¼ò»¯¡£ ͬʱ£¬ ÕâÖÖ×ö·¨Ò²ÓÐÖúÓÚ¼õÉÙ ports collection ÖеÄÎļþÊýÁ¿¡£ ÔÚ²ÉÓà pkg-plist ֮ǰ£¬ Ç뿼ÂÇÒ»ÏÂʹÓÃÕâÖÖ·½·¨¡£

¡¡¡¡ÉÔºóÎÒÃǽ«¿´µ½ pkg-plist ÒÔ¼° PLIST_FILES ÈçºÎ´¦Àí ¸ü¸´ÔÓµÄÈÎÎñ¡£


3.3 ´´½¨Ð£ÑéºÍÎļþ

¡¡¡¡Ö»Òª¼üÈë make makesum£¬ port ±ã»á×Ô¶¯´´½¨ distinfoÎļþ¡£

¡¡¡¡Èç¹ûÏÂÔØµÄÎļþµÄУÑéºÍ¾­³£±ä»¯£¬ ¶øÄúÓÖÄÜÈ·±£ËüÃǵÄÀ´Ô´¿É¿¿ (±ÈÈ磬 À´×ÔÓÚCDÖÆÔìÉÌ£¬ »òÿÌìÁª±àÉú³ÉµÄÎĵµÎļþ)£¬ ¾ÍÓ¦¸ÃÔÚ IGNOREFILES ÀïÃæ±êÃ÷ÕâЩÎļþ¡£ ÕâÑù£¬ ÔÙÔËÐÐ make makesum µÄʱºò±ã²»»á°ÑÕâЩ±ê¼Ç IGNORE µÄÎļþ¼ÆËãÔÚÄÚÁË¡£


3.4 ²âÊÔ port

¡¡¡¡Ó¦µ±È·¶¨ÄúµÄ port ȷʵ×öÁËÄúÏ£ÍûËüÃÇ×öµÄÊÂÇ飬 °üÀ¨´ò°ü¡£ÏÂÃæÊÇÐèÒªÖØµã¼ì²éµÄÒ»Ð©ÖØÒªµÄ¹¤×÷¡£

  • pkg-plist ÖÐûÓаüÀ¨Èκβ»Ïë°²×°µÄÎļþ

  • pkg-plist °üº¬ÁËËùÓÐÓ¦¸Ã°²×°µÄÎļþ

  • ÄúµÄ port Äܹ»Ê¹Óà reinstall ¶à´Î°²×°¡£

  • ÄúµÄ port ÄÜÔÚÐ¶ÔØ (deinstall) ʱ£¬ ×Ô¶¯Íê³É ÇåÀí

ÍÆ¼öµÄ²âÊÔ˳Ðò

  1. make install

  2. make package

  3. make deinstall

  4. pkg_add package-name

  5. make deinstall

  6. make reinstall

  7. make package

¡¡¡¡È·ÐÅÔÚ package ºÍ deinstall ½×¶ÎûÓÐÈκξ¯¸æ¡£ µÚÈý²½ÒÔºó£¬ ¼ì²éÊÇ·ñËùÓÐн¨µÄĿ¼¶¼±»Õýȷɾ³ýÁË¡£ ÔÚµÚËIJ½ÒÔºó£¬ ÊÔ×ÅÔËÐÐÒ»ÏÂËù×°µÄÈí¼þ£¬ È·±£µ±ËüÒÔ package ·½Ê½°²×°µÄʱºòÒ²ÄÜÕý³£¹¤×÷¡£

¡¡¡¡×Ô¶¯»¯ÕâЩ²½Öè×î¼òµ¥µÄ·½·¨ÊÇͨ¹ý ports tinderbox À´½øÐвâÊÔ¡£ Ëü¿ÉÒÔά»¤ jails ²¢ÔÚÆäÖÐÍê³ÉÈ«²¿²âÊÔ¹¤×÷£¬ ¶ø²»»áÆÆ»µÕýÔÚÔËÐеÄϵͳµÄ״̬¡£ Çë²Î¼û ports/ports-mgmt/tinderbox ÒÔÁ˽â¸ü¶àµÄÐÅÏ¢¡£


3.5 Óà portlint À´¼ì²é port

¡¡¡¡ÇëʹÓà portlint ÃüÁîÀ´¼ì²éÄúµÄ port ÊÇ·ñ·ûºÏÎÒÃǵĹ淶¡£ ports-mgmt/portlint ³ÌÐòÊÇ ports Ì×¼þµÄÒ»²¿·Ö¡£ Õâ¸ö³ÌÐòµÄÖ÷Òª¹¦ÄÜÊǰïÖúÄú¼ì²é Makefile µÄÑùʽÊÇ·ñ·ûºÏ¹æ·¶£¬ ÒÔ¼° package µÄÃüÃûÊÇ·ñµÃÌå¡£


3.6 ÌύРport

¡¡¡¡ÔÚÌύРport ֮ǰ£¬ Ó¦ÏÈÔĶÁ ¸Ã×öʲôºÍ²»¸Ã×öʲô Ò»½Ú¡£

¡¡¡¡¼ÈÈ»ÒѾ­¶ÔËùÖÆ×÷µÄ port Ï൱ÂúÒâÁË£¬ Ê£ÏµĹ¤×÷£¬ ±ãÊǽ«Ëü·Å½ø FreeBSD µÄÖ÷ ports Ê÷£¬ ÒÔ±ãÈøü¶àµÄÈË´ÓÖÐÊÜÒæ¡£ ÎÒÃDz¢²»ÐèÒªÄúµÄ work Ŀ¼ÒÔ¼° pkgname.tgz °ü£¬ Òò´ËÏÖÔÚ¿ÉÒÔɾ³ýËüÃÇÁË¡£ ¼Ù¶¨ÄúµÄ port µÄÃû×ÖÊÇ oneko£¬ ½ÓÏÂÀ´Òª×öµÄÊÇ cd µ½ oneko ËùÔÚµÄĿ¼£¬ È»ºóÊäÈëÃüÁ shar `find oneko` > oneko.shar

¡¡¡¡½«Õâ¸ö oneko.shar Îļþ×÷Ϊ¸½¼þ£¬ ʹÓà send-pr(1) ³ÌÐòÌá½» (Çë²ÎÔÄ Bug Reports and General Commentary ÒÔÁË½â¹ØÓÚ send-pr(1) µÄ½øÒ»²½ÏêÇé) ½«ÆäËͳö¡£ ÇëÎñ±Ø½«ÄúµÄ bug ±¨¸æ·ÖÀà (category) Ϊ ports ²¢°Ñ×Ó·ÖÀà (class) ÉèÖÃΪ change-request (²»Òª°Ñ±¨¸æ±í¼°Îª»úÃܵģ¬ ¼´ confidential£¡)¡£ ´ËÍ⣬ ÔÚ PR µÄÃèÊö (¡°Description¡±) Ò»À¸ÖеÄÄÚÈÝÓ¦¸ÃÊÇ port µÄ¼òÒª½éÉÜ (ÀýÈç COMMENT ÄÚÈݵļò»¯°æ±¾)£¬ ¶ø shar ÎļþÔòÓ¦ÌîÈëÐÞÕý (¡°Fix¡±) À¸ÖС£

×¢Òâ: ÔÚÎÊÌⱨ¸æÀïÃæÊ¹ÓÃÁËÒ»¶ÎºÃµÄÃèÊö£¬ ÄÜʹÎÒÃǵŤ×÷±äµÃ¸üÈÝÒס£ ϰ¹ßÉÏ£¬ ÎÒÃÇ»áʹÓÃÀàËÆ£º ¡°New port: <category>/<portname> <short description of the port>¡± ÕâÑùµÄ±êÌâÀ´ËµÃ÷ÕâÊÇÐ嵀 port¡£ Èç¹ûÄúҲʹÓÃÕâÑùµÄϰ¹ß£¬ ÄÇôÎÒÃǽ«¸üÈÝÒ׸ü·½±ãµØÔĶÁÄúµÄ PR£¬ ´Ó¶ø¼Ó¿ì´¦ÀíËÙ¶È¡£

¡¡¡¡ÔÙ´ÎÉùÃ÷£¬ ²»Òª°üº¬Ô­Ê¼µÄdistfile£¬ workĿ¼£¬ »òÕßÄúÓà make package ÖÆ×÷µÄ°ü£» ´ËÍ⣬ ¶ÔÓÚÐ嵀 port ÇëÎñ±ØÊ¹Óà shar(1) ¶ø²»ÊÇ diff(1)¡£

¡¡¡¡ÔÚÄúÌá½»µÄÄúµÄ port ÒÔºóÇëÄÍÐĵȴý¡£ ÓÐʱÔÚÒ»¸ö port Õýʽ¼ÓÈë FreeBSD ֮ǰÐèÒª»¨·ÑºÃ¼¸¸öÔ£¬ ¾¡¹ÜÒ²ÓпÉÄÜÊǼ¸Ìì¡£ Äú¿ÉÒԲ鿴 ÕýµÈ´ý±» commit µ½ FreeBSD µÄ port PR¡£

¡¡¡¡Ò»µ©ÎÒÃÇ¿´¹ýÁËÄúµÄ±¨¸æ£¬ ÓбØÒªµÄ»°ÎÒÃÇ»áÁªÏµÄú£¬ ²¢°ÑËü·Åµ½ ports Ê÷Àï¡£ ÄúµÄÃû×ÖÒ²»á³öÏÖÔÚ Additional FreeBSD Contributors ºÍÆäËüµÄÎļþ¡£ ²»ÊǺܰôÂð!? :-)


µÚ4Õ ¡¡¸´Ô Porting

¡¡¡¡ºÃÁË£¬ Ò²Ðí¹¤×÷ûÄÇô¼òµ¥£¬ port ÐèÒª×öЩÐ޸IJÅÄܹ»ÔÚ FreeBSD ÉÏÅÜÆðÀ´¡£ ÔÚÕâÒ»ÕÂÀ ÎÒÃǽ«»áÒ»²½²½¾ÙÀýÀ´½éÉÜÓ¦¸ÃÈçºÎÐÞ¸ÄÀ´Ê¹ÄúµÄ port ÄÜÔÚ FreeBSD ÉÏÃæÔËÐС£


4.1 Õû¸öϵͳÊÇÈçºÎÔËתµÄ?

¡¡¡¡Ê×ÏÈ£¬ ÕâһϵÁе͝×÷ÊÇÓÉÓû§ÔÚÄúµÄ port Ŀ¼ÀïÇÃÈë make ºó·¢ÉúµÄ¡£ ÄúÒ²Ðí»á·¢ÏÖÔÚÁíÍâµÄÒ»¸ö´°¿ÚÀïÔĶÁһϠbsd.port.mk ½«»áÓÐÖúÓÚÄúµÄÀí½â¡£

¡¡¡¡ÒªÊÇÄú²»ÊǷdz£Ã÷°× bsd.port.mk ÊÇ×öʲôµÄ»°£¬ Ò²²»ÓÃÌ«µ£ÐÄ£¬ ºÜ¶àÈ˶¼²»ÖªµÀµÄ... :->

  1. fetch »áÊ×Ïȱ»Ö´ÐС£ fetch ½«¼ì²éÔÚ±¾µØµÄ DISTDIR Ŀ¼ÀïÊÇ·ñ´æÔÚ tar °ü¡£ Èç¹û fetch ûÓÐÕÒµ½¾Í»á²éÕÒ Makefile Öж¨ÒåµÄ MASTER_SITES URL£¬ »¹ÓÐÎÒÃǵÄÖ÷ FTP Õ¾µã ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/£¬ ÔÚÄÇÀïÎÒÃDZ¸·ÝÁËËùÓб»ÈÏ¿ÉµÄ distfile¡£ ¼ÙÉèÄǸö MASTER_SITES Õ¾µãÊÇÖ±½ÓÁ¬ÔÚ Internet Éϵģ¬ ¾Í»áÊÔ×ÅÓà FETCH Ö¸¶¨µÄ³ÌÐòÈ¡»Ø distfile¡£ Èç¹û³É¹¦µÄ»°£¬ Îļþ»á±»±£´æÔÚDISTDIR ËùÖ¸¶¨µÄĿ¼ÒÔ±¸ÉÔºóʹÓá£

  2. ½ÓÏÂÀ´»áÖ´ÐÐ extract¡£ Ëü»áÔÚ DISTDIR ÖÐѰÕÒÄúµÄ tar °ü (ͨ³£ÊÇÓà gzip ѹËõµÄ tar °ü)£¬È»ºó½âѹËõµ½ÓÉ WRKDIR ËùÖ¸¶¨µÄÁÙʱĿ¼Àï (ĬÈÏΪworkĿ¼)¡£

  3. ÏÂÒ»²½ÊÇÖ´ÐÐ patch¡£ Ê×ÏÈÈκÎÔÚ PATCHFILES Öж¨ÒåµÄ²¹¶¡¶¼»á±»´òÉÏ¡£ È»ºó£¬ ÔÚÓÉ PATCHDIR Ö¸¶¨µÄĿ¼ (ĬÈÏΪ filesĿ¼) Öз¢ÏÖµÄpatch-*£¬ ËüÃǽ«»áÒÔÎļþÃûµÄ×Öĸ˳Ðò±»ÏȺó´òÉÏ¡£

  4. configure»á±»Ö´ÐС£ ÕâÒ»²½Öè¿ÉÄÜ»áÓÐÒÔϼ¸ÖÖÇéÐΡ£

    1. Èç¹û´æÔÚ scripts/configure£¬ ¾Í»áÖ´ÐÐËü

    2. Èç¹û¶¨ÒåÁË HAS_CONFIGURE »òÕß GNU_CONFIGURE£¬ ¾Í»áÖ´ÐÐ WRKSRC/configure¡£

    3. Èç¹û¶¨ÒåÁËUSE_IMAGE£¬ ¾Í»áÖ´ÐÐ XMKMF (ĬÈÏΪ: xmkmf -a)¡£

  5. build»á±»Ö´ÐС£ ÕâÒ»²½½«»á½øÈëportsµÄ¹¤×÷Ŀ¼ (WRKSRC) È»ºó½øÐбàÒë¡£Èç¹û¶¨ÒåÁËUSE_GMAKE£¬ ¾Í»áʹÓà GNU make£¬ ·´Ö®£¬ Ôò»áʹÓÃϵͳĬÈ쵀 make¡£

¡¡¡¡ÒÔÉ϶¼ÊÇϵͳĬÈϵIJ½Öè¡£ ÄúÒ²¿ÉÒÔ¶¨Òå pre-something »òÕß post-something£¬ »òÕß°ÑÒÔ´ËÃüÃûµÄ½Å±¾·Åµ½ scripts Ŀ¼£¬ ËüÃÇ»áÔÚĬÈϵ͝×÷֮ǰ»òÖ®ºó±»Ö´ÐС£

¡¡¡¡¾Ù¸öÀý×Ó£¬ Èç¹ûÄúÔÚÄúµÄ Makefile ÀﶨÒåÁËpost-extract£¬ ²¢ÔÚ script Ŀ¼Àï·ÅÁËÒ»¸ö pre-build ½Å±¾£¬ ÄÇôÔÚ tar °ü½â¿ªÖ®ºó post-extract ½«±»µ÷Ó㬠pre-build ½Å±¾»áÔÚĬÈϵıàÒë֮ǰ±»Ö´ÐС£ ÎÒÃÇÍÆ¼öÄúÔÚ Makefile ¶¨ÒåËùÓе͝×÷£¬ Èç¹û²»ÊÇÊ®·Ö¸´Ôӵϰ£¬ ÕâÑù£¬ ±ðÈËÄܸüÈÝÒ×Ã÷°×ÄúµÄ port ÐèÒªÖ´ÐÐÄÄЩ·ÇĬÈϵ͝×÷¡£

¡¡¡¡Ä¬ÈϵÄÐÐΪ¶¼ÊÇÓÉ bsd.port.mk ¶¨ÒåµÄ do-something À´±íʾµÄ¡£ ÀýÈ磬 port ÖÐÓÃÀ´½âѹËõµÄÃüÁîÊÇÓÉ do-extract À´¶¨ÒåµÄ¡£ Èç¹ûÄú¶ÔĬÈϵÄÉèÖò»ÂúÒ⣬ ¿ÉÒÔͨ¹ýÔÚ Makefile ÖØÐ¶¨Òå do-someting À´×öЩ¸Ä±ä¡£

×¢Òâ: ¡°Ö÷¡± ¶¯×÷ (ÀýÈç extract¡¢ configure£¬ µÈµÈ) ½ö½öÊÇÓÃÀ´È·¶¨ËùÓÐÏàÓ¦µÄ½×¶Î¶¼Íê³ÉÁË£¬ ÒÔ¼°µ÷ÓÃÕæÊµµÄ¶¯×÷»ò½Å±¾£¬ ËüÃDz»Ó¦±»Ð޸ġ£ Èç¹ûÄúÏëÒªÐ޸ĽâѹËõÕâ¸ö¶¯×÷£¬ ¿ÉÒÔÐÞ¸Ä do-extract£¬ µ«ÓÀÔ¶¶¼²»Òª¸Ä±ä extract µÄ²Ù×÷£¡

¡¡¡¡ÎÒÃÇÒѾ­½éÉÜÁËÔÚÓû§ÇÃÈë make Ö®ºó»á·¢ÉúÄÄЩÊÂÇéÁË¡£ ½ÓÏÂÀ´ÎÒÃǽ«½øÐнøÒ»²½µÄѧϰ£¬ À´¿´Ò»¿´ÈçºÎ´´½¨Ò»¸öÀíÏëµÄ port¡£


4.2 »ñȡԴ´úÂë

¡¡¡¡»ñȡԴ´úÂëµÄ tar °ü (ͨ³£ÊÇ foo.tar.gz »òÕß foo.tar.Z) ²¢°ÑËüÃǷŽø DISTDIR¡£ ×îºÃʹÓà Ö÷Á÷ µÄ°æ±¾¡£

¡¡¡¡ÄúÐèÒªÉèÖñäÁ¿ MASTER_SITES À´Ö¸Ïòԭʼ tar °üµÄ»ñȡλÖᣠÄú¿ÉÒÔÔÚ bsd.sites.mk ÀïÕÒµ½Ò»Ð©ËٶȽϿìµÄÖ÷Á÷Õ¾µã¡£ ÇëʹÓÃÕâЩվµã ©¤©¤ ºÍÏà¹ØµÄ¶¨Òå ©¤©¤ Èç¹û¿ÉÄܵϰ£¬ Ó¦¾¡Á¿±ÜÃâÔÚͬһ¸öÔ´´úÂëÊ÷Àï³öÏÖ´óÁ¿Öظ´µÄÐÅÏ¢¡£ ÕâЩվµã»áËæ×Åʱ¼ä¶ø±ä»¯£¬ Èç¹ûÿ¸öÈ˶¼ËæÒâ¼ÓÈëµÄ»°»áʹά»¤±äµÃ·Ç³£À§ÄÑ¡£

¡¡¡¡Èç¹ûÄúÕÒ²»µ½Ò»¸öÓкܺÃÍøÂçÁ¬½ÓµÄ FTP/HTTP Õ¾µã£¬ »òÕßËüÃÇʹÓÃÁ˷DZê×¼µÄ¸ñʽ£¬ ÄúÒ²Ðí¾Í»áÏëÔÚÄú×Ô¼ºµÄ FTP »ò HTTP ·þÎñÆ÷ÉÏ·ÅÉÏÒ»·Ý¸±±¾¡£

¡¡¡¡Èç¹ûÄúÕÒ²»µ½¿É¿¿µÄµØ·½·ÅÖà distfiles£¬ ÎÒÃÇÒ²¿ÉÒÔÌṩ¸øÄúһЩ¿Õ¼äÀ´±£´æËü¡£ ÎÒÃÇ×Ô¼ºµÄ ftp.FreeBSD.org£» È»¶øÕâÖ»ÊÇÒ»¸öÕÛÖԵİ취¡£ distfile ±ØÐë·Å½øÄ³ÈËÔÚ freefall É쵀 ~/public_distfiles/ Ŀ¼ÖС£ ¿ÉÒÔÒªÇó°ïÖúÄú commit port µÄÈËÀ´·ÅÕâ¸ö distfile£¬ ¶øÕâ¸öÈËÒ²ÐèÒª°Ñ MASTER_SITES¡¢ MASTER_SITE_LOCAL ÒÔ¼° MASTER_SITE_SUBDIR µÄÉèÖ㬠¸ÄΪÔÚ freefall ÉϵÄÓû§Ãû¡£

¡¡¡¡Èç¹ûÄúµÄ port µÄ distfile Ò»Ö±Ôڱ仯£¬ ¶ø×÷Õ߾ܾø¸Ä±äÆä°æ±¾ºÅ£¬ Äú¿ÉÒÔ¿¼ÂÇ°Ñ distfiles ·ÅÔÚ×Ô¼ºµÄÖ÷Ò³£¬ ²¢ÔÚ MASTER_SITES Àï°ÑÔ­×÷ÕßµÄÁÐΪÊ×ѡλÖᣠÈç¹û¿ÉÄÜ£¬ ÊÔ×ÅÓë port µÄ×÷Õß¹µÍ¨Ò»ÏÂÈÃËû²»ÒªÕâô×ö£¬ Õ⽫ÓÐÖúÓÚ½¨Á¢¶ÔÔ´´úÂëµÄ¿ØÖÆ¡£ ÔÚÄúµÄÖ÷Ò³ÉÏ·ÅÖÃÄú×Ô¼ºµÄ distfile »á±ÜÃâÓû§µÃµ½ ¡°checksum mismatch¡± µÄ´íÎó£¬ ¶øÇÒÄܼõÇáÎÒÃÇ FTP Õ¾µãά»¤ÈËÔ±µÄ¹¤×÷Á¿¡£ Èç¹ûÄúµÄportÖ»ÓÐÒ»¸öÖ÷Õ¾µãµÄ»°£¬ ÎÒÃǽ¨ÒéÄúÔÚ×Ô¼ºµÄÍøÕ¾ÉÏ×öÒ»·Ý±¸·Ý£¬ ²¢ËûÁÐΪ MASTER_SITESµÄµÚ2Ïî¡£

¡¡¡¡Èç¹ûÄúµÄ port ÐèÒªÀ´×ÔÍøÂçÉϵÄһЩ²¹¶¡£¬ Çë°ÑËüÃǷŵ½ DISTDIRÀï¡£ ²»Óõ£ÐÄËüÃǸúÔ´´úÂë²»ÊÇÀ´×Ôͬһվµã¡£ ÎÒÃÇÓа취´¦Àí (²ÎÔÄÏÂÃæµÄ ²¹¶¡Îļþ)¡£


4.3 ÐÞ¸Ä port

¡¡¡¡½â¿ª tar °ü£¬ ¶ÔÔ´´úÂë×ö³öºÏÀíµÄÐÞ¸ÄʹµÃÕâ¸ö port ÄÜÔÚ×îа汾µÄ FreeBSD ÉÏÃæÔËÐС£ Ò»¶¨Òª ×Ðϸ¼Ç¼ ÄúËù×öµÄÿ´¦¸Ä¶¯£¬ °üÀ¨É¾³ý¡¢Ìí¼Ó¡¢Ð޸ĵÄÎļþµÈµÈ£¬ ÕâЩÐÞ¸ÄÒÔºó»áÔÚÄúµÄ port ÖÐÒԽű¾»ò²¹¶¡µÄ·½Ê½³öÏÖ£¬ ²¢ÇÒÄÜͨ¹ýÔËÐÐËüÃÇÀ´×Ô¶¯Íê³ÉÄú¶Ô port µÄ¸Ä¶¯ÒªÇó¡£

¡¡¡¡Èç¹ûÄúµÄ port ÒªÇóÓÃÓëÓû§½»»¥/ÅäÖÃÀ´Íê³É±àÒë»ò°²×°µÄ»°£¬ Äú¿ÉÒÔ¿´Ò»Ï Larry Wall µÄ¾­µäµÄ Configure ½Å±¾£¬ Êʵ±µØÄ£·Âһϡ£ Port collection µÄÄ¿µÄ£¬ ¾ÍÊÇʹÿ¸ö port Õ¼ÓÃ×îÉٵĿռ䣬 ²¢×öµ½Èí¼þµÄ ¡°¼´²å¼´Óᱡ£

×¢Òâ: ³ý·ÇÃ÷È·µØÉùÃ÷£¬ ·ñÔòÄúÌá½»¸ø FreeBSD ports collection µÄ²¹¶¡£¬ ½Å±¾ºÍÆäËüµÄÎļþ¶¼½«ÒÔ±ê×¼µÄ BSD °æÈ¨·¢²¼¡£


4.4 ´ò²¹¶¡

¡¡¡¡ÔÚÄú×¼±¸ÖÆ×÷ port µÄ¹ý³ÌÖУ¬ Ôö¼Ó»òÐ޸ĵÄÎļþ£¬ ¶¼¿ÉÒÔͨ¹ý diff(1) À´×ö³É²¹¶¡¡£ Ï£ÍûÓ¦Óõ½Ô´´úÂëÉϵÄÿ¸ö²¹¶¡£¬ ¶¼Ó¦±£´æÎªµ¥¶ÀµÄÎļþ£¬ ²¢ÃüÃûΪ patch-*£¬ ÆäÖÐ * ±íʾ½«ÒªÐ޸ĵÄÎļþµÄÍêÕû·¾¶Ãû£¬ ÀýÈç patch-Imakefile »ò patch-src-config.h¡£ ÕâЩÎļþ£¬ ¶¼Ó¦±£´æÔÚ PATCHDIR (ͨ³£ÊÇ files/)£¬ ÕâÀïµÄ²¹¶¡¶¼»á×Ô¶¯Ó¦Óõ½Ô´´úÂëÉÏ¡£ ËùÓеIJ¹¶¡±ØÐëÊÇÏà¶ÔÓÚ WRKSRC µÄ (Ò»°ã¶øÑÔ£¬ ÄúµÄ port »á½«Æä tarball ½âѹËõÔÚÄÇÀ ²¢Íê³ÉÓàÏµĹ¤×÷)¡£ ΪÁËÈÃÐÞÕýºÍÉý¼¶¸üÈÝÒ×£¬ ÄúÓ¦±ÜÃâʹÓöà¸ö patch È¥ÐÞ¸Äͬһ¸öÎļþ (ÀýÈ磬 patch-file ÒÔ¼° patch-file2 ¶¼ÐÞ¸Ä WRKSRC/foobar.c) ÕâÖÖÇé¿ö¡£ ÐèҪעÒâµÄÊÇ£¬ Èç¹ûÐ޸ĵÄÎļþµÄ·¾¶Öаüº¬Ï»®Ïß (_) ×Ö·û£¬ ÔòÔÚ²¹¶¡ÎļþÃûÖÐӦʹÓÃÁ½¸öÏ»®ÏßÀ´´úÌæ¡£ ÀýÈ磬 Èç¹ûÐèÒªÐÞ¸ÄÃûΪ src/freeglut_joystick.c µÄÎļþ£¬ ²¹¶¡ÎļþµÄÃû×ÖӦΪ patch-src-freeglut__joystick.c¡£

¡¡¡¡Ö»ÓÐ [-+._a-zA-Z0-9] ÕâЩ×Ö·û£¬ ¿ÉÒÔ³öÏÖÔÚ²¹¶¡µÄÎļþÃûÖУ¬ ÇëÎñ±Ø²»ÒªÊ¹ÓóýÕâЩ×Ö·ûÒÔÍâµÄÆäËü×Ö·û¡£ ²»Òª°ÑÄúµÄ²¹¶¡ÃüÃû³É patch-aa »ò patch-ab µÈÕâÑùµÄÃû×Ö£¬ ×îºÃÄÜÔÚ²¹¶¡ÃûÖÐÌᵽ·¾¶ºÍÎļþÃû¡£

¡¡¡¡²»Òª°Ñ RCS ×Ö·û´®·Å½ø²¹¶¡¡£ ÎÒÃǰÑÎļþ·Å½ø ports Ê÷µÄʱºò£¬ CVS »áËð»µËüÃÇ£¬ µ±ÎÒÃÇÔÙ check out ³öÀ´µÄʱºò£¬ ËüÃǾͻáºÍÔ­À´µÄ²»Ò»Ñù£¬ ´Ó¶øµ¼Ö´ò²¹¶¡Ê§°Ü¡£ RCS ×Ö·û´® ÊÇÓÉÃÀÔª·ûºÅ ($) Î§ÈÆµÄ£¬ ͨ³£ÓÉ $Id »ò $RCS ¿ªÍ·¡£

¡¡¡¡Ê¹Óà diff(1) µÄµÝ¹éÑ¡Ïî(-r) ºÜºÃ£¬ µ«ÊÇÇë¼ì²éÒ»ÏÂ×îºóÊä³öµÄ patch£¬ È·±£Ã»ÓÐÈκεÄÀ¬»øÐÅÏ¢¡£ ÌØ±ðµØ£¬ ÓÐ 2 ÖÖÎļþ²»ÐèÒª diff£¬ ²¢ÇÒÓ¦¸Ãɾ³ý£º Ò»ÖÖÊÇ Makefile£¬ µ±ÄúµÄportʹÓÃÁËImake£¬ »òÕß GNU configure µÈµÈµÄ»°¡£ Èç¹ûÄú²»µÃ²»±à¼­configure.in ÒÔʹ autoconf È¥Éú³É configure£¬ ²»ÒªÊ¹Óà configure À´×ö diff (Õâ³£³£»áÓкü¸Ç§Ðг¤!)£» Ç붨Òå USE_AUTOTOOLS=autoconf:261 ²¢¶ÔÓ¦ configure.in À´ÖÆ×÷ diff¡£

¡¡¡¡ÁíÍ⣬ Äú»¹Ó¦¾¡Á¿¼õÉÙ²¹¶¡Öзǹ¦ÄÜÐԵĿոñ¼°¿Õ°×±ä¶¯¡£ ÔÚ¿ªÔ´ÊÀ½çÖУ¬ ×ñÑ­²»Í¬µÄ±àÂë¹æ·¶µÄÏîÄ¿¹²Ïí´óÁ¿´úÂëÊǺܳ£¼ûµÄÊÂÇé¡£ Èç¹ûÄú´Óij¸öÏîÄ¿ÖÐÌáȡһ²¿·Ö¹¦ÄÜÓÃÀ´ÐÞÕýÁíÒ»¸ö³ÌÐòÖеÄÎÊÌâʱ£¬ ÇëÎñ±ØÐ¡ÐÄ£º ²¹¶¡ÖкܿÉÄܵ½´¦¶¼ÊǷǹ¦ÄÜÐԵı䶯ÐС£ Õâ²»½ö»áµ¼Ö CVS ¿âµÄÅòÕÍ£¬ ¶øÇÒÒ²»áÈõ¼ÖÂÎÊÌâµÄ¹ÊÕϵ㣬 ÒÔ¼°Äúµ½µ×ÐÞ¸ÄÁËʲô±äµÃ²»ÉõÇåÎú¡£

¡¡¡¡¼ÙÈçÐèҪɾ³ýÎļþ£¬ ÔòÓ¦ÔÚ post-extract target£¬ ¶ø²»ÊÇ×÷Ϊ²¹¶¡µÄÒ»²¿·ÖÀ´Íê³É¡£

¡¡¡¡³ý´ËÖ®Í⣬ port µÄ Makefile »¹¿ÉÒÔͨ¹ý in-place ģʽµÄ sed(1) À´Ö±½Ó½øÐмòµ¥µÄÌæ»»²Ù×÷¡£ Èç¹û²¹¶¡ÐèҪʹÓñäÁ¿Öµ£¬ Õâ¾Í·Ç³£ÓÐÓÃÁË¡£ ÀýÈ磺

post-patch:
	@${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README
	@${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|' ${WRKSRC}/configure

¡¡¡¡ÍùÍùÔÚÒÆÖ²Ä³Ð©Èí¼þµÄʱºò»áÓöµ½ÕâÑùÒ»ÖÖÇé¿ö£¬ ÌØ±ðÊÇÕâ¸öÈí¼þÊÇÔÚ Windows® ÉÏ¿ª·¢µÄʱºò£¬ ´ó¶àÊýµÄÔ´´úÂë¶¼ÐèÒª½øÐÐCR/LFµÄת»»¡£ ÕâºÜ¿ÉÄÜ»á¸øÒÔºó´ò²¹¶¡´øÀ´ÎÊÌ⣬ »¹¿ÉÄÜ´¥·¢±àÒ뾯¸æ£¬ ²¢¸ø½Å±¾µÄÖ´ÐдøÀ´Âé·³ (/bin/sh^M not found)£¬ µÈµÈ¡£ ҪѸËÙ½«ËùÓÐÎļþÖÐµÄ CR/LF ¸ÄΪֻÓà LF£¬ ¿ÉÒÔÔÚ port µÄ Makefile ÖмÓÈë USE_DOS2UNIX=yes¡£ ³ý´ËÖ®Í⣬ »¹¿ÉÒÔÖ¸¶¨Ò»¸öÐèÒªÖ´ÐÐÕâÖÖת»»²Ù×÷µÄÎļþÁÐ±í£º

USE_DOS2UNIX=    util.c util.h

¡¡¡¡Èç¹ûÏ£Íûת»»Ò»ÏµÁÐĿ¼ÖеÄÒ»×éÎļþ£¬ Ò²¿ÉÒÔʹÓà DOS2UNIX_REGEX¡£ ËüµÄ²ÎÊýÊÇÓë find ¼æÈݵÄÕýÔò±í´ïʽ¡£ ¹ØÓÚÕâÖÖ¸ñʽµÄ˵Ã÷£¬ Çë²ÎÔÄ re_format(7)¡£ Õâ¸öÑ¡Ïî¶Ôת»»ËùÓÐÖ¸¶¨À©Õ¹ÃûµÄÎļþ£¬ ÀýÈçֻת»»Ô´´úÂëÎļþÕâÑùµÄÓ¦Ó÷dz£ÓÐÓãº

USE_DOS2UNIX=    yes
DOS2UNIX_REGEX=  .*\.(c|cpp|h)

¡¡¡¡Èç¹ûÄúÏ£Íû»ùÓÚÏÖ´æµÄÎļþ´´½¨²¹¶¡£¬ ¿ÉÒÔ°ÑÎļþ¸´ÖÆÎª´ø .orig À©Õ¹ÃûµÄÃû×Ö£¬ È»ºóÐÞ¸ÄÔ­Îļþ¡£ È»ºóʹÓà makepatch Ä¿±ê¸ù¾ÝÐÞ¸ÄÔÚ port µÄ files Ŀ¼ÖÐÉú³É²¹¶¡Îļþ¡£


4.5 ÅäÖÃ

¡¡¡¡°ÑÈκθ½¼ÓµÄÅäÖÃÃüÁî¼Ó½øÄúµÄ configure ½Å±¾²¢°ÑËü±£´æµ½ scripts ×ÓĿ¼¡£ ÈçÇ°ÃæÌáµ½µÄÄÇÑù£¬ ÄúÒ²ÄÜÔÚ Makefile ºÍ/»ò ʹÓà pre-configure »ò post-configure µÄ½Å±¾À´×öͬÑùµÄÊÂÇé¡£


4.6 ´¦ÀíÓû§ÊäÈë

¡¡¡¡Èç¹ûÄúµÄ port ÒªÇóÓû§µÄÊäÈëÒÔ±ãÅäÖñàÒë¡¢ »ò°²×°ÅäÖùý³Ì£¬ ¾Í±ØÐëÔÚ Makefile ÀïÉèÖà IS_INTERACTIVE ±äÁ¿¡£ Èç¹ûÓû§ÉèÖÃÁË BATCH µÄ»°£¬ Õ⽫ÈÃÓû§ÄÜÌø¹ýÄúµÄ port À´Íê³É ¡°Í¨Ïü±àÒ롱 (Èç¹ûÓû§ÉèÖÃÁË INTERACTIVEµÄ»°£¬ ÄÇô Ö»ÓÐ ÄÇЩҪÇ󻥶¯µÄ port ²Å»á±»±àÒë) Õ⽫¸øÄÇЩ²»Í£±àÒë ports µÄ»úÆ÷ʡϺܶàʱ¼ä¡£

¡¡¡¡Í¨³£ÎÒÃÇ»¹½¨Ò飬 Èç¹û¶ÔÓÚÄÇЩÎÊÌâÄÜÓкÏÀíµÄȱʡ´ð°¸µÄ»°£¬ Ó¦¼ì²éһϠPACKAGE_BUILDING ±äÁ¿£¬ ²¢¸ù¾ÝÆäÉèÖþö¶¨ÊÇ·ñÖ´Ðйرս»»¥½Å±¾¡£ Õ⽫ÔÊÐíÎÒÃÇΪ CDROM ºÍ FTP À´±àÒë package¡£


µÚ5ÕÂ ¡¡ÅäÖÃ Makefile

¡¡¡¡ÅäÖà Makefile ÊÇÏ൱¼òµ¥µÄ£¬ ÎÒÃÇÔڴ˽¨ÒéÄúÔÚ¿ªÊ¼Ö®Ç°¿´Ò»ÏÂÏÖÓеÄÀý×Ó¡£ ÔÚÕâ·ÝÊÖ²áÀïÒ²ÓÐÒ»¸ö MakefileÀý×Ó£¬ ÕÕ×ÅÀïÃæ±äÁ¿µÄ˳ÐòÀ´Ð´ÄÜʹµÃÄúµÄ port ¸üÈÝÒ׵ر»ÆäËüÈË¿´¶®¡£

¡¡¡¡ÏÖÔÚ£¬ µ±Äú¿ªÊ¼±àдÄúеÄMakefile µÄʱºò£¬ ¿ÉÒÔÒÀ´Î˼¿¼Ò»ÏÂÒÔϵÄÎÊÌ⣺


5.1 ×÷Õß·¢²¼µÄ´úÂë

¡¡¡¡·ÅÔÚ DISTDIR ÖеÄÊDz»ÊDZê×¼µÄÓà gzip ѹËõµÄ tar °ü£¬ ÀýÈç foozolix-1.2.tar.gz£¿ Èç¹ûÊÇ£¬ ¿ÉÒÔÏÈÂÔ¹ýÕâÒ»½Ú¡£ Èç¹û²»ÊÇ£¬ ÄúÓ¦µ±¿´¿´ÊDz»ÊÇÒª¸²¸ÇÕâЩ±äÁ¿£º DISTVERSION¡¢ DISTNAME¡¢ EXTRACT_CMD¡¢ EXTRACT_BEFORE_ARGS¡¢ EXTRACT_AFTER_ARGS¡¢ EXTRACT_SUFX£¬ DISTFILES£¬È¡¾öÓÚÄú port µÄ distfile ¸ñʽÓжàô¹ÖÒì¡£ (×î³£¼ûµÄÒ»¸öÀý×Ó±ãÊÇ EXTRACT_SUFX=.tar.Z£¬ Ò»°ãÕâÊÇÒòΪ tar °üÊÇÓà compress ¶ø²»ÊÇ gzip ѹËõµÄʱºò¡£)

¡¡¡¡×îÔãµÄÇé¿öÊÇ£¬ ÄúÐèÒª×Ô¼º±àд do-extract À´¸²¸ÇĬÈϵ͍Ò壬 ¾¡¹ÜÕâ²»³£¼û£¬ µ«Èç¹ûÓöµ½ÁË£¬ »¹ÊÇÐèÒªÕâô×ö¡£


5.2 ̟̞

¡¡¡¡Makefile µÄµÚÒ»²¿·Ö±ãÊÇ port µÄÃû×Ö¡¢ °æ±¾ºÅ£¬ ÒÔ¼°ËüËùÊôµÄ·ÖÀà¡£


5.2.1 PORTNAME ºÍ PORTVERSION

¡¡¡¡ÄúÓ¦¸Ã°Ñ PORTNAME ÉèÖÃΪÄú port µÄÃû×Ö£¬ PORTVERSION ÔòÊÇ port µÄ°æ±¾ºÅ¡£


5.2.2 PORTREVISION ºÍ PORTEPOCH

5.2.2.1 PORTREVISION (port µÄÐÞ¶©°æ±¾ºÅ)

¡¡¡¡PORTEREVISION ±äÁ¿ÊÇÒ»¸öµ¥µ÷µÝÔöµÄÖµ£¬ Èç¹û²»Îª 0£¬ ¾Í»á±»¼Óµ½°üÃûµÄºóÃæ£¬ µ± PORTVERSION Ôö¼Ó µÄʱºòÓ¦±»Öà 0 (Ò²¾ÍÊǵ±¹Ù·½ÓÐа汾·¢²¼µÄʱºò)¡£ PORTREVISION »á±»×Ô¶¯»¯¹¤¾ß (±ÈÈç pkg_version(1)) ÓÃÀ´¼ì²âÊÇ·ñ´æÔÚ¿ÉÓõÄа汾¡£

¡¡¡¡Ã¿µ± port ·¢Éú±ä»¯²¢¶ÔÉú³ÉµÄ package µÄÄÚÈÝ»ò½á¹¹ÓÐÏÔÖøÓ°Ïìʱ£¬ ¶¼Ó¦Ôö¼Ó PORTREVISION Öµ¡£

¡¡¡¡ÏÂÃæÊÇһЩӦµ±ÐÞ¸Ä PORTREVISION µÄÇé¿ö£º

  • ÓÐеIJ¹¶¡ÓÃÀ´ÐÞÕý°²È«Â©¶´¡¢ ´íÎó£¬ »ò¸ø port Ìí¼ÓÁËÐµĹ¦ÄÜ¡£

  • ÐÞ¸ÄÁË Makefile Àï±àÒëʱ¿ªÆô»ò½ûÓõÄÑ¡Ïî¡£

  • ÐÞ¸ÄÁËÒª°²×°ÎļþµÄÁбí»ò°²×°Ê±µÄÐÐΪ (ÀýÈ磬 ÐÞ¸ÄÁËÒ»¸öÓÃÀ´¸ø package ³õʼ»¯Êý¾ÝµÄ½Å±¾£¬ Èç ssh host keys)¡£

  • Ò»¸öportÒÀÀµµÄ¹²Ïí¿â°æ±¾¸Ä±ä (ÔÚÕâÖÖÇé¿öÏ£¬ µ±°²×°ÁËа汾µÄ¹²Ïí¿â£¬ ºóÔÙÈ¥°²×°½ÏÔçµÄÈí¼þ¾Í»á³ö´í£¬ ÒòΪËüÃÇÒªÒÀÀµÀ쵀 libfoo.x ¶ø²»ÊÇlibfoo.(x+1))¡£

  • Ô­×÷ÕßÐÞ¸ÄÁË port distfile£¬ ²¢ÇÒ distfile µÄÐÂÀϰ汾֮¼äÓà diff -ru Ö»ÄÜ·¢ÏÖһЩϸ΢µÄ±ä»¯£¬ ÕâʱÎÒÃÇÖ»ÐèÒª¶Ô distinfo ×öÏàÓ¦µÄÐÞÕý£¬ ¶ø²»ÐèÒªÐÞ¸Ä PORTVERSION¡£

¡¡¡¡²»ÐèÒªÐÞ¸Ä PORTREVISION µÄÀý×Ó£º

  • port ½á¹¹·ç¸ñµÄ¸Ä±ä£¬ µ«¶ÔÓÚ´ò³ÉµÄ°üûÓй¦ÄܵÄÉϵı仯¡£

  • MASTER_SITES ·¢Éú±ä»¯£¬ »ò½øÐÐÁË¶Ô port ¹¦ÄܵÄÐ޸ģ¬ µ«²»ÖÂÓ°Ïì×îºó´ò³ÉµÄ°ü¡£

  • ¶Ô distfiles ÖîÈçÐÞÕýƴд´íÎóÖ®ÀàµÄ²¹¶¡£¬ ¶ÔÓû§¶øÑÔûÓÐÉý¼¶ÉϵÄÂé·³¡£

  • ¶ÔÒ»¸öÔ­±¾±àÒëʧ°ÜµÄ°üµÄÐ޸ģ¬ ʹÆä¿É±àÒ룬 ¶øÃ»ÓмÓÈëй¦ÄÜ¡£ ÒòΪ PORTREVISION ±íʾ°üµÄÄÚÈÝ·¢ÉúÁ˱仯£¬ Èç¹ûÏÈǰûÓпɱàÒëµÄ°ü£¬ Ò²¾Í²»ÐèÒªÐÞ¸Ä PORTREVISION À´±íʾ±ä»¯¡£

¡¡¡¡Ò»¸öÐ޸IJ¢Ìá½» port µÄÔ­ÔòÊÇ£º ʹµÃ±ðÈËÄÜ´ÓÖÐÊÜÒæ (¸Ä½ø¡¢ ÐÞ¸ÄÒÑÓдíÎó£¬ »òʹÐ嵀 package Äܹ»ÔËÐÐ)£¬ Äú»¹ÒªÈ¨ºâÒ»ÏÂÕâÊÇ·ñÓ¦ÈÃÄÇЩ¾­³£¸üРports Ê÷µÄÈËÉý¼¶£¬ Èç¹û»Ø´ðÊÇ ¡°ÊÇ¡± µÄ»°£¬ PORTREVISION ¾ÍÓ¦¸ÃÐÞ¸ÄÁË¡£


5.2.2.2 PORTEPOCH (port µÄ¼ÓȨ°æ±¾ºÅ)

¡¡¡¡ÓÐʱÈí¼þÉÌ»ò FreeBSD µÄ porter »áʹÓñȾɰæµÄ°æ±¾ºÅСµÄÊý×Ö×öΪа汾ºÅµÄÇé¿ö¡£ ¾ÙÀýÀ´Ëµ£¬ ´Ó foo-20000801 µ½ foo-1.0 (´ÓÐÎʽÉÏÀ´ËµÕâÊDz»¶ÔµÄ£¬ ÒòΪ 20000801 ÔÚÊýÖµÉϱÈ1´óºÜ¶à)¡£

¡¡¡¡ÔÚÕâÖÖÇé¿öÏ£¬ PORTEPOCH Ó¦µ±Ôö¼Ó¡£ Èç¹û PORTEPOCH ·Ç 0£¬ ¾ÍÓ¦µ±¼Óµ½°üÃû×ֵĺóÃæ¡£ PORTEPOCH ÓÀÔ¶²»Äܱ»¼õÉÙ»òÇåÁ㣬 ÒòΪÄÇÑù»áµ¼ÖÂÓëǰһʱÆÚµÄ package ±È½Ï°æ±¾Ê±²úÉú²»ÕýÈ·µÄ½á¹û¡£ (¾ÍÊÇ˵£¬ ÄǸö package ¾Í²»»á±»¼ì²âµ½ÒѾ­¹ýʱÁË¡£) еİ汾ºÅ (±ÈÈçÇ°ÃæÔÚÇ°ÃæÄǸöÀý×ÓÖÐµÄ 1.0,1) ÔÚÊýÖµÉϱÈǰһ¸ö°æ±¾ (20000801) С£¬ µ«¶àÊý×Ô¶¯»¯µÄ¹¤¾ß»áÈÏΪ ,1 ºó׺Òâζ×űÈǰһ¸ö°üµÄºó׺ ,0 ´ó¡£

¡¡¡¡´íÎóµÄÈ¥³ý»òÖØÖà PORTEPOCH »áµ¼Öºܶ಻ÐÒ·¢Éú£» Èç¹ûÄú»¹²»Ã÷°×Ç°ÃæµÄÌÖÂÛ£¬ Çë¶àÔĶÁ¼¸´ÎÖ±ÖÁÃ÷°×Ϊֹ£¬ »òµ½ÓʼþÁбíÉÏÀ´ÌáÎÊ¡£

¡¡¡¡´ó¶àÊý port ¶¼²»»áÓõ½ PORTEPOCH£¬ ²¢ÇÒÈç¹ûij¸öÈí¼þµÄÏÂÒ»¸ö°æ±¾¸Ä±äÁ˰汾ºÅ½á¹¹µÄ»°£¬ ÓÃÇÉÃîµÄ·½·¨À´É趨 PORTVERSION Ò²ÄܱÜÃâʹÓà PORTEPOCH¡£ È»¶ø£¬ FreeBSD porter Ò²ÐèҪעÒ⣬ µ±ÓÐа汾µÄÈí¼þ·¢²¼£¬ µ«²¢·ÇÕýʽ°æ±¾Ê± ©¤©¤ ±ÈÈç ¡°snapshot¡± °æ±¾£¬ Ô­×÷Õß¿ÉÄÜ»áʹÓõ±Ê±µÄÈÕÆÚÀ´ÃüÃû£¬ ÕâÔÚÐ嵀 ¡°¹Ù·½¡± °æ±¾·¢²¼µÄʱºò£¬ ¾ÍºÜÈÝÒ×ÒýÆðÇ°ÃæÌáµ½µÄÎÊÌâ¡£

¡¡¡¡¾Ù¸öÀý×Ó£¬ Èç¹û snapshot °æ±¾µÄ·¢²¼ÈÕÆÚÊÇ 20000917£¬ Õâ¸öÈí¼þµÄÉÏÒ»¸ö°æ±¾ÊÇ1.2£¬ ÄÇôÕâ¸ö°æ±¾µÄ PORTVERSIN Ó¦¸ÃÉèΪ 1.2.20000917 »òÀàËÆµÄÑù×Ó£¬ ¶ø²»ÊÇ20000917£¬ ÕâÑùÔÚ 1.3 ·¢²¼ÒÔºó£¬ Ð°汾¾Í¿ÉÒÔÔÚÊýÖµÉÏ´óÓھɵİ汾ÁË¡£


5.2.2.3 ¹ØÓÚ PORTREVISION ºÍ PORTEPOCH µÄÓÃÀý

¡¡¡¡gtkmumble port£¬°æ±¾ºÅ 0.10£¬ ±»Ìá½»µ½ ports collection:

PORTNAME=       gtkmumble
PORTVERSION=    0.10

¡¡¡¡PKGNAME ±ä³É gtkmumble-0.10¡£

¡¡¡¡È»ºóÓÐÈË·¢ÏÖÁËÒ»¸ö°²È«Â©¶´£¬ ÐèÒªÓÃÒ»¸öFreeBSDµÄ²¹¶¡¡£ PORTREVISION ¾ÍÒªÏàÓ¦µÄÔö¼Ó¡£

PORTNAME=       gtkmumble
PORTVERSION=    0.10
PORTREVISION=   1

¡¡¡¡PKGNAME±ä³ÉÁË gtkmumble-0.10_1

¡¡¡¡Èí¼þµÄ×÷Õß·¢²¼ÁËеİ汾£¬ °æ±¾Îª 0.2 (×÷Õß±¾À´µÄÒâ˼ÊÇ£¬ Óà 0.10 ±íʾ 0.1.0£¬¡°¶ø²»ÊÇÖ¸ 0.9 Ö®ºóµÄÄǸö°æ±¾¡± - µ«ÊÇÏÖÔÚÌ«³ÙÁË)¡£ ÒòΪÏÖÔڵĴΰ汾ºÅ 2 ÔÚÊýÖµÉϱÈÉÏÒ»¸ö°æ±¾ 10 С£¬ PORTEPOCH ±ØÐëÔö¼Ó£¬ ÒÔʹÐ嵀 package ±»ÈÏΪÊÇ ¡°¸üеġ±¡£ ÓÉÓÚÄÇÊÇ×÷Õß·¢²¼µÄÒ»¸öа汾£¬ Òò´Ë PORTREVISION Ó¦±»ÖÃ0 (»òÕß´Ó Makefile ÀïÃæÉ¾³ýËü)¡£

PORTNAME=       gtkmumble
PORTVERSION=    0.2
PORTEPOCH=      1

¡¡¡¡PKGNAME ±ä³ÉÁË gtkmumble-0.2,1

¡¡¡¡ÏÂÒ»¸ö°æ±¾½«»áÊÇ 0.3¡£ ÓÉÓÚ PORTEPOCH ´Ó²»¼õÉÙ£¬ ÄÇô¾ÍÎÞÐë¸Ä¶¯£º

PORTNAME=       gtkmumble
PORTVERSION=    0.3
PORTEPOCH=      1

¡¡¡¡PKGNAME ±ä³É gtkmumble-0.3,1

×¢Òâ: Èç¹ûÔÚÕâ´ÎÉý¼¶ÖÐ PORTEPOCH ±»ÖÃΪÁË0£¬ ÄÇôÔÚ×°ÁË gtkmumble-0.10_1 °üµÄ»úÆ÷ÉϾÍÎÞ·¨¼ì²âµ½ gtkmumble-0.3 °üµÄ¸üУ¬ ÒòΪ 3 ÔÚÊýÖµÉÏ±È 10 С¡£ ¼Çס£¬ ÕâÊÇ PORTEPOCH ×îÖØÒªµÄµØ·½¡£


5.2.3 PKGNAMEPREFIX ºÍ PKGNAMESUFFIX

¡¡¡¡2 ¸ö¿ÉÑ¡µÄ±äÁ¿£¬ PKGNAMEPREFIX ºÍ PKGNAMESUFFIX ¿ÉÒÔºÍ PORTNAME »¹ÓÐ PORTVERSION ÅäºÏʹÓ㬠ÐγÉÏñÕâÑùµÄ PKGNAME£º ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}¡£ ÇëÈ·¶¨·ûºÏÎÒÃÇµÄ °üÃüÃû¹æÔò¡£ µ±È»£¬ ²» ÔÊÐíÔÚ PORTVERSION ÖÐʹÓÃÁ¬×Ö·û (-)¡£ Èç¹û°üÃûÓÐ language- »ò -compiled.specifics ²¿·Ö (¼ûÏÂÎÄ)£¬ Çë·Ö±ðÓà PKGNAMEPREFIX ºÍ PKGNAMESUFFIX£¬ ²»ÒªÖ±½Ó¼Óµ½ PORTNAME ÖС£


5.2.4 LATEST_LINK

¡¡¡¡LATEST_LINK ÔÚ±àÒë°üµÄ¹ý³ÌÖÐÓÃÓÚÈ·¶¨¿ÉÒÔΪ pkg_add -r ʹÓõÄËõ¶ÌµÄÃû×Ö¡£ ¾ÙÀýÀ´Ëµ£¬ ÔÚ°²×°×îа汾µÄ perl µÄʱºò£¬ Ö»ÐèÖ¸¶¨ pkg_add -r perl ¶øÎÞÐèÖªµÀ¾ßÌåµÄ°æ±¾ºÅ¡£ Õâ¸öÃû×ÖÓ¦¸ÃÊǶÀÒ»ÎÞ¶þµÄ£¬ ²¢ÇÒ¶ÔÓû§¶øÑÔÓ¦¸ÃÊÇÏÔ¶øÒ×¼ûµÄÃû×Ö¡£

¡¡¡¡ÓÐʱ£¬ ÔÚ ports Ì×¼þÖпÉÄÜ»á´æÔÚͬһ³ÌÐòµÄ¶à¸ö°æ±¾¡£ Ë÷ÒýºÍÔ¤±àÒë°üµÄÁª±àϵͳ¶¼ÐèÒªÄܹ»½«ËüÃÇÊÓΪ²»Í¬µÄÈí¼þ°ü£¬ ¾¡¹ÜÆä PORTNAME¡¢ PKGNAMEPREFIX£¬ ÒÔ¼° even PKGNAMESUFFIX ¿ÉÄÜÊÇһģһÑùµÄ¡£ Óöµ½ÕâÖÖÇé¿öʱ£¬ ¾ÍÐèÒª½«³ýÁË ¡°Ö÷¡± port Ö®ÍâµÄÆäËû port ÖÐµÄ LATEST_LINK ±äÁ¿ÉèΪ²»Í¬µÄÖµ ©¤©¤ Çë²Î¼û lang/gcc46 ºÍ lang/gcc port£¬ ÒÔ¼° www/apache* ϵÁУ¬ ÒÔÁ˽âËüµÄÓ÷¨¡£ Èç¹ûÉèÖÃÁË NO_LATEST_LINK£¬ Ôòϵͳ±ã²»»áÉú³É¶ÔÓ¦µÄÁ¬½Ó£¬ ¶ÔÓÚ·Ç ¡°Ö÷¡± port À´ËµÊÇÒ»¸ö¿ÉÐеÄÑ¡Ôñ¡£ ÐèҪעÒâµÄÊÇ£¬ ÈçºÎÈ·¶¨ ¡°Ö÷¡± °æ±¾ ©¤©¤ ¡°×îÁ÷ÐС±¡¢ ¡°ÊÜÖ§³Ö×îºÃ¡±£¬ ¡°±ä¶¯×îÉÙ¡±£¬ µÈµÈ ©¤©¤ ÒѾ­³¬¹ýÁ˱¾ÊéÄܹ»¸ø³öµÄ½¨Ò鷶Χ£» ÕâÀïÖ»ÊÇÏòÄú½éÉÜÔÚÑ¡¶¨ÁËÒ»¸ö ¡°Ö÷¡± port Ö®ºóÈçºÎÖ¸¶¨ÆäËû port µÄ°æ±¾¡£


5.2.5 °üÃüÃû¹æÔò

¡¡¡¡ÒÔÏÂÊÇÄúÔÚÃüÃûÄúµÄ°üʱӦµ±×ñÊØµÄ¹æÔò¡£ Õ⽫ʹµÃÎÒÃǷŰüµÄĿ¼¸üÀûÓÚä¯ÀÀ£¬ ÒòΪÎÒÃÇÒѾ­ÓÐÊýÒÔÍò¼ÆµÄ°üÁË£¬ Èç¹ûÓû§¾õµÃ²é¿´°üÃûºÜÀ§Äѵϰ£¬ ËûÃÇ»áºÜ¿ì×ß¿ªµÄ¡£

¡¡¡¡Ò»¸ö°üµÄÃû×ÖÓ¦¸Ã¿´ÆðÀ´ÏñÕâÑù£º [language[_region]]-name[[-]compiled.specifics]-version.numbers¡£

¡¡¡¡ÒªÏñÕâÑùÀ´¶¨Òå°üµÄÃû×Ö£º ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}¡£ È·±£ËùÓеıäÁ¿·ûºÏÉÏÃæµÄ¸ñʽ¡£

  1. FreeBSD »á¾¡Á¦È¥Ö§³ÖÓû§µ±µØµÄÓïÑÔ¡£ Èç¹ûÕâ¸ö port ÊÇijÖÖÓïÑÔרÓõģ¬ ÄÇô language- ²¿·ÖÓ¦¸ÃÊÇ ÓÉ ISO-639 ¶¨ÒåµÄ×ÔÈ»ÓïÑ﵀ 2 ¸ö×ÖĸËõд¡£ ±ÈÈ磬 jaÊDZíʾÈÕ±¾£¬ ru ÊDZíʾ¶íÂÞ˹£¬ vi ±íʾԽÄÏ£¬ zh ±íʾÖйú£¬ ko ±íʾº«¹ú£¬ de ±íʾµÂ¹ú¡£

    Èç¹ûÊÇÕë¶ÔijÖÖÓïÑÔµÄijһµØÇøµÄ»°£¬ ÔÙÒª¼ÓÉÏ2¸ö×ÖĸµÄ¹ú¼Ò´úÂë¡£ ÀýÈ磬 en_US ±íʾÃÀ¹úÓ¢Ó fr_CH ±íʾÈðÊ¿·¨Óï¡£

    language- ²¿·ÖÓ¦¸ÃÔÚ PKGNAMEPREFIX ±äÁ¿ÀïÉèÖá£

  2. name ²¿·ÖµÄÊ××ÖĸӦ¸Ã Сд¡£ (ÓàϵIJ¿·Ö¿ÉÒÔ°üº¬´óд×Öĸ£¬ ËùÒÔµ±Äú Ҫת»»Ò»¸ö°üº¬´óд×ÖĸÈí¼þµÄÃû×Öʱ£¬ ÄúÐèÒª ×Ô¼º×ö³öÅжϡ£) ¶ÔÓÚ Perl 5 Ä£¿éµÄÃüÃû£¬ Óиö´«Í³µÄ¹æÔòÊÇ£¬ ÔÚÇ°Ãæ ¼ÓÉÏ p5- ²¢°ÑÁ½¸öðºÅµÄ²¿·Ö¸ÄΪÁ¬×ֺţ¬ È磺 Data::Dumper Ä£¿é¶ÔÓ¦µÄÃû×Ö£¬ ¾ÍÓ¦¸ÃÊÇ p5-Data-Dumper¡£

  3. È·ÈÏ port µÄÃû×ֺͰ汾֮¼äÓÐÇåÎúµÄ·Ö¸ô£¬ ²¢·ÅÈë PORTNAME ºÍ PORTVERSION ±äÁ¿¡£ ÔÚ PORTNAME Öаüº¬°æ±¾²¿·ÖµÄΨһÀíÓÉÊÇÉÏÓÎÈí¼þ°üÕæµÄ²ÉÓÃÕâÑùµÄÃüÃû·½Ê½£¬ ÀàËÆ textproc/libxml2 »ò japanese/kinput2-freewnn port ÕâÑù¡£ ·ñÔò£¬ ÔÚ PORTNAME ÖоͲ»Ó¦°üº¬Èκΰ汾ÐÅÏ¢¡£ Ðí¶à port ²ÉÓÃͬÑùµÄ PORTNAME Ãû×ÖÊǺÜÕý³£µÄ£¬ www/apache* port ±ãÊÇÈç´Ë£» ÔÚÕâÖÖÇé¿öÏ£¬ ²»Í¬µÄ°æ±¾ (ÒÔ¼°²»Í¬µÄË÷ÒýÏî) ÊÇÓÉ PKGNAMEPREFIX¡¢ PKGNAMESUFFIX£¬ ÒÔ¼° LATEST_LINK µÄÖµµÄ²»Í¬¶øÓÐËùÇø±ðµÄ¡£

  4. Èç¹û port ¿ÉÒÔʹÓò»Í¬µÄ Ó²±àÂëĬÈÏÅäÖà ½øÐÐÁª±à (ͨ³£ÊÇһϵÁÐ port µÄÒ»²¿·ÖĿ¼Ãû)£¬ Ôò -compiled.specifics ²¿·Ö¾ÍÓ¦¸ÃÃ÷ʾ±àÒë½øÈ¥µÄĬÈÏÖµ (´Ë´¦Á¬×ÖºÅÊÇ¿ÉÑ¡µÄ)¡£ ͨ³£µÄÓÃÀý°üÀ¨Ö½ÐͺͲ»Í¬µÄ×ÖÌå³ß´ç¡£

    -compiled.specifics ²¿·ÖÓ¦¸Ãͨ¹ý PKGNAMESUFFIX ±äÁ¿À´ÉèÖá£

  5. °æ±¾ºÅÓ¦¸Ã½ôËæÔÚÁ¬×ֺŠ(-) ºóÃæ²¢ÓÉÊý×ÖºÍ×Öĸ×é³É¡£ ÌØ±ðÖ¸³ö£¬ ÁíÍâµÄÁ¬×ÖºÅÊDz»ÔÊÐí³öÏÖÔÚ°æ±¾ºÅÀïµÄ¡£ ΨһÀýÍâµÄÊÇ×Ö·û´® pl (±íʾ ¡°patchlevel¡±)£¬ Ö»ÄÜ ÓÃÔÚÈí¼þûÓÐÖ÷°æ±¾ºÅºÍ´Î°æ±¾ºÅµÄÇé¿öÏ¡£ Èç¹ûÈí¼þµÄ°æ±¾ºÅÀï³öÏÖÁËÏñ ¡°alpha¡±£¬ ¡°beta¡±£¬ ¡°rc¡±£¬ ¡°pre¡±£¬ È¡µÚÒ»¸ö×Öĸ°ÑËü·ÅÔÚСÊýµãµÄºóÃæ¡£ Èç¹ûÔÚ°æ±¾ºÅÀïÒ»Ö±³öÏÖÄÇЩÃû×Ö£¬ ÄÇôÔÚÊý×ÖºÍ×Öĸ֮¼ä²»Ó¦ÓжàÓàµÄСÊýµã¡£

    Õâ¸ö·½·¨ÊÇΪÁ˸üÈÝÒ×µÃÆ¾°æ±¾ºÅÀ´ÅÅÐò port¡£ ÌØ±ð×¢ÒâµÄÊÇ£¬ È·±£°æ±¾ºÅÖ®¼äµÄÿ²¿·Ö¶¼ÓÉСÊýµãÀ´·Ö¸ô£¬ Èç¹ûÈÕÆÚÒ²Êǰ汾ºÅµÄÒ»²¿·Ö£¬ ¾ÍÓÃÕâÑùµÄ¸ñʽ£¬ 0.0.yyyy.mm.dd ÕâÑùµÄ¸ñʽ£¬ ¶ø·Ç dd.mm.yyyy ÉõÖÁ yy.mm.dd ÕâÖÖ²»ÊʺϱíʾǧÄêµÄ¸ñʽ¡£ ÔÚ°æ±¾ºÅÉÏʹÓà 0.0. ǰ׺ʮ·ÖÖØÒª£¬ ÒòΪµ±Èí¼þ·¢ÐÐÕýʽµÄ°æ±¾Ê±£¬ Æä°æ±¾ºÅÊý×ֺܿÉÄÜ»áСÓÚ±íʾÄê·ÝµÄ yyyy Êý×Ö¡£

¡¡¡¡ÕâÀïÊÇÒ»Ð©ÕæÊµµÄÀý×Ó£¬ ÎÒÃǽå´Ë˵Ã÷ÈçºÎ°ÑÈí¼þ×÷Õß¶ÔÈí¼þµÄÃüÃû£¬ ת»»ÎªÊʺÏÎÒÃǰüµÄÃüÃû·½Ê½£º

·¢ÐаæµÄÃû×Ö PKGNAMEPREFIX PORTNAME PKGNAMESUFFIX PORTVERSION ˵Ã÷
mule-2.2.2 (¿Õ) mule (¿Õ) 2.2.2 ûʲôÐèÒªÐ޸ĵÄ
EmiClock-1.0.2 (¿Õ) emiclock (¿Õ) 1.0.2 ³ÌÐòµÄÃû×Ö²»ÄÜʹÓôóд×Öĸ
rdist-1.3alpha (¿Õ) rdist (¿Õ) 1.3.a Ïñ alpha ÕâÑùµÄ×Ö·û´®ÊDz»ÔÊÐí³öÏÖµÄ
es-0.9-beta1 (¿Õ) es (¿Õ) 0.9.b1 Ïñ beta ÕâÑùµÄ×Ö·û´®ÊDz»ÔÊÐí³öÏÖµÄ
mailman-2.0rc3 (¿Õ) mailman (¿Õ) 2.0.r3 Ïñ rc ÕâÑùµÄ×Ö·û´®ÊDz»ÔÊÐí³öÏÖµÄ
v3.3beta021.src (¿Õ) tiff (¿Õ) 3.3 ÄǸöÊÇɶ¹í¶«Î÷£¿
tvtwm (¿Õ) tvtwm (¿Õ) pl11 ×ÜÐèÒªÓиö°æ±¾ºÅ°É
piewm (¿Õ) piewm (¿Õ) 1.0 ×ÜÐèÒªÓиö°æ±¾ºÅ°É
xvgr-2.10pl1 (¿Õ) xvgr (¿Õ) 2.10.1 pl Ö»ÔÊÐíÔÚûÓÐ Ö÷/´Î °æ±¾ºÅµÄÇé¿öϲÅÄܳöÏÖ
gawk-2.15.6 ja- gawk (¿Õ) 2.15.6 ÈÕÎİæ
psutils-1.13 (¿Õ) psutils -letter 1.13 Ö½ÕÅ´óСÒѾ­ÔÚ±àÒëµÄʱºò±»Ó²±àÂëµ½³ÌÐòÀïÁË
pkfonts (¿Õ) pkfonts 300 1.0 300dpi ×ÖÌåµÄ°ü

¡¡¡¡Èç¹ûÔÚԭʼµÄ´úÂëÀïûÓа汾ºÅ£¬ »òÕßÔ­×÷Õß²¢²»´òË㿪·¢ÁíÍâµÄ°æ±¾£¬ ¾ÍÓ¦°Ñ°æ±¾ºÅÉè³É 1.0 (¾ÍÏñÇ°Ãæ piewm µÄÀý×ÓÄÇÑù)¡£ ·ñÔò£¬ ÒªÇóԭʼµÄ×÷Õß¼ÓÉϰ汾ºÅ»òʹÓÃÈÕÆÚ (0.0.yyyy.mm.dd) À´×÷Ϊ°æ±¾ºÅ¡£


5.3 ·ÖÀà

5.3.1 CATEGORIES (ËùÊô·ÖÀà)

¡¡¡¡ÔÚ°üÖÆ×÷Íê³ÉÖ®ºó£¬ Ëü»á±»·ÅÔÚ /usr/ports/packages/All£¬ ²¢½¨Á¢Ò»ÏµÁÐÀ´×Ô /usr/ports/packages ÏÂ×ÓĿ¼µÄ·ûºÅÁ¬½Ó¡£ ÕâЩ×ÓĿ¼µÄÃû³ÆÊÇÓÉ CATEGORIES Ö¸¶¨µÄ¡£ Õ⽫·½±ãÓÚÄÇЩÓû§ÔÚ FTP Õ¾µã»ò CDROM µÄÒ»´ó¶Ñ°üÀïÃæÑ°ÕÒ×Ô¼ºÏëÒªµÄ°ü¡£ Çë²é¿´Ò»Ï ĿǰµÄ·ÖÀà±í£¬ ²¢ÕÒ³öÒ»¸öÊʺÏÄú port µÄ·ÖÀà¡£

¡¡¡¡´ËÁбíÒ²»á¾ö¶¨ÄúµÄ port ÔÚ port Ŀ¼ÖеÄλÖᣠÈç¹ûÄúÔÚÕâÀïÉ趨ÁË 1 ¸öÒÔÉϵķÖÀ࣬ ÔòÈÏΪÄú port ÎļþÓ¦·Åµ½ÒÔµÚÒ»¸ö·ÖÀàÃüÃûµÄ×ÓĿ¼ÖС£ Çë²ÎÔÄ ºóÃæ ¹ØÓÚÈçºÎÑ¡ÔñÕýÈ··ÖÀàµÄ¸ü¶àÌÖÂÛ¡£


5.3.2 ĿǰµÄ·ÖÀà±í

¡¡¡¡ÕâÊÇĿǰ port ÖеķÖÀà¡£ ÄÇЩÓÃÐǺŠ(*) ±ê¼ÇµÄÊÇ ÐéÄâ·ÖÀà ©¤©¤ ËüÃÇÔÚportsÊ÷ÀïûÓÐÏàÓ¦µÄ×ÓĿ¼£¬ Òò¶øÖ»ÓÃÀ´×öΪ´ÎÒªµÄ·ÖÀ࣬ ÓÃÒÔ·½±ãËÑË÷¡£

×¢Òâ: ¶ÔÓÚ·ÇÐéÄâµÄ·ÖÀàÀ´Ëµ£¬ Äú»á¿´µ½ÔÚÏà¶ÔÓ¦×ÓĿ¼ÖÐµÄ Makefile ÀïÓÐдÔÚ COMMENT ÀïµÄµ¥ÐÐÃèÊö¡£

·ÖÀà ÃèÊö ×¢ÒâÊÂÏî
accessibility °ïÖú²ÐÕÏÈËÊ¿µÄ port¡£  
afterstep* ¶ÔÓÚ AfterStep ´°¿Ú¹ÜÀíÆ÷µÄÖ§³Ö¡£  
arabic °¢À­²®ÓïÑÔÖ§³Ö¡£  
archivers ѹËõÓ뱸·Ý¹¤¾ß¡£  
astro ÓйØÌìÎÄѧµÄ port¡£  
audio ÉùÒôÖ§³Ö¡£  
benchmarks ²âÆÀ³ÌÐò¡£  
biology ÉúÎïѧÏà¹ØµÄÈí¼þ¡£  
cad ¼ÆËã»ú¸¨ÖúÉè¼Æ¹¤¾ß¡£  
chinese ÖÐÎÄÓïÑÔÖ§³Ö¡£  
comms ͨѶÈí¼þ¡£ ´ó²¿·ÖÊÇÓÃÓÚ´®¿ÚͨѶµÄ¡£
converters ×Ö·û±àÂëת»»¡£  
databases Êý¾Ý¿â¡£  
deskutils ÔÚ·¢Ã÷¼ÆËã»úÒÔǰ¾ÍÒѾ­ÔÚ×ÀÃæÉÏʹÓõĶ«Î÷¡£  
devel ³ÌÐò¿ª·¢¹¤¾ß¡£ ²»Òª°Ñ¿ª·¢¿â·ÅÔÚÕâÀï ©¤©¤ ³ý·ÇÄúÔÙÒ²ÕÒ²»µ½¸üºÏÊʵķÖÀ࣬ ·ñÔò¾Í²»¸Ã·ÅÔÚÕâ¸ö·ÖÀàÀï¡£
dns DNS Ïà¹ØµÄÈí¼þ¡£  
docs* ÓÐ¹Ø FreeBSD ÎĵµµÄ Meta-ports¡£  
editors ͨÓñ༭Æ÷¡£ ÓÐÌØÊâÓÃ;µÄ±à¼­Æ÷Ó¦¸Ã±»ÖÃÓÚÏàÓ¦µÄ·ÖÀàÖÐ (±ÈÈ磬 Êýѧ-·½³Ìʽ ±à¼­Æ÷Ó¦¸Ã·ÅÔÚ math ·ÖÀàÀï¡£
elisp* Emacs-lispÏà¹ØµÄport¡£  
emulators ÆäËü²Ù×÷ϵͳµÄÄ£ÄâÆ÷¡£ ÖÕ¶ËÄ£ÄâÆ÷ ²»Ó¦¸Ã ÊôÓÚÕâ¸ö·ÖÀà ©¤©¤ »ùÓÚ X µÄÓ¦¸Ã·ÅÔÚ x11 ¶ø»ùÓÚÎı¾Ä£Ê½µÄÓ¦¸Ã·Åµ½ comms »ò misc ÖÐÈ¥£¬ È¡¾öÓÚ¾ßÌåµÄ¹¦ÄÜ¡£
finance »õ±Ò¡¢ ½ðÈÚÒÔ¼°Ïà¹ØµÄÓ¦ÓóÌÐò¡£  
french ·¨ÓïÓïÑÔÖ§³Ö¡£  
ftp FTP ¿Í»§¶ËºÍ·þÎñÆ÷¶ËµÄ³ÌÐò¡£ Èç¹ûÄúµÄ port ͬʱ֧³Ö FTP ºÍ HTTP µÄ»°£¬ °ÑËü·Å½ø ftp ²¢°Ñ www ×öΪµÚ¶þ·ÖÀà¡£
games ÓÎÏ·¡£  
geography* ÓëµØÀíѧÓйصÄÈí¼þ¡£  
german µÂÓïÓïÑÔÖ§³Ö¡£  
gnome* ¹ØÓÚ GNOME ÏîÄ¿µÄÖ§³Ö¡£  
gnustep* Óë GNUstep ×ÀÃæ»·¾³ÓйصÄÈí¼þ¡£  
graphics ͼÐÎͼÏó³ÌÐò¡£  
hamradio* ÒµÓàÎÞÏߵ簮ºÃÕßʹÓõÄÈí¼þ¡£  
haskell* ÓÐ¹Ø Haskell ±à³ÌÓïÑÔµÄÈí¼þ¡£  
hebrew Ï£²®À´ÓïÓïÑÔÖ§³Ö¡£  
hungarian ÐÙÑÀÀûÓïÓïÑÔÖ§³Ö¡£  
ipv6* IPv6 Ïà¹ØÈí¼þ¡£  
irc IRC Ïà¹Ø³ÌÐò  
japanese ÈÕÓïÓïÑÔÖ§³Ö¡£  
java Óë Java" ±à³ÌÓïÑÔÓйصÄÈí¼þ¡£ java ·ÖÀà¶Ô port ¶øÑÔ²»Ó¦ÊÇÆäΨһµÄ·ÖÀà¡£ ³ýÁËÖ±½ÓÓë Java ÓïÑÔÏà¹ØµÄ port Ö®Í⣬ ¿ª·¢ÈËÔ±Ó¦¾¡Á¿±ÜÃâʹÓà java ×÷Ϊ port µÄÖ÷·ÖÀà¡£
kde* K ×ÀÃæ»·¾³ (KDE) Ïà¹ØµÄÈí¼þ¡£  
kld* ¿É¼ÓÔØÄÚºËÄ£¿é¡£  
korean º«ÓïÓïÑÔÖ§³Ö¡£  
lang ±à³ÌÓïÑÔ¡£  
linux* Linux Ïà¹ØµÄÓ¦ÓóÌÐò¡£  
lisp* ºÍ Lisp ±à³ÌÓïÑÔÓйصÄÈí¼þ¡£  
mail µç×ÓÓʼþÈí¼þ¡£  
math ÊýÖµ¼ÆËãºÍÆäËüÊýѧÏà¹ØµÄÈí¼þ¡£  
mbone* MBone Ó¦ÓóÌÐò¡£  
misc ¸÷ʽ¸÷ÑùµÄʵÓóÌÐò¡£ ͨ³£²»ÊôÓÚÆäËüµÄÈκηÖÀ࣬ Èç¹û¿ÉÄܵϰ£¬ ¾¡Á¿ÎªÄúµÄ port Ñ¡Ôñ misc ÒÔÍâµÄ·ÖÀ࣬ ÒòΪÔÚÕâÀïµÄ port ±È½ÏÈÝÒ×±»È˺öÂÔ¡£
multimedia ¶àýÌåÈí¼þ¡£  
net ¸÷ÖÖÍøÂçÏà¹ØµÄÈí¼þ¡£  
net-im ¼´Ê±ÏûÏ¢Èí¼þ¡£  
net-mgmt ÍøÂç¹ÜÀíÈí¼þ¡£  
net-p2p ¶ÔµÈÍø (Peer to peer network) Ó¦ÓóÌÐò¡£  
news USENETÐÂÎÅ×éÏà¹ØÈí¼þ¡£  
palm Palm" ϵÁÐÏà¹ØÈí¼þ¡£  
parallel* ²¢ÐмÆËãÏà¹ØÈí¼þ¡£  
pear* Pear PHP ¼Ü¹¹Ïà¹ØÈí¼þ¡£  
perl5* Perl5 Ïà¹ØµÄÈí¼þ¡£  
plan9* Plan9 Ïà¹Ø³ÌÐò¡£  
polish ²¨À¼ÓïÓïÑÔÓïÑÔÖ§³Ö¡£  
ports-mgmt ÓÃÓÚ¹ÜÀí¡¢ °²×°ºÍ¿ª·¢ FreeBSD ports ºÍÔ¤±àÒë°üµÄ port¡£  
portuguese ÆÏÌÑÑÀÓïÓïÑÔÖ§³Ö¡£  
print ´òÓ¡Ïà¹ØµÄÈí¼þ¡£ ×ÀÃæ³ö°æ¹¤¾ß (´òÓ¡Ô¤ÀÀ¹¤¾ßµÈµÈ) Ò²¿ÉÒÔ·ÅÔÚ´Ë·ÖÀàÀï¡£
python* Python ±à³ÌÓïÑÔÏà¹ØµÄÈí¼þ¡£  
ruby* Ruby ±à³ÌÓïÑÔÏà¹ØµÄÈí¼þ¡£  
rubygems* ÒÆÖ²°æ±¾µÄ RubyGems Èí¼þ°ü¡£  
russian ¶íÓïÓïÑÔÖ§³Ö¡£  
scheme* Óë Scheme ÓïÑÔÓÐ¹ØµÄ port¡£  
science ¿ÆÑ§Ïà¹Øµ«²»ÊʺϷÅÔÚ astro¡¢ biology£¬ ÒÔ¼° math ·ÖÀàµÄ port¡£  
security °²È«Ïà¹ØµÄʵÓóÌÐò¡£  
shells ÃüÁîÐÐ shell¡£  
spanish* Î÷°àÑÀÓïÖ§³Ö  
sysutils ϵͳÏà¹ØµÄʵÓóÌÐò¡£  
tcl* ÒÀÀµÓÚ Tcl ÔËÐÐµÄ port¡£  
textproc Îı¾´¦ÀíµÄʵÓóÌÐò¡£ Õâ¸ö·ÖÀಢ²»ÊʺÏÓÚÄÇЩӦ¸Ã·Åµ½ print µÄ×ÀÃæ³ö°æ¹¤¾ß¡£
tk* ÒÀÀµÓÚ Tk ÔËÐÐµÄ port¡£  
ukrainian ÎÚ¿ËÀ¼ÓïÓïÑÔÖ§³Ö¡£  
vietnamese Ô½ÄÏÓïÓïÑÔÖ§³Ö¡£  
windowmaker* WindowMaker ´°¿Ú¹ÜÀíÆ÷µÄÏà¹ØÖ§³Ö¡£  
www Word Wide WebµÄÏà¹ØÈí¼þ¡£ HTMLÓïÑÔÏà¹ØµÄÖ§³ÖÒ²¿ÉÒÔ·ÅÔÚÕâ¸ö·ÖÀàÀï¡£
x11 X Window SystemÒÔ¼°Ïà¹ØÈí¼þ¡£ Õâ¸ö·ÖÀàÊǸøÄÇЩֱ½ÓÖ§³ÖX Window System µÄÈí¼þµÄ¡£ ²»Òª°Ñ³£¹æµÄ X Ó¦ÓóÌÐòÒ²·Å½øÕâÀ ËüÃÇÖеĴó¶àÊý¶¼Ó¦±»¹éÀൽ x11-* (²Î¼ûÏÂÎÄ)¡£ Èç¹ûÄúµÄ port ÊÇ X Ó¦ÓóÌÐò£¬ Ó¦¶¨Òå USE_XLIB (ʹÓà USER_IMAKE Òþº¬°üÀ¨Ëü)£¬ È»ºó°ÑËü·Åµ½ºÏÊʵķÖÀàÀï¡£  
x11-clocks X11 ϵÄʱÖÓ³ÌÐò¡£  
x11-drivers X11 Çý¶¯³ÌÐò¡£  
x11-fm X11 ϵÄÎļþ¹ÜÀíÆ÷¡£  
x11-fonts X11 ϵÄ×ÖÌåÒÔ¼°Ïà¹Ø¹¤¾ß¡£  
x11-servers X11 ·þÎñÆ÷¡£  
x11-themes X11 Ö÷Ìâ¡£  
x11-toolkits X11 ¹¤¾ß°ü¡£  
x11-wm X11 ´°¿Ú¹ÜÀíÆ÷¡£  
xfce* Óë Xfce ×ÀÃæ»·¾³ÓÐ¹ØµÄ port¡£  
zope* Zope Ïà¹ØµÄÖ§³Ö¡£  

5.3.3 Ñ¡ÔñÕýÈ·µÄ·ÖÀà

¡¡¡¡ÓÉÓÚ²»ÉÙ·ÖÀàÊÇÖØ¸´µÄ£¬ Äúͨ³£ÔÚÓÃÄĸö·ÖÀà×÷ΪÄú port µÄÖ÷·ÖÀàÉÏ×ö³öÑ¡Ôñ¡£ ÏÂÃæÓм¸Ìõ¹æÔòÄܰïÄú½â¾öÕâ¸öÎÊÌâ¡£ ÕâÊÇÒ»¸ö´øÓÅÏȼ¶µÄ±í£¬ °´ÓÅÏȼ¶½µÐòÂÞÁУº

  • µÚÒ»¸ö·ÖÀà±ØÐëÊǸöÎïÀíµÄ·ÖÀà (²ÎÔÄ Ç°Ãæ)¡£ Õâ¶ÔÓÚÖÆ×÷°üÊDZØÒªµÄ¡£ ÐéÄâ·ÖÀàºÍÎïÀí·ÖÀà¿ÉÄÜÔÚ°üÖÆ×÷Íê³Éºó»ìºÏÔÚÒ»Æð¡£

  • ¶ÔÓÚÌØ¶¨ÓïÑԵķÖÀàͨ³£·ÅÔÚµÚһλ¡£ ÀýÈ磬 Èç¹ûÄúµÄ port »á°²×°Ò»Ð© X11 µÄÈÕÎÄ×ÖÌ壬 ÄÇô CATEGORIESÄÇÐÐ ¾ÍÓ¦¸ÃÊÇ japanese x11-fonts¡£

  • ÓÐÌØ¶¨ÒâÒåµÄ·ÖÀàÓ¦µ±±»ÁÐÔÚÎÞÌØ¶¨ÒâÒåµÄÇ°Ãæ¡£ ÀýÈ磬 HTML ±à¼­Æ÷Ó¦¸ÃÊÇÕâÑùµÄ www editors£¬ ¶ø²»ÊÇÆäËüµÄʲô¡£ ͬÑùµØ£¬ Äú²»Ó¦¸ÃÁгö net£¬ Èç¹û port ÊôÓÚ irc¡¢ mail¡¢ news¡¢ security£¬ »òÊÇ www£¬ ÒòΪ net ¿ÉÒÔ±íʾËüÃǵij¬¼¯¡£

  • Ö»Óе±Ö÷ÒªµÄ·ÖÀàÊÇÒ»ÃÅ×ÔÈ»ÓïÑÔµÄʱºò£¬ x11 Äܱ»×öΪµÚ¶þ·ÖÀà¡£ ÐèÒªÌØ±ðÖ¸³öµÄÊÇ£¬ Äú²»Ó¦°Ñ X µÄÓ¦ÓóÌÐòÒ²¹éÀàΪ x11¡£

  • Emacs ģʽӦµ±ÓÚÏàÓ¦µÄÓ¦ÓóÌÐò·ÅÔÚͬһ¸ö·ÖÀàÀ ¶ø²»ÊÇ editors ·ÖÀà¡£ ¾ÙÀýÀ´Ëµ£¬ Ò»¸öÓÃÓڱ༭ijÖÖ±à³ÌÓïÑÔÔ´´úÂëµÄ Emacs ģʽӦ¸Ã±»¹éΪ lang Ò»Àà¡£

  • ÐèÒª°²×°¿É¼ÓÔØÄÚºËÄ£¿éµÄ port Ó¦ÔÚÆä CATEGORIES ÖйéÈëÐéÄâ·ÖÀà kld¡£

  • misc ·ÖÀàµÄ port ²»ÄÜÓÐÆäËü·ÇÐéÄâµÄ·ÖÀà¡£ Èç¹ûÄúÔÚÄúµÄ CATEGORIES ÀïÉèÁË misc ºÍÁíÍâµÄ·ÖÀ࣬ ÄÇÒâζ×Å¿ÉÒÔ°²È«µØÉ¾³ý misc ²¢°Ñ port ·Åµ½ÆäËüµÄ×ÓĿ¼ÖÐÁË£¡

  • Èç¹ûÄúµÄ port ȷʵ²»ÊôÓÚÏÖÓеķÖÀ࣬ ²Å°ÑËü·Åµ½ misc¡£

¡¡¡¡Èç¹ûÄú²»ÄÜÈ·¶¨Ê¹ÓÃÄĸö·ÖÀ࣬ ÇëÔÚÄúÌá½»µÄ send-pr(1) Àï¼ÓÉÏÒ»ÐÐ×¢ÊÍ£¬ ÕâÑùÎÒÃǾÍÄÜÔÚµ¼Èë½ø port Ê÷֮ǰÌÖÂÛһϡ£ Èç¹ûÄúÊÇ committer£¬ ·¢Ò»·Ý±¸Íüµ½ FreeBSD ports ÓʼþÁбí ÏÈÌÖÂÛһϡ£ ºÜ¶àÇé¿öÊÇÐ嵀 port ±»¼Óµ½´íÎóµÄ·ÖÀàÀ È»ºóÓÖÁ¢¼´±»ÒÆ×ß¡£Õâ»áÔì³ÉÔ´´úÂë¿â²»±ØÒªºÍ²»Á¼µÄÅòÕÍ¡£


5.3.4 ÈçºÎÌáÒ齨Á¢ÐµķÖÀà

¡¡¡¡ÓÉÓÚ Ports Collection ÔÚ³ÖÐøÔö³¤£¬ ÒѾ­ÒýÈëÁËÐí¶àеķÖÀà¡£ еķÖÀà¼È¿ÉÒÔÊÇ ÐéÄâµÄ ·ÖÀà ©¤©¤ ÕâЩ·ÖÀàÔÚÕû¸ö ports Ŀ¼ÖÐûÓÐÊôÓÚ×Ô¼ºµÄ×ÓĿ¼ ©¤©¤ »ò ÎïÀíµÄ ·ÖÀà ©¤©¤ ËüÃÇÓÐ×Ô¼ºµÄ×ÓĿ¼¡£ ½ÓÏÂÀ´ÎÒÃǽ«ÌÖÂÛÓ뽨Á¢ÐµÄÎïÀí·ÖÀàÓйصÄÊÂÏ ÒÔ±ã°ïÖúÄúÀí½âÈçºÎÌáÒ齨Á¢ÐµķÖÀà¡£

¡¡¡¡ÎÒÃÇĿǰµÄ×ö·¨ÊDZÜÃ⽨Á¢ÐµÄÎïÀí·ÖÀ࣬ ³ý·ÇÓзdz£¶àµÄ port Ó¦±»¹éÈëÕâÒ»·ÖÀ࣬ »òÕß port ÊôÓÚÄ³Ò»ÌØ¶¨µÄСÍÅÌå (ÀýÈ磬 ÓëijÖÖÈËÀàÓïÑÔÏà¹Ø)£¬ »òÁ½Õß½ÔÊÇ¡£

¡¡¡¡ÕâÑù×öµÄÔ­ÒòÊÇÕâÀàÐ޸ĻáÈà committer ºÍÓû§¶¼²»µÃ²»½øÐÐ Ðí¶à¹¤×÷ À´ÔÚ Ports Collection ½øÐлò×·×ÙÐ޸ġ£ ´ËÍ⣬ ÌáÒéеķÖÀàͨ³£¶¼»áÒýÆðÕùÂÛ¡£ (¿ÉÄÜÕâÊÇÒòΪ¹ØÓÚij¸ö·ÖÀàÊÇ·ñ ¡°Ì«´ó¡± һֱûÓзdz£Ò»ÖµÄÒâ¼ûµÄÔµ¹Ê£¬ ÁíÒ»·½Ã棬 ·ÖÀàÊÇ·ñÄܹ»Äܹ»ÓÐÖúÓÚä¯ÀÀ (ÒÔ¼°¶àÉÙ¸ö·ÖÀàÊǺÏÊʵÄ)£¬ µÈµÈ£¬ Ò²¶¼ÊÇÎÊÌâ¡£)

¡¡¡¡ÏÂÃæÊǾßÌåµÄ²½Ö裺

  1. ÔÚ FreeBSD ports ÓʼþÁбí ÌáÒéеķÖÀà¡£ ÄúÓ¦Ìṩ½¨Á¢Ð·ÖÀàµÄÏêϸÒÀ¾Ý£¬ °üÀ¨ÎªÊ²Ã´ÈÏΪÏÖÓеķÖÀ಻¹»£¬ ÒÔ¼°Ï£ÍûÒÆ¶¯Î»ÖõÄһϵÁÐ port µÄÃû×Ö¡£ (Èç¹ûÓÐÉÐÔÚ GNATS ¶øÎ´ commit µÄ port£¬ Ò²Ó¦Ò»Ò»Áгö¡£) Èç¹ûÄúÊÇÏà¹Ø port µÄ¼à»¤ÈË»òÌá½»Õߣ¬ ˵Ã÷ÕâÒ»Çé¿ö¿ÉÄÜÓÐÖúÓÚÄúµÄÌáÒéµÃµ½Í¨¹ý¡£

  2. ²ÎÓëÌÖÂÛ¡£

  3. Èç¹ûÓÐÈËÖ§³ÖÄúµÄ½¨Ò飬 Ó¦¼°Ê±Ìá½»Ò»¸ö PR£¬ ÆäÖаüÀ¨ÌáÒé PR µÄÀíÓÉ£¬ ÒÔ¼°ÐèÒªÒÆ¶¯µÄ port µÄÁÐ±í¡£ ÀíÏëÇé¿öÏ£¬ Õâ¸ö PR Ò²Ó¦°üº¬Õë¶ÔÏÂÁÐÎļþµÄ²¹¶¡£º

    • ½øÐÐ repocopy Ö®ºó¶Ô Makefile ½øÐеÄÐÞ¸Ä

    • зÖÀàµÄ Makefile

    • ¾É·ÖÀàµÄ Makefile

    • ÒÀÀµÓÚ¾É port µÄ port µÄ Makefile

    • (´ËÍ⣬ ×÷ΪһÏî¼Ó·ÖÒòËØ£¬ Äú»¹¿ÉÒÔ°´ÕÕ Committer Ö¸ÄÏËù½éÉܵÄÁ÷³Ì£¬ ÌṩһЩÆäËüÐèÒªÐ޸ĵÄÎļþ¡£)

  4. ÓÉÓÚÕâÊÇÒ»ÏîÓ°Ïì ports »ù´¡ÉèÊ©µÄ±ä¶¯£¬ Ëü²»½öÉæ¼° repo-copy µÄʹÓ㬠¶øÇÒÒ²¿ÉÄÜ»áÓ°ÏìÁª±à¼¯ÈºµÄ»Ø¹é²âÊÔ²Ù×÷£¬ Òò´ËÕâÀà PR Ó¦·ÖÅɸø Ports ¹ÜÀíÍÅ¶Ó ¡£

  5. Èç¹ûÕâÒ» PR µÃµ½Åú×¼£¬ ij¸ö committer ½«°´ÕÕÔÚ Committer Ö¸ÄÏ ÖÐËù½éÉܵIJ½ÖèÀ´Íê³ÉÓàÏµĹ¤×÷¡£

¡¡¡¡ÌáÒéеÄÐéÄâ·ÖÀàºÍÉÏÊö¹ý³ÌÀàËÆ£¬ µ«»áÈÝÒ×Ðí¶à£¬ ÒòΪ²»ÐèҪʵ¼ÊµØÒƶ¯ÈκΠport¡£ ÕâÖÖÇé¿öÏ£¬ PR Ó¦¸½´øµÄ²¹¶¡£¬ ¾ÍÖ»ÐèÒªÐÞ¸ÄÓ°Ïìµ½µÄ port µÄ Makefile£¬ ÒÔ±ãÔÚÆäÖÐµÄ CATEGORIES ÖмÓÈëеķÖÀàÁË¡£


5.3.5 ÈçºÎÌáÒé¶Ô·ÖÀà½øÐÐÖØÐÂ×éÖ¯

¡¡¡¡ÓÐЩʱºò»áÓÐһЩÈËÌáÒéÖØÐ½«·ÖÀà×é֯Ϊ 2-²ã »òijÖÖ»ùÓڹؼü×ֵĽṹ¡£ ĿǰΪֹ£¬ »¹Ã»ÓнøÐÐÈκÎÏà¹ØµÄ¸Ä±ä£¬ ÒòΪ¾¡¹ÜÕâЩÐ޸ıȽÏÈÝÒ×Íê³É£¬ µ«ÐÞ¸ÄÕû¸ö Ports Collection ËùÐèÒª½øÐеŤ×÷£¬ ÖÁÉÙÒ²ÊÇÁîÈËÉúηµÄ¡£ ÔÚ·¢±íÄúµÄ¹Ûµã֮ǰ£¬ ÇëÔĶÁÔÚÓʼþÁÐ±í´æµµÖÐÀúÊ·ÉÏËù½øÐйýµÄÌáÒ飻 ´ËÍ⣬ ÄúÒ²»á±»ÒªÇóÌṩһ¸ö¿ÉÓõÄÔ­ÐΡ£


5.4 Ô´Âë°üÎļþ

¡¡¡¡ÔÚ Makefile Öеĵڶþ²¿·ÖÊÇÃèÊöÓÃÓÚÁª±à port Ëù±ØÐèÏÂÔØµÄÎļþ£¬ ÒÔ¼°µ½Ê²Ã´µØ·½È¥ÏÂÔØËüÃÇ¡£


5.4.1 DISTVERSION/DISTNAME (Ô´Âë°ü°æ±¾ºÅ/Ãû³Æ)

¡¡¡¡DISTNAME ÊÇ×÷Õ߳ƺôÄúËù port Èí¼þµÄÃû×Ö¡£ DISTNAME µÄĬÈÏÖµÊÇ ${PORTNAME}-${PORTVERSION}£¬ Òò´ËÖ»ÓÐÔÚÐèҪʱ²ÅÓ¦ÊÖ¹¤Ö¸¶¨¡£ DISTNAME Ö»ÔÚÁ½¸öµØ·½Óõ½¡£ µÚÒ»´¦ÊÇÔ´Âë°üÎļþÁбí (DISTFILES)£¬ ÆäĬÈÏÖµÊÇ ${DISTNAME}${EXTRACT_SUFX}¡£ µÚ¶þ´¦ÊÇÔ´Âë°üÓ¦±»Õ¹¿ªµ½µÄĿ¼Ãû£¬ ¼´ WRKSRC ËùÖ¸¶¨µÄĿ¼£¬ ÆäĬÈÏÖµÊÇ work/${DISTNAME}¡£

¡¡¡¡Ä³Ð©Èí¼þ×÷Õß·¢²¼Ô´Âë°üµÄʱºò²¢²»²ÉÈ¡ ${PORTNAME}-${PORTVERSION} ÕâÑùµÄģʽ£¬ Õâ¿ÉÒÔͨ¹ýÉèÖà DISTVERSION À´×Ô¶¯´¦Àí¡£ PORTVERSION ºÍ DISTNAME »á×Ô¶¯µØÕ¹¿ª£¬ µ±È»£¬ Ò²¿ÉÒԸĵôËü¡£ ÏÂ±í¸ø³öÁËһЩÀý×Ó£º

DISTVERSION PORTVERSION
0.7.1d 0.7.1.d
10Alpha3 10.a3
3Beta7-pre2 3.b7.p2
8:f_17 8f.17

×¢Òâ: PKGNAMEPREFIX ºÍ PKGNAMESUFFIX ²¢²»Ó°Ïì DISTNAME¡£ ´ËÍ⻹ӦעÒâ WRKSRC µÈÓÚ work/${PORTNAME}-${PORTVERSION}£¬ ¶øÔ´´úÂëµÄѹËõ°üÔò¿ÉÄÜÊÇ ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX} ÒÔÍâµÄÆäËüÃû×Ö¡£ Ò»°ãÇé¿öÏÂÓ¦¸Ã±£³Ö DISTNAME ²»±ä ©¤©¤ ¸üºÃµÄ·½·¨ÊǶ¨Òå DISTFILES ¶ø²»ÊÇͬʱÉèÖà DISTNAME ºÍ WRKSRC (¿ÉÄÜ»¹ÓÐ EXTRACT_SUFX)¡£


5.4.2 MASTER_SITES (Ö÷Á÷ÏÂÔØÕ¾µã)

¡¡¡¡¼Ç¼ FTP/HTTP-URL Ö¸Ïò MASTER_SITES ÖÐԭʼѹËõµµµÄĿ¼²¿·Ö¡£ ²»ÒªÍüÁ˽áβµÄбÏß (/)£¡

¡¡¡¡make ºê½«³¢ÊÔʹÓà FETCH À´×¥È¡ËùÖ¸¶¨µÄÔ´Âë°üÎļþ£¬ Èç¹ûÎÞ·¨ÔÚ±¾µØÏµÍ³ÖÐÕÒµ½ÕâЩÎļþµÄ»°¡£

¡¡¡¡½¨ÒéÄúÖ¸¶¨¶à¸ö¾µÏñÕ¾µã£¬ ×îºÃÊÇÔÚ²»Í¬µÄ´óÖÞÉϵġ£ ÕâÑù½«ÓÐЧµØ·ÀÖ¹ÓÉÓÚ´ó·¶Î§ÍøÂçÎÊÌâËùµ¼ÖÂÎÞ·¨ÏÂÔØµÄÎÊÌâ¡£ ÎÒÃÇÉõÖÁ´òËãÔö¼Ó×Ô¶¯¼ì²â¾àÀë×î½üµÄÕ¾µã²¢´ÓÄÇÀïÏÂÔØµÄ¹¦ÄÜ£» ʹÓöà¸öÕ¾µãÊÇÕâÑù×öµÄÖØÒªÒ»²½¡£

¡¡¡¡Èç¹ûԭʼµÄÔ´Âë°ü¿ÉÒԴӱȽÏÁ÷ÐеÄÈí¼þÏÂÔØÕ¾µã£¬ ÀýÈç SourceForge¡¢ GNU »òÊÇ Perl CPAN µÈµÈÀ´»ñµÃ£¬ Äú¿ÉÄÜ»áÏ£ÍûʹÓÃÀàËÆ MASTER_SITE_* ÕâÑùµÄËõдÀ´±íʾËüÃÇ (ÀýÈç MASTER_SITE_SOURCEFORGE¡¢ MASTER_SITE_GNU ÒÔ¼° MASTER_SITE_PERL_CPAN)¡£ Ö»Ð轫 MASTER_SITES ÉèΪÕâЩ±äÁ¿£¬ ²¢Ê¹Óà MASTER_SITE_SUBDIR À´Ö¸¶¨Â·¾¶¾Í¿ÉÒÔÁË¡£ ÏÂÃæÊÇÒ»¸öÀý×Ó£º

MASTER_SITES=         ${MASTER_SITE_GNU}
MASTER_SITE_SUBDIR=   make

¡¡¡¡´ËÍ⣬ Äú»¹¿ÉÒÔÓøüΪ¼òÂԵĸñʽ£º

MASTER_SITES=	GNU/make

¡¡¡¡ÕâЩ±äÁ¿ÊÇÔÚ /usr/ports/Mk/bsd.sites.mk Öж¨ÒåµÄ¡£ ÐÂÏîÄ¿»áËæÊ±Ôö¼Ó£¬ Òò´ËÔÚÄúÌá½» port ֮ǰ£¬ Ó¦ÏÈ¿´Ò»¿´Õâ¸öÎļþµÄ×îа汾¡£

¡¡¡¡Õë¶Ô³£ÓÃÈí¼þÏÂÔØÕ¾µÄÐí¶à °µºÚħ·¨ ºê£¬ »¹Äܹ»×Ô¶¯ÅжÏĿ¼µÄ½á¹¹¡£ ¶ÔÓÚÕâЩվµã£¬ ֻҪʹÓÃÓëÖ®¶ÔÓ¦µÄËõд£¬ ϵͳ±ã»á×Ô¶¯ÎªÄúÉú³ÉÏà¹ØµÄ×ÓĿ¼ÅäÖá£

MASTER_SITES=	SF

¡¡¡¡Èç¹ûϵͳ²Â²âµÄ·¾¶²»¶Ô£¬ Ôò¿ÉÒÔʹÓÃÏÂÃæÕâÑùµÄÅäÖÃÀ´Ìæ»»¡£

MASTER_SITES=	SF/stardict/WyabdcRealPeopleTTS/${PORTVERSION}

±í 5-1. ³£ÓõÄħÊõ MASTER_SITES ºê

ºê ×Ô¶¯²Â²âµÄ×ÓĿ¼
APACHE_JAKARTA /dist/jakarta/${PORTNAME:S,-,,/,}/source
BERLIOS /${PORTNAME:L}
CHEESESHOP /packages/source/source/${DISTNAME:C/(.).*/\1/}/${DISTNAME:C/(.*)-[0-9].*/\1/}
DEBIAN /debian/pool/main/${PORTNAME:C/^((lib)?.).*$/\1/}/${PORTNAME}
GCC /pub/gcc/releases/${DISTNAME}
GNOME /pub/GNOME/sources/${PORTNAME}/${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/}
GNU /gnu/${PORTNAME}
MOZDEV /pub/mozdev/${PORTNAME:L}
PERL_CPAN /pub/CPAN/modules/by-module/${PORTNAME:C/-.*//}
PYTHON /ftp/python/${PYTHON_PORTVERSION:C/rc[0-9]//}
RUBYFORGE /${PORTNAME:L}
SAVANNAH /${PORTNAME:L}
SF /project/${PORTNAME:L}/${PORTNAME:L}/${PORTVERSION}

5.4.3 EXTRACT_SUFX (ѹËõ°üËùÓõÄÀ©Õ¹Ãû)

¡¡¡¡Èç¹ûÄúÓÐÒ»¸öÔ´Âë°üÎļþ£¬ ¶øËüʹÓÃÁËijÖÖ¹ÖÒìµÄÀ©Õ¹ÃûÀ´±í´ïѹËõ·½·¨£¬ Ó¦ÉèÖà EXTRACT_SUFX¡£

¡¡¡¡ÀýÈ磬 Èç¹ûÔ´Âë°üÎļþµÄÃû×ÖÊÇ foo.tgz ¶ø·Ç¸üΪһ°ãµÄ foo.tar.gz£¬ ÄúӦдÉÏ£º

DISTNAME=      foo
EXTRACT_SUFX=  .tgz

¡¡¡¡USE_BZIP2 ºÍ USE_ZIP ±äÁ¿»á×Ô¶¯¸ù¾ÝÐèÒª½« EXTRACT_SUFX ÉèÖÃΪ .tar.bz2 »ò .zip¡£ Èç¹ûÕâÁ½¸ö¶¼Ã»ÉèÖ㬠Ôò EXTRACT_SUFX µÄ ĬÈÏÖµ½«ÊÇ .tar.gz¡£

×¢Òâ: ÈκÎʱºò¶¼²»ÐèҪͬʱÉèÖà EXTRACT_SUFX ºÍ DISTFILES.


5.4.4 DISTFILES (È«²¿Ô´´úÂë°ü)

¡¡¡¡ÓÐЩʱºòËùÏÂÔØµÄÎļþÃû×ÖºÍ port µÄÃû×ÖûÓÐÈκÎÁªÏµ¡£ ÀýÈ磬 ¿ÉÄÜÊÇ source.tar.gz£¬ »òÕßÓë´ËÀàËÆµÄÆäËüÃû×Ö¡£ Ò²ÓÐһЩÆäËüµÄÓ¦ÓÃÈí¼þ£¬ ËüÃǵÄÔ´´úÂë¿ÉÄܱ»´æ·Åµ½Á˲»Í¬µÄѹËõ°üÖУ¬ ¶øÇÒÈ«¶¼ÐèÒªÏÂÔØ¡£

¡¡¡¡Èç¹ûÓöµ½ÕâÖÖÇé¿ö£¬ ¿ÉÒÔ½« DISTFILES ÉèÖÃΪÒÔ¿Õ¸ñ·Ö¸ôµÄÒ»×éÐèÒªÏÂÔØµÄÎļþÁÐ±í¡£

DISTFILES=     source1.tar.gz source2.tar.gz

¡¡¡¡Èç¹ûûÓÐÓèÒÔÃ÷È·µÄÉèÖ㬠DISTFILES µÄĬÈÏÖµ½«ÊÇ ${DISTNAME}${EXTRACT_SUFX}¡£


5.4.5 EXTRACT_ONLY (Ö»½âѹËõ²¿·ÖÔ´Îļþ)

¡¡¡¡Èç¹ûÖ»ÓÐÒ»²¿·Ö DISTFILES ÐèÒª½âѹËõ ©¤©¤ ÀýÈ磬 ÆäÖеÄÒ»¸öÊÇÔ´´úÂ룬 ¶øÆäËüÔòÊÇδѹËõµÄÎĵµ ©¤©¤ ´ËʱӦ°ÑÄÇЩÐèÒª½âѹËõµÄÎļþ¼Óµ½ EXTRACT_ONLY ÖС£

DISTFILES=     source.tar.gz manual.html
EXTRACT_ONLY=  source.tar.gz

¡¡¡¡Èç¹û DISTFILES ÖРûÓÐ ÐèÒª½âѹËõµÄÎļþ£¬ ÔòÓ¦½« EXTRACT_ONLY ÉèΪ¿Õ´®¡£

EXTRACT_ONLY=

5.4.6 PATCHFILES (ͨ¹ýÏÂÔØµÃµ½µÄ²¹¶¡Îļþ)

¡¡¡¡Èç¹ûÄúµÄ port ÐèÒªÀ´×Ô FTP »ò HTTP µÄһЩ¶îÍâµÄ²¹¶¡£¬ Ó¦½« PATCHFILES ÉèÖÃΪÕâЩÎļþµÄÃû×Ö£¬ ²¢½« PATCH_SITES Ö¸Ïò°üº¬ÕâЩÎļþµÄĿ¼µÄ URL (¸ñʽÓë MASTER_SITES Ïàͬ)¡£

¡¡¡¡Èç¹ûÕâЩ²¹¶¡£¬ ÓÉÓÚ°üº¬ÁËÆäËüµÄĿ¼Ãû£¬ ¶øµ¼ÖÂËüÃDz»ÊÇÏà¶ÔÓÚÔ´´úÂëĿ¼µÄ¶¥¼¶Ä¿Â¼ (Ò²¾ÍÊÇ WRKSRC) µÄ»°£¬ ¾ÍÐèÒªÏàÓ¦µØÉèÖà PATCH_DIST_STRIP ÁË¡£ ÀýÈ磬 Èç¹û²¹¶¡ÖÐËùÓеÄĿ¼ÃûÇ°Ãæ¶¼ÓÐÒ»¸ö¶àÓàµÄ foozolix-1.0/£¬ ¾ÍÓ¦ÉèÖà PATCH_DIST_STRIP=-p1¡£

¡¡¡¡²»ÐèÒªµ£ÐIJ¹¶¡Îļþ±¾ÉíÊÇ·ñÊÇѹËõµÄ£» Èç¹ûÎļþÃûÒÔ .gz or .Z ½á⣬ ϵͳ»á×Ô¶¯½âѹËõ¡£

¡¡¡¡Èç¹û²¹¶¡ÊÇͬijЩÆäËüÎļþ£¬ ÀýÈçÎĵµ£¬ һͬÒÔ gzip ѹËõµÄ tar ¸ñʽ·¢²¼µÄ£¬ ¾Í²»Äܼòµ¥µØÊ¹Óà PATCHFILES ÁË¡£ ÕâÖÖÇé¿öÏ£¬ ÄúÓ¦½«ÕâЩ²¹¶¡°üµÄÎļþºÍλÖüÓÈëµ½ DISTFILES ºÍ MASTER_SITES ÖС£ È»ºó£¬ Óà EXTRA_PATCHES ±äÁ¿À´Ö¸³öÕâЩÎļþ£¬ ÕâÑù bsd.port.mk ¾Í»á×Ô¶¯µØÎªÄúÓ¦ÓÃÕâЩ²¹¶¡ÁË¡£ ÐèÒªÌØ±ð×¢ÒâµÄÊÇ£¬ ²»Òª ½«²¹¶¡Îļþ¸´ÖƵ½ PATCHDIR Ŀ¼ÖÐ ©¤©¤ Õâ¸öĿ¼¿ÉÄÜÊDz»¿ÉдµÄ¡£

×¢Òâ: ѹËõ°ü»áÒÔͬԴ´úÂëÒ»ÑùµÄ·½Ê½½âѹËõ£¬ Òò´Ë²»ÐèÒª×ÔÐÐÍê³É½âѹËõ²Ù×÷£¬ ²¢¸´ÖƲ¹¶¡Îļþ¡£ Èç¹ûÄúÒ»¶¨ÒªÕâÑù×ö£¬ ¾ÍҪעÒ⣬ ²»ÒªÈýâѹËõ³öÀ´µÄÎļþ¸²¸ÇÏÈǰÒѾ­´æÔÚµÄÎļþ¡£ ´ËÍ⣬ Õâô×ö»¹ÐèÒªÊÖ¹¤Ôö¼ÓÃüÁ ÒÔ±ãÔÚ pre-clean target ÖÐɾ³ýÕâЩ¸´ÖƳöÀ´µÄÎļþ¡£


5.4.7 À´×Ô²»Í¬Õ¾µãµÄ¶à¸öÔ´´úÂë°ü»ò²¹¶¡Îļþ (MASTER_SITES:n)

¡¡¡¡(ÕâÒ»½ÚÔÚijÖ̶ֳÈÉÏÓ¦±»ÊÓ×÷ ¡°½ø½×»°Ì⡱£» ¸Õ¿ªÊ¼ÔĶÁÕâ·ÝÎĵµµÄ¶ÁÕß¿ÉÄÜ»áÏ£ÍûÏÈÌø¹ýÕâÒ»²¿·Ö)¡£

¡¡¡¡ÕâÒ»½ÚÌṩÁ˱»³Æ×÷ MASTER_SITES:n ºÍ MASTER_SITES_NN µÄÏÂÔØ¿ØÖÆ»úÖÆ¡£ ÕâÀïÎÒÃǰÑËüÃdzÆÎª MASTER_SITES:n¡£

¡¡¡¡Ê×Ïȸø³öһЩ±³¾°¡£ OpenBSD ÔÚÆä DISTFILES ºÍ PATCHFILES ±äÁ¿ÖÐÌṩÁËÒ»¸öºÜ°ôµÄ¹¦ÄÜ£¬ ¼´£¬ ÔÊÐíÕâЩÎļþºÍ²¹¶¡ÓµÓÐ :n ºó׺£¬ ÆäÖÐ n ¿ÉÒÔʹÓà [0-9]£¬ À´±í´ï×é¡£ ÀýÈ磺

DISTFILES=      alpha:0 beta:1

¡¡¡¡ÔÚ OpenBSD ÖУ¬ Ô´Âë°üÎļþ alpha Ó¦±»¹ØÁªµ½±äÁ¿ MASTER_SITES0 ¶ø²»Êǹ«¹²µÄ MASTER_SITES ±äÁ¿ÉÏ£» ¶ø beta ÔòÓ¦¹ØÁªµ½ MASTER_SITES1 ÉÏ¡£

¡¡¡¡ÕâÊÇÒ»¸öºÜÓÐÒâ˼µÄ¹¦ÄÜ£¬ Ëü¿ÉÒÔ±ÜÃâÎÞÐÝÖ¹µØËÑË÷ÕýÈ·µÄÏÂÔØÕ¾µãµÄ¹ý³Ì¡£

¡¡¡¡ÏëÏó DISTFILES ÖÐÖ¸¶¨ÁË 2 ¸öÎļþ£¬ ¶ø MASTER_SITES °üº¬ÁË 20 ¸öÕ¾µãµÄÇéÐΣ¬ ÕâÆäÖÐÐí¶àÕ¾µãÂýÈçÎÏÅ££¬ ¶ø beta ¿ÉÒÔÔÚ MASTER_SITES µÄËùÓÐÕ¾µãÕÒµ½£¬ ¶ø alpha Ö»ÄÜÔÚµÚ 20 ¸öÉÏÃæÕÒµ½¡£ Èç¹û¼à»¤ÈËÁ˽âÕâÒ»µã£¬ ÄÇô¼ì²éËùÓеÄÕ¾µãÎÞÒÉÊÇÔÚÀË·Ñʱ¼ä£¬ ²»ÊÇÂ𣿠ÕâÏÔÈ»²»ÊÇ¿ªÊ¼Ò»¸öÓä¿ìÖÜÄ©µÄºÃ°ì·¨£¡

¡¡¡¡ÏÖÔÚÄúÓÐÁËÒ»¸ö¸ÐÐÔµÄÈÏʶÁË£¬ ÏëÏóһϠDISTFILES ºÍ¸ü¶àµÄ MASTER_SITES¡£ ÏÔÈ»£¬ ÎÒÃÇµÄ ¡°distfiles µ÷²éÔ±ÏÈÉú¡± »á¸ÐлÄú¼õÉÙËûÀË·ÑÔڵȴýÏÂÔØÉÏËùºÄ·ÑµÄʱ¼ä¡£

¡¡¡¡ÏÂÒ»½ÚÖУ¬ ½«°´ÕÕ FreeBSD ¶ÔÉÏÊöÏë·¨µÄʵÏÖÀ´¼ÓÒÔ²ûÊÍ¡£ ÎÒÃÇ¶Ô OpenBSD ËùÌá³öµÄ¸ÅÄî½øÐÐÁËһЩ¸Ä½ø¡£


5.4.7.1 ¼ò»¯ÐÅÏ¢

¡¡¡¡ÕâÒ»½Ú½«½éÉÜÈçºÎѸËٵضԴӲ»Í¬µÄÕ¾µãÒÔ¼°×ÓĿ¼ÏÂÔØ¶à¸öÔ´Âë°üºÍ²¹¶¡½øÐо«È·µÄ¿ØÖÆ¡£ ÕâÀ ÎÒÃǽ«ÃèÊö MASTER_SITES:n µÄÒ»ÖÖ¼ò»¯Ó÷¨¡£ ¶ÔÓÚ¶àÊýÇé¿ö¶øÑÔÕâÑù×öÊÇ×ã¹»µÄ¡£ È»¶ø£¬ Èç¹ûÄúÐèÒª¸ü¶àÐÅÏ¢£¬ »¹ÐèÒª²Î¿¼ÏÂÃæµÄ¼¸½Ú¡£

¡¡¡¡Ò»Ð©Ó¦ÓóÌÐòÐèÒª´Ó¶à¸öÕ¾µãÏÂÔØ²»Í¬µÄÔ´Âë°ü¡£ ÀýÈ磬 Ghostscript °üÀ¨Á˳ÌÐòºËÐı¾Éí£¬ ÒÔ¼°´óÁ¿µÄÇý¶¯Îļþ£¬ ÒÔ¼°ÔòÈ¡¾öÓÚÓû§µÄ´òÓ¡»úÆ·ÅÆºÍÐͺŵÄÇý¶¯³ÌÐò¡£ ijЩÇý¶¯ÎļþÒѾ­Ëæ³ÌÐòºËÐĸ½´ø£¬ µ«Ò²ÓкܶàÐèÒª´ÓÆäËüÕ¾µãÏÂÔØ¡£

¡¡¡¡ÎªÁËÊÊÓ¦ÕâÖÖÐèÒª£¬ ÿһ¸ö DISTFILES ÏîÓ¦¸úËæÒ»¸öðºÅ£¬ ÒÔ¼°Ò»¸ö ¡°±êÇ©Ãû¡±¡£ ÔÚ MASTER_SITES µÄÿ¸öÕ¾µãÒ²Ó¦¸úËæÃ°ºÅºÍ±êÇ©Ãû£¬ ÒÔ±ãÖ¸¶¨´ÓÄĸöÍøÕ¾ÏÂÔØÔ´Âë°üÎļþ¡£

¡¡¡¡ÀýÈ磬 ¿¼ÂÇÒ»¸ö½«Ô´´úÂë°ü·ÖΪÁ½²¿·Ö£¬ ¼´ source1.tar.gz ºÍ source2.tar.gz µÄÈí¼þ£¬ Ëü±ØÐë´ÓÁ½¸ö²»Í¬µÄÕ¾µãÏÂÔØ¡£ port µÄ Makefile Ó¦°üÀ¨ÀàËÆ Àý 5-1 µÄÅäÖá£

Àý 5-1. ¼ò»¯µÄ MASTER_SITES:n Ó÷¨£¬ ÿ¸öÎļþÀ´×ÔÒ»¸öÕ¾µã

MASTER_SITES=   ftp://ftp.example1.com/:source1 \
		ftp://ftp.example2.com/:source2
DISTFILES=      source1.tar.gz:source1 \
		source2.tar.gz:source2

¡¡¡¡¶à¸öÔ´Âë°ü¿ÉÒÔʹÓÃͬһ¸ö±êÇ©¡£ ¼ÌÐøÇ°ÃæµÄÀý×Ó£¬ ¼Ù¶¨Ôö¼ÓÁ˵ÚÈý¸öÔ´Âë°ü£¬ source3.tar.gz£¬ Ó¦´Ó ftp.example2.com ÏÂÔØ¡£ Makefile µÄÕⲿ·ÖӦд³É Àý 5-2 µÄÑù×Ó¡£

Àý 5-2. ¼ò»¯µÄ MASTER_SITES:n Ó÷¨£¬ ÆäÖÐͬһ¸öÕ¾µãÉÏÌṩÁ˲»Ö¹Ò»¸öÎļþ

MASTER_SITES=   ftp://ftp.example1.com/:source1 \
		ftp://ftp.example2.com/:source2
DISTFILES=      source1.tar.gz:source1 \
		source2.tar.gz:source2 \
		source3.tar.gz:source2

5.4.7.2 ÉîÈë½éÉÜ

¡¡¡¡Ç°ÃæµÄÀý×ÓÎÞ·¨Âú×ãÄúµÄÐèÇó£¿ ÕâÒ»½Ú£¬ ÎÒÃǽ«Ïêϸ½éÉÜ MASTER_SITES:n µÄ¾«Ï¸¿ØÖÆÊÇÈçºÎ¹¤×÷µÄ£¬ ÒÔ¼°ÈçºÎÐÞ¸ÄÄúµÄ port À´Ê¹ÓÃËüÃÇ¡£

  1. ÔªËØ¿ÉÒÔ°üº¬ :n ÕâÑùµÄºó׺£¬ ÆäÖÐ n ÊÇ [^:,]+£¬ ¸ÅÄîÉϼ´ n ¿ÉÒÔÈ¡ÈÎÒâÊý×Ö»ò×Öĸ£¬ µ«ÎÒÃÇĿǰ½«ÆäÏÞ¶¨Îª [a-zA-Z_][0-9a-zA-Z_]+¡£

    ´ËÍ⣬ ×Ö·û´®Æ¥Åäʱ¶Ô´óСдÊÇÃô¸ÐµÄ£» »»ÑÔÖ®£¬ n Óë N ²»Í¬¡£

    µ«ÊÇ£¬ ÓÉÓÚ±í´ïÌØÊâµÄÒâÒ壬 ÏÂÁе¥´Ê²»ÄÜÓÃÓÚºó׺£º default¡¢ all ºÍ ALL (ËüÃÇ»áÔÚ ii ÖнéÉܵIJ¿·ÖÓõ½)¡£ ´ËÍ⣬ DEFAULT ÊÇÒ»¸öÓÐÌØÊâÓÃ;µÄ´Ê (Çë²Î¼û 3)¡£

  2. ºó׺Ϊ :n µÄÏîÄ¿ÊôÓÚ n ×飬 ¶ø :m ÊôÓÚ m ×飬 ÒÀ´ËÀàÍÆ¡£

  3. ûÓкó׺µÄÔªËØÊÇÎÞ×éµÄ£¬ Ò²¾ÍÊÇËüÃǶ¼ÊôÓÚÄǸöÌØÊâµÄ DEFAULT ×é¡£ ¸øÔªËؼÓÈë DEFAULT ºó׺ͨ³£ÊǶàÓàµÄ£¬ ³ý·ÇÄúÓÐͬʱÊôÓÚ DEFAULT ºÍÆäËü×éµÄÔªËØ (²Î¼û 5)¡£

    ÏÂÃæµÄÀý×ÓÊǵȼ۵ģ¬ µ«Í¨³£Ó¦ÊÊÓõÚÒ»¸ö£º

    MASTER_SITES=   alpha
    
    MASTER_SITES=   alpha:DEFAULT
    
  4. ×éÖ®¼ä²»ÊÇ»¥³âµÄ£¬ Í¬Ò»ÔªËØ¿ÉÒÔͬʱÁ¥ÊôÓÚ¶à¸ö×飬 ¶ø×éÔò¿ÉÒÔΪ¿Õ»òÕßÓÐÈÎÒâ¶à¸öÔªËØ¡£ ͬһ×éÖеÄÖØ¸´ÔªËØ£¬ ²¢²»»á±»×Ô¶¯ÏûÈ¥¡£

  5. Èç¹ûÏ£ÍûÍ¬Ò»ÔªËØÍ¬Ê±ÊôÓÚ¶à¸ö×飬 ¿ÉÒÔÓöººÅ (,) ·Ö¿ª¡£

    ÕâÖÖ°ì·¨¿ÉÒÔ±ÜÃâ½öΪָ¶¨²»Í¬µÄ×é¶ø¶à´ÎÖØ¸´Í¬Ò»ÔªËØ¡£ ÀýÈç :m,n,o ±íʾÕâ¸öÔªËØÍ¬Ê±ÊôÓÚ m¡¢ n ºÍ o ÕâÈý×é¡£

    ÏÂÃæÕâЩд·¨¶¼Êǵȼ۵ģ¬ µ«Ö»ÍƼöʹÓÃ×îºóÒ»ÖÖ£º

    MASTER_SITES=   alpha alpha:SOME_SITE
    
    MASTER_SITES=   alpha:DEFAULT alpha:SOME_SITE
    
    MASTER_SITES=   alpha:SOME_SITE,DEFAULT
    
    MASTER_SITES=   alpha:DEFAULT,SOME_SITE
    
  6. ͬһ×éÖеÄËùÓÐÕ¾µã£¬ »á¸ù¾Ý MASTER_SORT_AWK ÅÅÐò¡£ ÔÚ MASTER_SITES ºÍ PATCH_SITES ÖеÄ×éÒ²»á½øÐÐÅÅÐò¡£

  7. ÔÚ MASTER_SITES¡¢ PATCH_SITES¡¢ MASTER_SITE_SUBDIR¡¢ PATCH_SITE_SUBDIR¡¢ DISTFILES£¬ ÒÔ¼° PATCHFILES ÖУ¬ ¶¼¿ÉÒÔʹÓÃ×飬 ÆäÓ﷨Ϊ£º

    1. ËùÓÐ MASTER_SITES¡¢ PATCH_SITES¡¢ MASTER_SITE_SUBDIR ÒÔ¼° PATCH_SITE_SUBDIR µÄÔªËØ£¬ ¶¼±ØÐëÒÔ / ×Ö·û½áβ¡£ Èç¹ûÓÐÔªËØÊôÓÚijЩ×飬 Ôò×éºó׺ :n ±ØÐë³öÏÖÔÚÖÕ½á·û / Ö®ºó¡£ MASTER_SITES:n »úÖÆÒÀÀµÓÚ / µÄ´æÔÚ£¬ ÒÔ±ÜÃâÔÚ :n ÊÇÔªËØÒ»²¿·Ö£¬ ¶ø :n ͬʱÓÖ±íʾ×é n ʱ·¢Éú»ìÏý¡£ ΪÁ˼æÈÝÐԵĿ¼ÂÇ£¬ ÒòΪ֮ǰ / ÖÕ½á·ûÔÚ MASTER_SITE_SUBDIR ºÍ PATCH_SITE_SUBDIR ÔªËØÖж¼²»ÊDZØÐèµÄ£¬ Èç¹ûºó׺Ëù½ô¸úµÄ×Ö·û²»ÊÇ /£¬ Ôò :n ½«±»ÈÏΪÊÇÔªËØµÄÒ»²¿·Ö£¬ ¶ø²»±»µ±×÷×éºó׺£¬ ¼´Ê¹ÔªËØÓµÓÐ :n ºó׺¡£ Çë²Î¼û Àý 5-3 ºÍ Àý 5-4 ÒÔÁË½â½øÒ»²½µÄϸ½Ú¡£

      Àý 5-3. ÔÚ MASTER_SITE_SUBDIR ÖÐ MASTER_SITES:n µÄÏêϸÓ÷¨

      MASTER_SITE_SUBDIR=     old:n new/:NEW
      
      • ×é DEFAULT ÖеÄĿ¼ -> old:n

      • ×é NEW ÖеÄĿ¼ -> new

      Àý 5-4. Óõ½¶ººÅ·Ö¸ô·û¡¢ ¶à¸öÎļþ£¬ ¶à¸öÕ¾µãºÍ ²»Í¬×ÓĿ¼µÄ MASTER_SITES:n ÏêϸÓ÷¨

      MASTER_SITES=   http://site1/%SUBDIR%/ http://site2/:DEFAULT \
      		http://site3/:group3 http://site4/:group4 \
      		http://site5/:group5 http://site6/:group6 \
      		http://site7/:DEFAULT,group6 \
      		http://site8/%SUBDIR%/:group6,group7 \
      		http://site9/:group8
      DISTFILES=      file1 file2:DEFAULT file3:group3 \
      		file4:group4,group5,group6 file5:grouping \
      		file6:group7
      MASTER_SITE_SUBDIR=     directory-trial:1 directory-n/:groupn \
      			directory-one/:group6,DEFAULT \
      			directory
      

      ǰÊöµÄÀý×ӵĽá¹ûÊÇÏÂÊöµÄ¶ÔÓÚÏÂÔØÐÐΪµÄ¾«Ï¸¿ØÖÆ¡£ Õ¾µãµÄÁÐ±í°´ÕÕʹÓõÄ˳Ðò¸ø³ö¡£

      • file1 ½«´Ó

        • MASTER_SITE_OVERRIDE

        • http://site1/directory-trial:1/

        • http://site1/directory-one/

        • http://site1/directory/

        • http://site2/

        • http://site7/

        • MASTER_SITE_BACKUP

        ÏÂÔØ¡£

      • file2 ½«ºÍ file1 ÒÔͬÑùµÄ·½Ê½ÏÂÔØ£¬ ÒòΪËüÃÇÊôÓÚͬһ×é

        • MASTER_SITE_OVERRIDE

        • http://site1/directory-trial:1/

        • http://site1/directory-one/

        • http://site1/directory/

        • http://site2/

        • http://site7/

        • MASTER_SITE_BACKUP

      • file3 ½«´Ó

        • MASTER_SITE_OVERRIDE

        • http://site3/

        • MASTER_SITE_BACKUP

        ÏÂÔØ¡£

      • file4 ½«´Ó

        • MASTER_SITE_OVERRIDE

        • http://site4/

        • http://site5/

        • http://site6/

        • http://site7/

        • http://site8/directory-one/

        • MASTER_SITE_BACKUP

        ÏÂÔØ¡£

      • file5 ½«´Ó

        • MASTER_SITE_OVERRIDE

        • MASTER_SITE_BACKUP

        ÏÂÔØ¡£

      • file6 ½«´Ó

        • MASTER_SITE_OVERRIDE

        • http://site8/

        • MASTER_SITE_BACKUP

        ÏÂÔØ¡£

  8. ÈçºÎ¶ÔÀ´×Ô bsd.sites.mk µÄÌØÊâ±äÁ¿£¬ ÀýÈç MASTER_SITE_SOURCEFORGE ½øÐзÖ×飿

    ²Î¼û Àý 5-5¡£

    Àý 5-5. MASTER_SITE_SOURCEFORGE ÖÐ MASTER_SITES:n µÄÏêϸÓ÷¨

    MASTER_SITES=   http://site1/ ${MASTER_SITE_SOURCEFORGE:S/$/:sourceforge,TEST/}
    DISTFILES=      something.tar.gz:sourceforge
    

    something.tar.gz ½«´ÓËùÓÐ MASTER_SITE_SOURCEFORGE ÖеÄÕ¾µãÏÂÔØ¡£

  9. ÈçºÎÓë PATCH* ±äÁ¿Á¬Óã¿

    Ç°ÃæµÄÀý×Ó½éÉܵͼÊÇ MASTER* ±äÁ¿£¬ µ«¶ÔÓÚ PATCH* Ò²ÊÇÍêȫһÑùµÄ£¬ ËüÃÇÔÚ Àý 5-6 ÓÐËù½éÉÜ¡£

    Àý 5-6. ¼ò»¯µÄ PATCH_SITES ÖÐµÄ MASTER_SITES:n Ó÷¨¡£

    PATCH_SITES=    http://site1/ http://site2/:test
    PATCHFILES=     patch1:test
    

5.4.7.3 »á¸Ä±ä ports µÄÄÄЩÐÐΪ£¿ ÄÄЩ²»»á£¿

  1. ËùÓÐÆÕͨµÄ ports µÄÐÐΪ¶¼»á±£³Ö²»±ä¡£ MASTER_SITES:n ¹¦ÄܵĴúÂ룬 Ö»ÓÐÔÚÄ³Ð©ÔªËØ°üº¬ÁËǰÊö£¬ ÌØ±ðÊÇ 7 ÖÐËùÌá¼°Óï·¨µÄ :n ºó׺ʱ£¬ ²Å»áÆôÓá£

  2. ²»ÊÜÓ°ÏìµÄ port target£º checksum¡¢ makesum¡¢ patch¡¢ configure¡¢ build£¬ µÈµÈ¡£ ÏÔÈ»£¬ do-fetch¡¢ fetch-list¡¢ master-sites ºÍ patch-sites µÄÐÐΪ»á·¢Éú±ä»¯¡£

    • do-fetch£º »á°´ÕÕеġ¢ ´øÓÐ×éºó׺µÄ DISTFILES ºÍ PATCHFILES ÔÚ MASTER_SITES ºÍ PATCH_SITES ËùÆ¥ÅäµÄ×éÔªËØ£¬ ÒÔ¼° MASTER_SITE_SUBDIR ºÍ PATCH_SITE_SUBDIR À´½øÐС£ Çë²Î¼û Àý 5-4¡£

    • fetch-list£º ºÍ¾ÉʽµÄ fetch-list ÀàËÆ£¬ µ«ÒÔͬ do-fetch ÏàËÆµÄ·½Ê½´¦Àí×é¡£

    • master-sites ºÍ patch-sites£º (Óë¾É°æ±¾²»¼æÈÝ) ½ö·µ»Ø×é DEFAULT µÄÔªËØ£» ÊÂʵÉÏ£¬ ËüÃÇ»áÖ´ÐÐ master-sites-default ºÍ patch-sites-default ÕâÁ½¸ö target¡£

      ¸ü½øÒ»²½£¬ ʹÓà master-sites-all »ò patch-sites-all ÕâÁ½¸ö target Ö®Ò»£¬ Òª±ÈÖ±½Ó¼ì²é MASTER_SITES »ò PATCH_SITES ¸üºÃ¡£ ´ËÍ⣬ δÀ´°æ±¾¿ÉÄܲ»ÔÙ±£Ö¤Ö±½Ó¼ì²éÄܹ»ÕýÈ·¹¤×÷¡£ Çë²Î¼û iii.ii ÒÔÁË½â¹ØÓÚÕâЩРtarget µÄ¸ü¶à¼¼Êõϸ½Ú¡£

  3. port ÖеÄРtarget

    1. һϵÁÐ master-sites-n ºÍ patch-sites-n target ¿ÉÒÔ·Ö±ðÓÃÀ´Áгö MASTER_SITES ºÍ PATCH_SITES ÖÐµÄ n ×éµÄÄÚÈÝ¡£ ÀýÈ磬 master-sites-DEFAULT ºÍ patch-sites-DEFAULT ¶¼»á·µ»Ø DEFAULT ×éµÄÄÚÈÝ£¬ ¶ø master-sites-test ºÍ patch-sites-test Ôò·µ»Ø test ×éµÄÄÚÈÝ£¬ µÈµÈ¡£

    2. ÐÂÔöµÄ master-sites-all ºÍ patch-sites-all ÕâÁ½¸ö target£¬ »áÍê³ÉÏÈǰ master-sites ºÍ patch-sites Ëù×öµÄ¹¤×÷¡£ ËüÃǻ᷵»ØËùÓÐ×éµÄÔªËØ£¬ ¾ÍÏñÕâÐ©ÔªËØ¶¼ÊôÓÚͬһ×éÒ»Ñù£¬ ²¢ÇÒ»áÁгöÓë MASTER_SITE_BACKUP »ò MASTER_SITE_OVERRIDE ÖÐÔÚ DISTFILES »ò PATCHFILES ÖÐÖ¸¶¨µÄͬÑù¶à¸ö£» ·Ö±ð¶ÔÓÚ master-sites-all ºÍ patch-sites-all¡£


5.4.8 DIST_SUBDIR (¶ÀÁ¢µÄÔ´Âë°ü×ÓĿ¼)

¡¡¡¡±ÜÃâÈÃÄúµÄ port ʹ /usr/ports/distfiles ÏÝÈë»ìÂÒ¡£ Èç¹ûÄúµÄ port ÐèÒªÏÂÔØºÜ¶àÎļþ£¬ »òÕßÐèÒªÏÂÔØ¿ÉÄÜÓëÆäËü port µÄÔ´ÎļþÃû³åÍ»µÄÎļþ (ÀýÈ磬 Makefile)£¬ ÔòÓ¦½« DIST_SUBDIR ÉèÖÃΪ port µÄÃû×Ö (ͨ³£¿ÉÒÔÓà ${PORTNAME} »ò ${PKGNAMEPREFIX}${PORTNAME})¡£ Õ⽫°Ñ DISTDIR ´ÓĬÈ쵀 /usr/ports/distfiles ¸ÄΪ /usr/ports/distfiles/DIST_SUBDIR£¬ ²¢½«ÓëÄúµÄ port ÓйصÄÎļþ·Åµ½ÄǸöĿ¼ÖС£

¡¡¡¡´ËÍ⣬ ËüÒ²»áÔÚ±¸·ÝÎļþÖ÷·þÎñÆ÷ ftp.FreeBSD.org ÉϲéÕÒͬһ×ÓĿ¼ÏµÄÎļþ (Ö±½ÓÔÚÄúµÄ Makefile ÖÐÉèÖà DISTDIR Ôò²»»áÓÐÕâÑùµÄЧ¹û£¬ Òò´ËÄúӦʹÓà DIST_SUBDIR¡£)

×¢Òâ: ÕâÒ»ÉèÖò¢²»Ó°ÏìÄúÔÚ Makefile Öж¨ÒåµÄ MASTER_SITES¡£


5.4.9 ALWAYS_KEEP_DISTFILES (Ò»Ö±±£´æÔ´Âë°ü)

¡¡¡¡Èç¹ûÄúµÄ port ²ÉÓõÄÊÇÔ¤±àÒëµÄ°ü£¬ µ«È´²ÉÓÃÁËijÖÖÒªÇóÔ´´úÂë±ØÐëÓëÔ¤±àÒë°æ±¾Ò»Í¬ÌṩµÄÊÚȨ£¬ ÀýÈç GPL£¬ ÔòӦʹÓà ALWAYS_KEEP_DISTFILES À´¸æËß FreeBSD Áª±à¼¯Èº±£ÁôÒ»·ÝÔÚ DISTFILES ÖÐÎļþµÄ¸±±¾¡£ Ò»°ãÀ´ËµÕâЩ port µÄÓû§²¢²»ÐèÒªÕâЩÎļþ£¬ Òò´Ë£¬ Ö»ÔÚ¶¨ÒåÁË PACKAGE_BUILDING ·ûµÄʱºò£¬ ²Å½«Ô´´úÂë°üÎļþ¼ÓÈë DISTFILES ÊǸöºÃÖ÷Òâ¡£

Àý 5-7. ÈçºÎʹÓà ALWAYS_KEEP_DISTFILES¡£

.if defined(PACKAGE_BUILDING)
DISTFILES+=             foo.tar.gz
ALWAYS_KEEP_DISTFILES=  yes
.endif

¡¡¡¡µ±ÄúÔÚ DISTFILES ¼ÓÈëÆäËüÎļþʱ£¬ ÇëÎñ±ØÈ·±£ÕâЩÎļþÒ²³öÏÖÔÚÁË distinfo ÖС£ ´ËÍ⣬ ÕâЩ¶îÍâµÄÎļþͨ³£Ò²»áÕ¹¿ªµ½ WRKDIR ÖУ¬ ¶ÔÓÚijЩ ports£¬ Õâ¿ÉÄܵ¼ÖÂһЩ²»Ï£ÍûµÄ¸±×÷Ó㬠Òò¶øÐèÒª½øÐÐÌØ±ðµÄ´¦Àí¡£


5.5 MAINTAINER (¼à»¤ÈË)

¡¡¡¡ÇëÔÚ´Ë´¦Ð´ÉÏÄúµÄµç×ÓÓʼþµØÖ·¡£ :-)

¡¡¡¡ÐèҪעÒâÒ»µã£¬ MAINTAINER ±äÁ¿µÄÖµÖ»ÄÜÊÇÒ»¸ö²»°üÀ¨×¢ÊͲ¿·ÖµÄµç×ÓÓʼþµØÖ·£¬ Æä¸ñʽӦΪ user@hostname.domain¡£ Çë²»ÒªÔÚ´Ë´¦Ð´ÈκÎ˵Ã÷ÐÔµÄÎÄ×Ö£¬ ÀýÈçÄúµÄÕæÊµÐÕÃû ©¤©¤ Õâ»á¸ø bsd.port.mk ´øÀ´Âé·³¡£

¡¡¡¡¼à»¤ÈËÓÐÔðÈα£³Ö port ËæÊ±¸üУ¬ ²¢È·±£ÆäÄܹ»ÕýÈ·µØÔËÐС£ ÏêϸµÄ port ¼à»¤ÈËÖ°Ôð˵Ã÷£¬ Çë²Î¼û port ¼à»¤ÈËÃæÁÙµÄÌôÕ½ Ò»½Ú¡£

¡¡¡¡¶ÔÓÚ port µÄÐ޸ģ¬ Ó¦±»·¢¸ø port µÄ¼à»¤È˽øÐи´Éó£¬ ÇÒÔÚ commit ֮ǰÐèÒª»ñµÃÆä¼à»¤È˵ÄͬÒâ¡£ ¼ÙÈçijһ port µÄ¼à»¤ÈËûÓÐÔÚÁ½ÖÜÖ®ÄÚ (²»°üÀ¨Ö÷ÒªµÄ¹«¹²¼ÙÈÕ) ÏìÓ¦À´×ÔÓû§µÄ¸üÐÂÇëÇó£¬ Ôò¿ÉÊÓΪ¼à»¤È˳¬Ê±£¬ ÔÚÕâÖÖÇé¿öÏ¿ÉÒÔÔÚûÓм໤ÈËÃ÷ȷͬÒâµÄÇéÐÎϽøÐиüС£ Èç¹û¼à»¤ÈËÔÚ¶à´ïÈý¸öÔµÄʱ¼äÄÚûÓнøÐÐÈκÎÏìÓ¦£¬ Ôò¿ÉÒÔÈÏΪ¸Ã¼à»¤È˲»´Ç¶ø±ð£¬ ÔÊÐí¶Ô³öÏÖ´ËÀàÎÊÌâµÄ port ½øÐм໤È˱ä¸ü¡£ ¾¡¹ÜÈç´Ë£¬ ¼à»¤ÈËΪ Ports ¹ÜÀíÍÅ¶Ó »òÕß Security Officer ÍÅ¶Ó µÄ port ²»ÊÜ´ËÏÞ¡£ ¶Ô¼à»¤ÈËΪÕâЩС×éµÄ port ½øÐÐδ¾­Ðí¿ÉµÄ commit ÊDz»ÔÊÐíµÄ¡£

¡¡¡¡ÎÒÃDZ£Áô¶Ô¼à»¤ÈËËùÌá½»ÐÞÕý°¸½øÐи͝µÄȨÁ¦£¬ ÒÔ±ãʹÆä¸ü·ûºÏÏÖÐÐµÄ Ports Collection ¹æ·¶£¬ ¶øÎÞÐèÌá½»²¹¶¡µÄÈËÃ÷È·Åú×¼¡£ ´ËÍ⣬ ´ó¹æÄ£µÄ»ù´¡ÐÔÐ޸ģ¬ Ò²¿ÉÄÜʹ port ÔÚûÓеõ½¼à»¤ÈËͬÒâµÄÇéÐÎϽøÐÐÐ޸ġ£ µ«ÕâÀàÐ޸ͼ²»Ó¦Ó°Ïì port ±¾ÉíµÄ¹¦ÄÜ¡£

¡¡¡¡Ports ¹ÜÀíÍÅ¶Ó ±£ÁôÒÔÈκÎÔ­ÒòÊջػòÈÆ¹ýÈκÎÈ˼໤ȨµÄȨÁ¦£¬ ¶ø Security Officer ÍÅ¶Ó Ôò±£ÁôÒÔ°²È«Ô­ÒòÊջػòÈÆ¹ý¼à»¤È¨µÄȨÁ¦¡£


5.6 COMMENT (Ò»¾ä»°ËµÃ÷)

¡¡¡¡ÕâÒ»±äÁ¿ÓÃÓÚÖ¸¶¨ port µÄÒ»¾ä»°ËµÃ÷¡£ Çë Î𽫠package µÄÃû×Ö (»òÈí¼þµÄ°æ±¾) ·ÅÔÚ˵Ã÷ÖС£ Õâһ˵Ã÷µÄµÚÒ»¸ö×ÖĸӦ´óд£¬ ½áβ²»Óþäµã¡£ ÏÂÃæÊÇÒ»¸öÀý×Ó£º

COMMENT=       A cat chasing a mouse all over the screen

¡¡¡¡Makefile ÖÐµÄ COMMENT ±äÁ¿Ó¦¸Ã½ô½Ó×Å MAINTAINER ±äÁ¿³öÏÖ¡£

¡¡¡¡ÇëÎñ±Ø½« COMMENT ÕâÐÐÏÞÖÆÔÚ²»³¬¹ý 70 ¸ö×Ö·ûÖ®ÄÚ£¬ ÒòΪÕâÐÐÄÚÈÝ»á³ÉΪ pkg_info(1) ³ÊÏÖ¸øÓû§µÄ port µÄÒ»¾ä»°¼ò½é¡£


5.7 ÒÀÀµ¹ØÏµ

¡¡¡¡Ðí¶à ports »áÒÀÀµÆäËü port¡£ ÕâÊǰüÀ¨ FreeBSD ÔÚÄڵĶàÊý Àà-Unix ϵͳµÄºÜ·½±ãµÄ¹¦ÄÜ¡£ ÕâÏÄÜ£¬ ¿ÉÒÔ±ÜÃâÔÚÿ¸ö port »òÔ¤±àÒë°üÖж¼´øÉÏÖØ¸´µÄÒÀÀµµÄ´úÂ룬 ¶ø¿ÉÒÔÒÔÒÀÀµ¹ØÏµµÄ·½Ê½È¥¹²ÏíËüÃÇ¡£ ÓÐÆß¸ö±äÁ¿ÓÃÓÚ°ïÖúÄúÈ·±£ËùÐèµÄÎļþ¶¼´æÔÚÓÚÓû§µÄ»úÆ÷ÉÏ¡£ ´ËÍ⣬ Ò²ÌṩÁËÓÃÓÚÖ§³Ö³£¼ûÇéÐεÄÒÀÀµ¹ØÏµ±äÁ¿£¬ ÒÔ¼°¶ÔÒÀÀµ¹ØÏµÐÐΪµÄ¸ü¶à¿ØÖÆ¡£


5.7.1 LIB_DEPENDS (ÒÀÀµµÄº¯Êý¿â/¹²Ïí¿â)

¡¡¡¡Õâ¸ö±äÁ¿ÓÃÓÚÖ¸¶¨ port ËùÒÀÀµµÄ¹²Ïí¿â¡£ ÆäÄÚÈÝÊÇÓÉһϵÁÐ lib:dir[:target] Ôª×é¹¹³ÉµÄ±í£¬ ÆäÖÐ lib Êǹ²Ïí¿âµÄÃû×Ö£¬ ¶ø dir ÔòÊÇÔÚÕÒ²»µ½Ê±Ó¦¸Ã´ÓÄÄÀïÁª±àºÍ°²×°£¬ ×îºó£¬ target ÓÃÓÚÖ¸¶¨ÔÚÄǸöĿ¼Öе÷ÓÃµÄ target¡£ ÀýÈ磬

LIB_DEPENDS=   jpeg.9:${PORTSDIR}/graphics/jpeg
»á¼ì²âÖ÷°æ±¾ºÅΪ 9 µÄ jpeg ¹²Ïí¿â£¬ Èç¹ûËü²»´æÔÚ£¬ Ôò»á½øÈëµ½ÄúµÄ ports Ŀ¼ÖÐµÄ graphics/jpeg ×ÓĿ¼£¬ ²¢Áª±àºÍ°²×°Ëü¡£ Èç¹ûÄúÖ¸¶¨µÄ target ¾ÍÊÇ DEPENDS_TARGET (ĬÈÏÊÇ install)£¬ Ôò¿ÉÒÔÂÔÈ¥²»Ð´¡£

×¢Òâ: lib ²¿·ÖÊÇÒ»¸öÕýÔò±í´ïʽ£¬ ÓÃÓÚÔÚ ldconfig -r µÄÊä³öÖнøÐвéÕÒ¡£ ¿ÉÒÔʹÓÃÀàËÆ intl.[5-7] ºÍ intl ÕâÑùµÄÖµ¡£ ǰһÖÖģʽ£¬ ¼´ intl.[5-7]£¬ Äܹ»Æ¥Åä intl.5¡¢ intl.6 ºÍ intl.7 ÖеÄÈÎÒâÒ»¸ö¡£ µÚ¶þÖÖģʽ£¬ ¼´ intl Ôò¿ÉÒÔÆ¥ÅäÈÎÒâ°æ±¾µÄ intl ¿â¡£

¡¡¡¡ÒÀÀµ¹ØÏµ»á±»¼ì²âÁ½´Î£¬ Ò»´ÎÊÇÔÚ extract target ÖУ¬ ¶øÁíÒ»´ÎÔòÊÇÔÚ install target¡£ ÁíÍ⣬ ÒÀÀµ¹ØÏµµÄÃû×Ö»á·Åµ½ package ÖУ¬ ÒÔ±ãÈà pkg_add(1) Äܹ»×Ô¶¯µØÔÚÓû§ÏµÍ³Éϰ²×°ËùÐèµÄδ°²×°µÄÆäËü package¡£


5.7.2 RUN_DEPENDS (ÒÀÀµµÄÔËÐл·¾³)

¡¡¡¡Õâ¸ö±äÁ¿¿ÉÒÔÓÃÀ´Ö¸¶¨ port ÔÚÔËÐÐʱËùÐèÒªµÄ¿ÉÖ´ÐÐÎļþ£¬ ÒÔ¼°×ÊÔ´Îļþ¡£ ËüÊÇһϵÁÐ path:dir[:target] Ôª×éµÄÁÐ±í£¬ ÕâÀ path ʱËùÐèµÄ¿ÉÖ´ÐУ¬ »òÕß×ÊÔ´ÎļþµÄÃû×Ö£¬ dir ÊÇÔÚÎÞ·¨ÕÒµ½ÕâЩÎļþ»òĿ¼ʱ£¬ ȥʲôµØ·½Íê³ÉÁª±àºÍ°²×°ÒÔ±ã»ñµÃÕâЩÎļþ£» ¶ø target ÔòÓÃÀ´Ö¸¶¨ÔÚÕâ¸öĿ¼ÖÐËùµ÷ÓÃµÄ target µÄÃû×Ö¡£ ¼ÙÈç path ÒÔбÏß (/) ¿ªÊ¼£¬ Ôò»áµ±×÷ÆÕͨÎļþ£¬ ʹÓà test -e À´²âÊÔ£» ·´Ö®£¬ Ôòϵͳ»á¼Ù¶¨ÕâÊÇÒ»¸ö¿ÉÖ´ÐÐÎļþ£¬ ²¢ÇÒÓà which -s À´¼ì²â³ÌÐòÊÇ·ñ´æÔÚÓÚËÑË÷·¾¶ÖС£

¡¡¡¡ÀýÈ磬

RUN_DEPENDS=   ${LOCALBASE}/etc/innd:${PORTSDIR}/news/inn \
	       xmlcatmgr:${PORTSDIR}/textproc/xmlcatmgr

¡¡¡¡½«¼ì²éÎļþ£¬ »òÕßĿ¼ /usr/local/etc/innd ÊÇ·ñ´æÔÚ£¬ Èç¹ûÕÒ²»µ½£¬ Ôò½«´Ó port Ŀ¼µÄ news/inn ×ÓĿ¼¼ÓÒÔ°²×°¡£ ϵͳҲ»á¼ì²éÊÇ·ñÄܹ»ÔÚËÑË÷·¾¶ÖÐÕÒµ½ÃûΪ xmlcatmgr µÄÎļþ£¬ Èç¹ûÕÒ²»µ½µÄ»°£¬ Ôò»á½øÈë ports Ŀ¼ÖÐµÄ textproc/xmlcatmgr ×ÓĿ¼£¬ ²¢½øÐÐÁª±àºÍ°²×°µÄ²Ù×÷¡£

×¢Òâ: ÕâÖÖÇé¿öÏ£¬ innd ʵ¼ÊÉÏÊÇÒ»¸ö¿ÉÖ´ÐÐÎļþ£» Èç¹û¿ÉÖ´ÐÐÎļþ²»»á³öÏÖÔÚËÑË÷·¾¶ÖУ¬ Äú¾ÍÐèÒªÖ¸¶¨ÍêÕû·¾¶ÁË¡£

×¢Òâ: ports Áª±à¼¯ÈºÉϹٷ½µÄËÑË÷ PATH ÊÇ

/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin

¡¡¡¡Õâ¸öÒÀÀµ¹ØÏµ»áÔÚ install target µÄ¹ý³ÌÖнøÐмì²é¡£ ´ËÍ⣬ ÒÀÀµ¹ØÏµµÄÃû×ֻᱻ·Åµ½ package ÖУ¬ ÒÔ±ã pkg_add(1) Äܹ»ÔÚÓû§µÄϵͳÖÐÉÐδ°²×°Ïà¹ØÈí¼þʱ×Ô¶¯µØ°²×°ÄÇЩ package¡£ Èç¹ûÄúÏ£ÍûÖ¸¶¨Ò»¸öµÄ target ºÍĬÈ쵀 DEPENDS_TARGET Ïàͬ£¬ Ôò¿ÉÒÔÂÔÈ¥²»Ð´¡£

¡¡¡¡Ò»ÖֱȽϳ£¼ûµÄÇéÐÎÊÇ RUN_DEPENDS ºÍ BUILD_DEPENDS ÍêȫһÑù£¬ ÕâÖÖÇé¿öÔÚÒÆÖ²µÄÈí¼þÊDzÉÓýű¾ÓïÑÔÊéд£¬ »òÁª±à»·¾³ÓëÔËÐл·¾³ÐèÇóÏàͬʱÓÈÆäÆÕ±é¡£ ÕâÖÖÇé¿ö¿ÉÒÔÓÃÏÂÃæ¼òµ¥Ã÷Á˵ķ½Ê½Ö±½Ó½«ÆäÖÐÒ»¸ö±äÁ¿¸³Öµ¸øÁíÒ»¸ö±äÁ¿£º

RUN_DEPENDS= ${BUILD_DEPENDS}

¡¡¡¡²»¹ý£¬ ÕâÖÖ¸³ÖµÓпÉÄÜ»áÁîÔËÐл·¾³±»Ä³Ð©Ã»ÓÐÔÚ port Ô­±¾µÄ BUILD_DEPENDS Ã÷È·¶¨ÒåµÄÒÀÀµ¹ØÏµÎÛȾ¡£ µ¼ÖÂÕâÖÖÇé¿öµÄÔ­ÒòÊÇ make(1) ¼ÆËã±äÁ¿¸³ÖµÊ±Ä¬ÈϲÉÓõÄÊÇÑÓºó¼ÆËã (lazy evaluation)¡£ ÀýÈ磬 Èç¹ûÔÚ Makefile ÖÐʹÓÃÁË USE_* ±äÁ¿£¬ ÕâЩ±äÁ¿¾Í»áÓÉ ports/Mk/bsd.*.mk ´¦Àí£¬ ²¢ÌîдÓëÖ®¶ÔÓ¦µÄÁª±àÒÀÀµ¹ØÏµ¡£ ÀýÈ磬 USE_GMAKE=yes »á°Ñ devel/gmake ¼ÓÈëµ½ BUILD_DEPENDS¡£ Èç¹ûÏ£Íû±ÜÃâÕâЩ¸½¼ÓµÄÒÀÀµ¹ØÏµÎÛȾ RUN_DEPENDS£¬ ÔÚʹÓø³ÖµµÄʱºò¾ÍÐèҪСÐÄ¿¼ÂÇÕâÀàÀ©Õ¹µÄÇé¿ö£¬ ÀýÈ磬 ¿ÉÒÔÔÚ¸³ÖµÕ¹¿ªÖ®Ç°¸´ÖƱäÁ¿µÄÖµ£º

RUN_DEPENDS:=  ${BUILD_DEPENDS}

5.7.3 BUILD_DEPENDS (ÒÀÀµµÄÁª±à»·¾³)

¡¡¡¡´Ë±äÁ¿ÓÃÓÚÖ¸¶¨ÓÃÀ´Áª±à port µÄ¿ÉÖ´ÐÐÎļþ»ò×ÊÔ´Îļþ¡£ Óë RUN_DEPENDS ÀàËÆ£¬ ËüÊÇÒ»¸ö path:dir[:target] Ôª×éµÄÁÐ±í¡£ ÀýÈ磬

 BUILD_DEPENDS=
	      unzip:${PORTSDIR}/archivers/unzip
½«¼ì²âÃûΪ unzip µÄ¿ÉÖ´ÐÐÎļþÊÇ·ñ´æÔÚ£¬ Èç¹û²»´æÔÚ£¬ Ôò»á½øÈëµ½ÄúµÄ ports Ŀ¼ÖÐµÄ archivers/unzip ²¢Íê³ÉÁª±àºÍ°²×°¹¤×÷¡£

×¢Òâ: ÕâÀïµÄ ¡°build¡± ±íʾ´Ó½âѹËõµ½±àÒëµÄÈ«²¿¹ý³Ì¡£ ÒÀÀµ¹ØÏµÊÇÔÚ extract target µÄ¹ý³ÌÖмì²âµÄ¡£ ¼ÙÈçÄúÒªÖ¸¶¨µÄ target ºÍ DEPENDS_TARGET Ïàͬ£¬ Ôò¿ÉÒÔÂÔÈ¥²»Ð´¡£


5.7.4 FETCH_DEPENDS (ÒÀÀµµÄÏÂÔØ»·¾³)

¡¡¡¡ÕâÒ»±äÁ¿ÓÃÓÚÖ¸¶¨ port ÔÚÏÂÔØÊ±ËùÐèµÄ¿ÉÖ´ÐÐÎļþ»ò×ÊÔ´Îļþ¡£ ºÍǰÁ½¸öÀàËÆ£¬ ËüÊÇÒ»×é path:dir[:target] Ôª×é¡£ ÀýÈ磬

 FETCH_DEPENDS=
	      ncftp2:${PORTSDIR}/net/ncftp2
½«¼ì²âÃûΪ ncftp2 µÄ¿ÉÖ´ÐÐÎļþÊÇ·ñ´æÔÚ£¬ Èç¹ûÕÒ²»µ½£¬ Ôò½«½øÈëµ½Äú ports Ŀ¼ÖÐµÄ net/ncftp2 ×ÓĿ¼²¢¼ÓÒÔÁª±àºÍ°²×°¡£

¡¡¡¡Õâ¸öÒÀÀµ¹ØÏµÊÇÔÚ fetch target ¹ý³ÌÖмì²éµÄ¡£ Èç¹ûÓë DEPENDS_TARGET Ïàͬ£¬ Ôò¿ÉÒÔÊ¡ÂÔ target ²¿·Ö¡£


5.7.5 EXTRACT_DEPENDS (ÒÀÀµµÄ½âѹËõ»·¾³)

¡¡¡¡´Ë±äÁ¿ÓÃÓÚÖ¸¶¨ port ÔÚ½âѹËõʱËùÐèµÄ¿ÉÖ´ÐÐÎļþ»òÆäËü×ÊÔ´Îļþ¡£ ºÍǰһ¸ö±äÁ¿ÀàËÆ£¬ ËüÊÇһϵÁÐ path:dir[:target] Ôª×éµÄÁÐ±í¡£ ÀýÈ磬

EXTRACT_DEPENDS=
	      unzip:${PORTSDIR}/archivers/unzip
½«¼ì²éÃûΪ unzip µÄ¿ÉÖ´ÐÐÎļþÊÇ·ñ´æÔÚ£¬ Èç¹û²»´æÔÚ£¬ Ôò»á½øÈëµ½ÄúµÄ ports Ŀ¼ÖÐµÄ archivers/unzip ×ÓĿ¼£¬ ÓèÒÔÁª±àºÍ°²×°¡£

¡¡¡¡Õâ¸öÒÀÀµ¹ØÏµÊÇÔÚ extract target µÄ¹ý³ÌÖмì²éµÄ¡£ Èç¹ûÓë DEPENDS_TARGET Ïàͬ£¬ Ôò¿ÉÒÔÂÔÈ¥ target ²¿·Ö¡£

×¢Òâ: Ö»ÓÐÔÚÆäËü·½Ê½¶¼²»¿ÉÓà (ĬÈÏÊÇ gzip) ¶øÇÒÎÞ·¨Í¨¹ý µÚ 5.7.7 ½Ú Ëù½éÉÜµÄ USE_ZIP »ò USE_BZIP2 ¶¼²»ÄÜ´ïµ½ÐèҪʱ£¬ ²ÅӦʹÓÃÕâ¸ö±äÁ¿¡£


5.7.6 PATCH_DEPENDS (ÒÀÀµµÄ´ò²¹¶¡»·¾³)

¡¡¡¡Õâ¸ö±äÁ¿ÓÃÓÚÖ¸¶¨ port ÔÚ½øÐÐ patch ²Ù×÷ʱËùÐèµÄ¿ÉÖ´ÐÐÎļþ»òÆäËü×ÊÔ´Îļþ¡£ ºÍǰһ¸ö±äÁ¿ÀàËÆ£¬ ËüÊÇÒ»×é path:dir[:target] Ôª×éµÄ±í¡£ ÀýÈ磬

 PATCH_DEPENDS=
	      ${NONEXISTENT}:${PORTSDIR}/java/jfc:extract
		
±íʾ½øÈëµ½ÄúµÄ ports Ŀ¼ÖÐµÄ java/jfc ×ÓĿ¼£¬ ²¢½«Æä½âѹËõ¡£

¡¡¡¡Õâ¸öÒÀÀµ¹ØÏµÊÇÔÚ patch target µÄ¹ý³ÌÖмì²éµÄ¡£ target ²¿·ÖÈç¹ûºÍ DEPENDS_TARGET Ïàͬ£¬ ¾Í¿ÉÂÔÈ¥²»Ð´¡£


5.7.7 USE_*

¡¡¡¡ÌṩÁËһϵÁбäÁ¿£¬ ÓÃÒÔ·â×°´óÁ¿ port ¶¼Óõ½µÄÒÀÀµ¹ØÏµ¡£ ËäȻʹÓÃÕâЩ±äÁ¿ÊÇ¿ÉÑ¡µÄ£¬ µ«ËüÃÇÄÜÏÔÖø¼õÉÙ port µÄ Makefile ¸´ÔÓÐÔ¡£ ÕâЩ±äÁ¿µÄ¹²Í¬ÌØÕ÷ÔÚÓÚ£¬ ËüÃǵÄÃû×Ö¶¼ÊÇ USE_* ÕâÑùµÄÐÎʽ¡£ ÕâЩ±äÁ¿µÄʹÓ㬠ӦÑϸñÏÞÖÆÓÚ port µÄ Makefile ÒÔ¼° ports/Mk/bsd.*.mk£¬ ¶ø¾ø²»Ó¦ÓÃÓÚ±í´ïÓû§Äܹ»ÉèÖõÄÑ¡Ïî ©¤©¤ ÕâÖÖÇé¿öÏÂÓ¦²ÉÓà WITH_* ºÍ WITHOUT_* ÕâÑùµÄ±äÁ¿¡£

×¢Òâ: ÔÚ ÈκΠÇé¿öÏ£¬ ¶¼²»Ó¦ÔÚ /etc/make.conf ÖÐÅäÖÃÈκΠUSE_*¡£ ÀýÈ磬 ÉèÖÃ

USE_GCC=3.4
½«µ¼ÖÂÿ¸ö port ¶¼ÒÀÀµ gcc34£¬ ÉõÖÁ°üÀ¨ gcc34 ±¾Éí£¡

±í 5-2. ³£ÓÃµÄ USE_* ±äÁ¿

±äÁ¿ º¬Òå
USE_BZIP2 ´Ë port µÄÔ´Âë°üÊÇʹÓà bzip2 ѹËõµÄ¡£
USE_ZIP ´Ë port µÄÔ´Âë°üÊÇÓà zip ѹËõµÄ¡£
USE_BISON ´Ë port ÔÚÁª±àʱʹÓà bison¡£
USE_CDRTOOLS ´Ë port ÐèҪʹÓà cdrecord£¬ ¸ù¾ÝÓû§µÄϲºÃ£¬ ¿ÉÄÜÊÇ sysutils/cdrtools »ò sysutils/cdrtools-cjk¡£
USE_GCC ´Ë port ÐèҪʹÓÃÄ³Ò»ÌØ¶¨°æ±¾µÄ gcc ²ÅÄÜÍê³É±àÒë¡£ ¿ÉÒÔʹÓÃÀàËÆ 3.4 ÕâÑùµÄÖµÀ´¾«È·Ö¸¶¨°æ±¾¡£ Èç¹ûÏ£ÍûʹÓò»µÍÓÚijһ°æ±¾µÄ±àÒëÆ÷£¬ Ôò¿ÉÒÔÓà 3.4+ ÕâÑùµÄÐÎʽ¡£ Èç¹ûÓëËùÏ£ÍûµÄ°æ±¾ÎǺϣ¬ Ôò½«Ê¹Óûù±¾ÏµÍ³ÖÐËùÌṩµÄ gcc£¬ ·´Ö®£¬ ϵͳ»á´Ó ports Öа²×°ËùÏ£Íû°æ±¾µÄ gcc£¬ ²¢µ÷Õû CC ÒÔ¼° CXX ±äÁ¿µÄÉèÖá£

¡¡¡¡Óë gmake ºÍ configure ½Å±¾ÓйصıäÁ¿ÔÚ µÚ 6.3 ½Ú ÖнøÐÐÁ˽éÉÜ£¬ ¶ø autoconf¡¢ automake ÒÔ¼° libtool µÄ½éÉÜÔò¿ÉÒÔÔÚ µÚ 6.4 ½Ú ÕÒµ½¡£ µÚ 6.6 ½Ú ½éÉÜÁËÓë Perl ÓйصĵıäÁ¿¡£ µÚ 6.7 ½Ú ÖÐÁгöÁ˹ØÓÚ X11 µÄ±äÁ¿¡£ ¹ØÓÚ GNOME µÄ±äÁ¿ÔÚ µÚ 6.8 ½Ú£¬ ¶ø¹ØÓÚ KDE µÄÔòÔÚ µÚ 6.10 ½Ú¡£ µÚ 6.11 ½Ú ½²ÊöÁËºÍ Java ÓйصıäÁ¿£¬ ¶ø µÚ 6.12 ½Ú Ôò°üº¬Á˹ØÓÚ Apache¡¢ PHP ÒÔ¼° PEAR µÄ½éÉÜÐÔÐÅÏ¢¡£ ¹ØÓÚ Python£¬ ÔÚ µÚ 6.13 ½Ú ½øÐÐÁËÌÖÂÛ£¬ ¶ø¹ØÓÚ Ruby µÄ½éÉÜ£¬ Ôò¿ÉÒÔÔÚ µÚ 6.16 ½Ú ÖÐÕÒµ½¡£ µÚ 6.17 ½Ú ÌṩÁËÓÃÓÚ SDL Ó¦ÓóÌÐòµÄ±äÁ¿½éÉÜ£¬ ×îºó£¬ µÚ 6.20 ½Ú °üº¬Á˹ØÓÚ Xfce µÄÐÅÏ¢¡£


5.7.8 ÔÚÒÀÀµ¹ØÏµÖÐÖ¸¶¨×îµÍ°æ±¾

¡¡¡¡ÔÚÒÀÀµÄ³¸öÆäËû port ʱ£¬ ¿ÉÒÔ²ÉÓÃÏÂÃæµÄ¾ä·¨£¬ ͨ¹ý³ý LIB_DEPENDS Ö®ÍâµÄ *_DEPENDS ±äÁ¿À´Ö¸¶¨×îµÍ°æ±¾£º

p5-Spiffy>=0.26:${PORTSDIR}/devel/p5-Spiffy

¡¡¡¡µÚÒ»¸ö×Ö¶ÎÖ¸Ã÷ÁËËùÒÀÀµ package µÄÃû×Ö£¬ ÓÃÒÔÓë package Êý¾Ý¿âÖеÄijÏîÆ¥Å䣬 È»ºóÊDZȽÏËã·û£¬ ÒÔ¼° package µÄ°æ±¾ºÅ¡£ Ç°ÃæµÄÀý×ÓÖУ¬ Èç¹ûϵͳÖа²×°ÁË p5-Spiffy-0.26 ÔòÈÏΪÂú×ãÁËÒÀÀµÌõ¼þ¡£


5.7.9 ¹ØÓÚÒÀÀµ¹ØÏµµÄ²¹³ä˵Ã÷

¡¡¡¡ÈçÇ°ÃæËùÌáµ½µÄÄÇÑù£¬ ÔÚÐèҪijһÒÀÀµµÄ port ʱ£¬ ½«µ÷Óà DEPENDS_TARGET ËùÖ¸¶¨µÄ target¡£ ÕâÒ»±äÁ¿µÄĬÈÏÖµÊÇ install¡£ Õâ²»ÊÇÒ»¸öÓû§±äÁ¿£¬ Ëü²»Ó¦ÔÚ port µÄ Makefile ÖÐÓèÒÔ¶¨Òå¡£ Èç¹ûÄúµÄ port ÐèҪʹÓÃÌØÊâµÄ target À´´¦ÀíÒÀÀµ¹ØÏµ£¬ ӦʹÓà *_DEPENDS µÄ :target ²¿·Ö£¬ ¶ø²»ÊÇÖØ¶¨Òå DEPENDS_TARGET À´Íê³É¡£

¡¡¡¡µ±ÄúÊäÈë make clean ʱ£¬ ÆäÒÀÀµµÄ port Ò²»á×Ô¶¯½øÐÐÇåÀí¡£ Èç¹ûÄú²»Ï£ÍûÈç´Ë£¬ Ó¦¶¨Òå»·¾³±äÁ¿ NOCLEANDEPENDS¡£ Èç¹û port ÒÀÀµÒ»Ð©ÖØÐÂÁª±àÐèÒª»¨·ÑºÜ³¤Ê±¼äµÄ port ʱ£¬ ÀýÈç KDE£¬ GNOME »ò Mozilla ʱ£¬ ÕâÒ»·½·¨»á·Ç³£ÓÐÓá£

¡¡¡¡ÒªÎÞÌõ¼þµØÒÀÀµÄ³¸ö port£¬ ¿ÉÒÔʹÓà ${NONEXISTENT} ×÷Ϊ BUILD_DEPENDS »ò RUN_DEPENDS µÄµÚÒ»²¿·Ö¡£ Ö»ÓÐÔÚÄúÐèҪʹÓÃÆäËü port ÌṩµÄÔ´´úÂëʱ²ÅÓ¦ÕâÑù×ö¡£ ͨ³£Ò²¿ÉÒÔͨ¹ýÕâÑùÖ¸¶¨À´Ëõ¶Ì±àÒëËùÐèµÄʱ¼ä¡£ ÀýÈç

BUILD_DEPENDS=   ${NONEXISTENT}:${PORTSDIR}/graphics/jpeg:extract
±íʾÒÀÀµ jpeg port ²¢½«Æä½âѹËõ¡£

5.7.10 Ñ­»·µÄÒÀÀµ¹ØÏµÊÇÖÂÃüµÄ

ÖØÒª: ²»ÒªÔÚ ports tree ÖÐÒýÈëÈκÎÑ­»·ÒÀÀµ¹ØÏµ!

¡¡¡¡ports Áª±à¼¼Êõ²»Äܹ»ÈÝÈÌÑ­»·ÒÀÀµ¹ØÏµ¡£ Èç¹ûÄúÒýÈëÁËÕâÑùµÄ¹ØÏµ£¬ ¾ÍÒ»¶¨»áÓÐÈ˰²×°µÄ FreeBSD »áÒò´Ë¶øË𻵣¬ ¶øÇÒÕâÖÖÏÖÏó»áÔ½À´Ô½¶à¡£ ÕâЩÇéÐκÜÄѼì²â£» Èç¹ûÓÐÒÉÂÇ£¬ ÔÚ½øÐÐÕâÑùµÄÐÞ¸Ä֮ǰ£¬ Îñ±ØÖ´ÐУº cd /usr/ports; make index¡£ Õâ¸ö¹ý³ÌÔھɵĻúÆ÷ÉÏ»áºÜÂý£¬ µ«Äܹ»ÈôóÁ¿µÄÓû§ ©¤©¤ Ò²°üÀ¨Äú×Ô¼º ©¤©¤ Õü¾ÈÓÚÓÉÕâÖÖÎÊÌâËùÔì³ÉµÄÀ§»óÖ®ÖС£


5.8 MASTERDIR (Ö÷ port ËùÔÚµÄĿ¼)

¡¡¡¡Èç¹û port ÐèÒªÒÀijЩ±äÁ¿µÄÉèÖà (¾ÙÀýÀ´Ëµ£¬ ·Ö±æÂÊ»òÖ½ÐÍ) À´Áª±àÂÔÓв»Í¬µÄÔ¤±àÒë°ü£¬ Ôò¿ÉÒÔΪÿһ¸öÕâÑùµÄ°ü½¨Á¢²»Í¬µÄĿ¼£¬ ÕâÑù¿ÉÒÔÈÃÓû§¸üÈÝÒ׵ؿ´µ½ËûÃÇÏëÒª°²×°µÄ°æ±¾£¬ µ«ÓÖÄÜÔÚÕâЩ port Ö®¼ä¹²Óþ¡¿ÉÄܶàµÄÎļþ¡£ Ò»°ãÇé¿öÏ£¬ Èç¹ûÔËÓõõ±£¬ ³ýÖ÷Ŀ¼֮Íâ¶¼Ö»ÐèÒªºÜ¶ÌµÄ Makefile¡£ ÕâЩ Makefile ÖУ¬ ¿ÉÒÔÓà MASTERDIR À´Ö¸¶¨ÆäËüÎļþËùÔÚµÄĿ¼¡£ ÁíÍ⣬ »¹Ó¦Ê¹ÓÃÒ»¸ö±äÁ¿×÷Ϊ PKGNAMESUFFIX µÄÒ»²¿·Ö£¬ ÒÔ±ãΪ²»Í¬µÄ°ü¸ø³ö²»Í¬µÄÃüÃû¡£

¡¡¡¡ÓÃÀý×ÓÀ´²ûÊöÕâЩ»á¸üΪÃ÷Îú¡£ ÒÔÏÂÊÇ japanese/xdvi300/Makefile µÄ²¿·Ö´úÂ룺

PORTNAME=       xdvi
PORTVERSION=    17
PKGNAMEPREFIX=  ja-
PKGNAMESUFFIX=  ${RESOLUTION}
 :
# default
RESOLUTION?=   300
.if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \
       ${RESOLUTION} != 300 && ${RESOLUTION} != 400
       @${ECHO_MSG} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\""
       @${ECHO_MSG} "Possible values are: 118, 240, 300 (default) and 400."
       @${FALSE}
.endif

¡¡¡¡japanese/xdvi300 Ò²ÌṩÁËÈ«²¿³£¹æµÄ²¹¶¡£¬ ÒÔ¼°´ò°üÓõ½µÄÎļþµÈµÈÄÚÈÝ¡£ Èç¹ûÄúÔÚÄÇÀïÊäÈë make£¬ Ëü½«Ê¹ÓÃĬÈϵķֱæÂÊÖµ (300) ²¢Õý³£µØÁª±à port¡£

¡¡¡¡¶ÔÓÚÆäËü·Ö±æÂʶøÑÔ£¬ ÒÔÏÂÊÇ ÍêÕûµÄ xdvi118/Makefile£º

RESOLUTION=     118
MASTERDIR=      ${.CURDIR}/../xdvi300

.include "${MASTERDIR}/Makefile"

¡¡¡¡(xdvi240/Makefile ºÍ xdvi400/Makefile ÊÇÏàËÆµÄ)¡£ MASTERDIR ¶¨Òå»á¸æËß bsd.port.mk ³£¹æµÄĿ¼£¬ ÀýÈç FILESDIR ÒÔ¼° SCRIPTDIR Ó¦ÔÚ xdvi300 ÖвéÕÒ¡£ RESOLUTION=118 ÕâÐн«¸²¸ÇÔÚ xdvi300/Makefile ÖÐËù×÷µÄ RESOLUTION=300 ÉèÖ㬠´Ó¶ø port ½«ÒÔ·Ö±æÂÊΪ 118 µÄÉèÖÃÀ´Áª±à¡£


5.9 Áª»úÊÖ²á

¡¡¡¡MAN[1-9LN] ÕâЩ±äÁ¿£¬ »á×Ô¶¯µØ½«Áª»úÊÖ²á¼Óµ½ pkg-plist (ÕâÒ²Òâζ×Å ²»ÄÜ ÔÚ pkg-plist ÖÐÁгöÁª»úÊÖ²á ©¤©¤ ²Î¼û PLIST µÄÉú³É À´Á˽â¸ü¶àϸ½Ú)¡£ ´ËÍ⣬ ÕâÒ²»áÈð²×°½×¶Î×Ô¶¯µØ¸ù¾ÝÔÚ /etc/make.conf ÖÐËù×÷µÄ NO_MANCOMPRESS ÉèÖÃÀ´×Ô¶¯¶ÔÁª»úÊÖ²áÎļþÖ´ÐÐѹËõ»ò½âѹËõ²Ù×÷¡£

¡¡¡¡Èç¹û port ³¢ÊÔͨ¹ýʹÓ÷ûºÅÁ¬½Ó»òÓ²Á¬½Ó½«Áª»úÊֲᰲװΪ¶à¸öÃû×Ö£¬ ¾Í±ØÐëʹÓà MLINKS ±äÁ¿À´ÓèÒÔÃ÷ʾ¡£ ÓÉ port ´´½¨µÄÁ¬½Ó£¬ ½«ÓÉ bsd.port.mk ɾ³ýºÍÖØ½¨£¬ ÒÔÈ·ÈÏËüÃÇÖ¸ÏòÁËÕýÈ·µÄÎļþ¡£ ÈκÎÔÚ MLINKS ÖÐÁгöµÄÎļþ¶¼²»Ó¦ÔÚ pkg-plist ÖÐÔÙ³öÏÖ¡£

¡¡¡¡ÒªÖ¸¶¨ÊÇ·ñÔÚ°²×°Ê±¶ÔÁª»úÊÖ²á½øÐÐѹËõ£¬ ¿ÉÒÔʹÓà MANCOMPRESSED ±äÁ¿¡£ ÕâÒ»±äÁ¿¿ÉÒÔÈ¡ÈýÖÖÖµ£¬ yes¡¢ no ºÍ maybe Ö®Ò»¡£ yes ±íʾÁª»úÊÖ²áÒѾ­ÒÔѹËõµÄÐÎʽ°²×°£¬ no ±íʾ»¹Ã»ÓУ¬ ¶ø maybe Ôò±íʾËù°²×°µÄÈí¼þ»á×ðÖØ NO_MANCOMPRESS µÄÉèÖÃÖµ£¬ Òò´Ë bsd.port.mk ²»ÐèÒªÌØ±ð×öʲôÊÂÇé¡£

¡¡¡¡Èç¹ûÉèÖÃÁË USE_IMAKE ¶øÎ´¶¨Òå NO_INSTALL_MANPAGES£¬ MANCOMPRESSED »á×Ô¶¯ÉèΪ yes£¬ ·´Ö®ÔòÊÇ no¡£ ³ý·ÇĬÈÏÖµ²»ºÏÊÊ£¬ ·ñÔò¾Í²»ÐèÒªÔÚ port ÖÐÃ÷È·µØ¼ÓÒԸı䡣

¡¡¡¡Èç¹û port ½«Áª»úÊÖ²á·Åµ½ÁË MANPREFIX Ö®ÍâµÄÆäËüĿ¼£¬ ÔòӦʹÓà MANPREFIX À´¼ÓÒÔÉèÖᣠ´ËÍ⣬ Èç¹ûÖ»ÓÐijЩ²¿·ÖµÄÁª»úÊÖ²á»á°²×°µ½²»±ê×¼µÄλÖ㬠ÀýÈçijЩ perl Ä£¿éµÄ port£¬ »¹¿ÉÒÔʹÓà MANsectPREFIX (´Ë´¦ sect ÊÇ 1-9¡¢ L »ò N Ö®Ò») À´Ö¸¶¨¡£

¡¡¡¡Èç¹ûÄúµÄÁª»úÊÖ²áÐèҪװÈëרÓÃÓÚijһÓïÑÔרÓõÄ×ÓĿ¼£¬ ÐèÒª½« MANLANG ÉèΪÄÇÖÖÓïÑÔµÄÃû×Ö¡£ ´Ë±äÁ¿µÄĬÈÏÖµÊÇ "" (Ò²¾ÍÊÇÖ»ÓÐÓ¢Óï)¡£

¡¡¡¡ÏÂÃæÊÇÒ»¸ö×ۺϵÄÀý×Ó¡£

MAN1=          foo.1
MAN3=          bar.3
MAN4=          baz.4
MLINKS=        foo.1 alt-name.8
MANLANG=       "" ja
MAN3PREFIX=    ${PREFIX}/share/foobar
MANCOMPRESSED= yes

¡¡¡¡Õâ±íʾ port »á°²×°Áù¸öÎļþ£»

${MANPREFIX}/man/man1/foo.1.gz
${MANPREFIX}/man/ja/man1/foo.1.gz
${PREFIX}/share/foobar/man/man3/bar.3.gz
${PREFIX}/share/foobar/man/ja/man3/bar.3.gz
${MANPREFIX}/man/man4/baz.4.gz
${MANPREFIX}/man/ja/man4/baz.4.gz

¡¡¡¡´ËÍ⣬ ${MANPREFIX}/man/man8/alt-name.8.gz ¿ÉÄÜ»áͨ¹ýÄúµÄ port °²×°£¬ Ò²¿ÉÄܲ»»á¡£ ÎÞÂÛÈçºÎ£¬ ¶¼»á´´½¨Ò»¸ö·ûºÅÁ¬½Ó£¬ °Ñ foo(1) ºÍ alt-name(8) Áª»úÊÖ²áÁ¬ÆðÀ´¡£

¡¡¡¡¼ÙÈçÖ»Óв¿·ÖÁª»úÊÖ²áÊÇ·­Òë¹ýµÄ£¬ Ôò¿ÉÒÔʹÓÃһЩ¸ù¾Ý MANLANG ÄÚÈݶ¯Ì¬Éú³ÉµÄ±äÁ¿£º

MANLANG=       "" de ja
MAN1=          foo.1
MAN1_EN=       bar.1
MAN3_DE=       baz.3

¡¡¡¡ÕâÏ൱ÓÚÏÂÁÐÎļþ£º

${MANPREFIX}/man/man1/foo.1.gz
${MANPREFIX}/man/de/man1/foo.1.gz
${MANPREFIX}/man/ja/man1/foo.1.gz
${MANPREFIX}/man/man1/bar.1.gz
${MANPREFIX}/man/de/man3/baz.3.gz

5.10 Info Îļþ

¡¡¡¡Èç¹ûÈí¼þ°üÐèÒª°²×° GNU info Îļþ£¬ ÔòÐèÒªÔÚ INFO ±äÁ¿ÖÐÒ»Ò»Áгö (²»ÐèÒªÖ¸¶¨ .info ºó׺)¡£ ϵͳ¼Ù¶¨ÕâЩÎļþ¾ù»á°²×°µ½ PREFIX/INFO_PATH Ŀ¼ÖС£ Èç¹ûÈí¼þ°üÓÐÐèÒª£¬ Ò²¿ÉÒÔͨ¹ýÐÞ¸Ä INFO_PATH À´Ö¸¶¨²»Í¬µÄλÖᣠ²»¹ý£¬ ²¢²»ÍƼöÕâÑù×ö¡£ ËùÓÐÁгöµÄÏîÄ¿¾ùÊÇÏà¶ÔÓÚ PREFIX/INFO_PATH µÄÎļþ·¾¶¡£ ÀýÈ磬 lang/gcc34 ±íʾ½« info Îļþ°²×°µ½ PREFIX/INFO_PATH/gcc34£¬ Òò´Ë INFO Ӧд³ÉÀàËÆÕâÑù£º

INFO= gcc34/cpp gcc34/cppinternals gcc34/g77 ...
ÕâÑù°²×°/Ð¶ÔØ´úÂë¾Í»á×Ô¶¯µØÔÚ×¢²á°ü֮ǰ½«ËüÃǼÓÈëµ½ÁÙʱµÄ pkg-plist ÖÐÁË¡£

5.11 Makefile Ñ¡Ïî

¡¡¡¡Ä³Ð©´óÐÍÓ¦ÓóÌÐò¿ÉÒÔÔÚÁª±àʱʹÓÃһϵÁÐÅäÖÃÑ¡Ï ÓÃÒÔÔÚϵͳÖÐÒѾ­°²×°ÁËijЩ¿â»òÓ¦ÓóÌÐòʱÔö¼ÓһЩ¹¦ÄÜ¡£ ÀýÈ磬 Ñ¡ÔñijÖÖ×ÔÈ» (ÈËÀàµÄ) ÓïÑÔ£¬ GUI »òÃüÁîÐнçÃæ£¬ ÓÉÓÚ²¢²»ÊÇËùÓеÄÓû§¶¼Ï£ÍûʹÓÃÕâЩ¿â»òÕßÓ¦ÓóÌÐò£¬ port ϵͳÌṩÁËÒ»×é·½±ãµÄ»úÖÆ£¬ À´Èà port µÄ×÷Õß¿ØÖÆÁª±àʱµÄÅäÖᣠ֧³ÖÕâÐ©ÌØÐÔ¿ÉÒÔÈÃÓû§ÌåÑé¸üºÃ£¬ ²¢´ïµ½Ê°빦±¶µÄЧ¹û¡£


5.11.1 ¿ª¹Ø (Knobs)

5.11.1.1 WITH_* ºÍ WITHOUT_*

¡¡¡¡ÕâЩ±äÁ¿ÊÇΪϵͳ¹ÜÀíÔ±×¼±¸µÄ¡£ Ðí¶àÕâÑùµÄ±äÁ¿±»±ê×¼»¯²¢ÖÃÓÚ ports/KNOBS Îļþ¡£

¡¡¡¡ÔÚ´´½¨Ò»¸ö port µÄʱºò£¬²»ÒªÊ¹ÓÃij¸öÓ¦ÓóÌÐòרÓÐµÄ knob Ãû³Æ£¬±ÈÈç¶ÔÓÚ Avahi Õâ¸ö port£¬Ó¦¸ÃÓà WITHOUT_MDNS ¶ø²»ÊÇ WITHOUT_AVAHI_MDNS¡£

×¢Òâ: Äú²»Ó¦¼Ù¶¨Ã¿Ò»¸ö WITH_* ¶¼»áÓжÔÓ¦µÄ WITHOUT_* ±äÁ¿£¬ ·´Ö®ÒàÈ»¡£ Ò»°ã¶øÑÔ£¬ »áʹÓÃĬÈÏÖµ¡£

×¢Òâ: ³ý·ÇÁíÓÐ˵Ã÷£¬ ÕâЩ±äÁ¿¶¼ÊDzâÊÔÊÇ·ñ¶¨Ò壬 ¶ø²»ÊÇËüÃÇÉèÖÃÁË YES »ò NO¡£

±í 5-3. ³£¼ûµÄ WITH_* ºÍ WITHOUT_* ±äÁ¿

±äÁ¿ ÒâÒå
WITHOUT_NLS ±íʾ²»ÐèÒª¹ú¼Ê»¯Ö§³Ö£¬ Õâ¿ÉÒÔ½ÚÊ¡±àÒëËùÏûºÄµÄʱ¼ä¡£ ĬÈÏÇé¿öÏ£¬ »áÆôÓùú¼Ê»¯Ö§³Ö¡£
WITH_OPENSSL_BASE ʹÓûù±¾ÏµÍ³ÖÐµÄ OpenSSL °æ±¾¡£
WITH_OPENSSL_PORT ´Ó security/openssl °²×° OpenSSL£¬¼´Ê¹»ù±¾ÏµÍ³Öеİ汾ÊÇ×îеġ£
WITHOUT_X11 Èç¹û port Äܹ»ÔÚÊÇ·ñ°üº¬ X Ö§³ÖµÄÇé¿öÏ·ֱðÁª±à£¬ ÔòÒ»°ãÇé¿öÓ¦¸ÃĬÈÏÒÔ°üº¬ X Ö§³ÖµÄÅäÖÃÀ´Áª±à¡£ Èç¹û¶¨ÒåÁËÕâÒ»±äÁ¿£¬ ÔòÓ¦Áª±à²»°üº¬ X Ö§³ÖµÄ°æ±¾¡£

5.11.1.2 ¿ª¹Ø (knob) µÄÃüÃû

¡¡¡¡ÎÒÃǽ¨Òé port µÄ¿ª·¢ÈËԱʹÓÃÏàËÆµÄ¿ª¹Ø£¬ ÒÔ±ã×îÖÕÓû§Ê¹Ó㬠²¢¼õÉÙ¿ª¹ØÃû³ÆµÄ×ÜÊý¡£ ×îΪ³£ÓõĿª¹ØÃû×Ö¿ÉÒÔÔÚ KNOBS ÎļþÖÐÕÒµ½¡£

¡¡¡¡¿ª¹ØµÄÃû×ÖÓ¦·´Ó³Æä¹¦ÄÜ¡£ Èç¹û port µÄ PORTNAME °üÀ¨ lib- ǰ׺£¬ Ôò¿ª¹ØÃûÖÐӦɾȥ lib- ǰ׺¡£


5.11.2 OPTIONS (²Ëµ¥Ê½¿ÉÑ¡Ïî)

5.11.2.1 ±³¾°

¡¡¡¡OPTIONS ½«ÎªÕýÔÚ°²×° port µÄÓû§Ìṩһ¸ö°üº¬¿ÉÓÃÑ¡ÏîµÄ¶Ô»°¿ò£¬ ²¢½«Óû§µÄÑ¡Ôñ±£´æµ½ /var/db/ports/portname/options ÖС£ Ï´ÎÖØÐÂÁª±à port ʱ£¬ ÕâЩѡÏ±»ÔÙ´ÎʹÓᣠÕâÑùÒ»À´£¬ ¾Í²»ÐèÒªÀÍÉñÈ¥¼ÇÒäÄú֮ǰÁª±à port ʱµÄÄǼ¸Ê®¸ö WITH_* ºÍ WITHOUT_*Ñ¡ÏîÁË£¡

¡¡¡¡µ±Óû§ÔËÐÐ make config (»òÊ×´ÎÔËÐÐ make build) ʱ£¬ ¿ò¼Ü»áÊ×Ïȼì²é /var/db/ports/portname/options¡£ Èç¹ûÕâ¸öÎļþ²»´æÔÚ£¬ ÔòËü»áʹÓà OPTIONS µÄÖµÀ´Éú³ÉÒ»¸ö¿ÉÒÔÆôÓûò½ûÓø÷¸öÑ¡ÏîµÄ¶Ô»°¿ò¡£ Ëæºó£¬ Óû§µÄÑ¡Ôñ½«±£´æµ½ options ÎļþÖУ¬ ²¢±»ÓÃÓÚÁª±à port¡£

¡¡¡¡Èç¹ûа汾µÄ port ÐÂÔöÁË OPTIONS£¬ Ôòϵͳ»áÔٴθø³ö¶Ô»°¿ò£¬ ²¢¸ù¾ÝÏÈǰµÄ OPTIONS ÅäÖÃÔ¤ÉèÏÈǰ´æÔÚµÄÅäÖá£

¡¡¡¡Ê¹Óà make showconfig ¿ÉÒԲ鿴±£´æµÄÅäÖᣠ´ËÍ⣬ make rmconfig ¿ÉÒÔɾ³ýÒѾ­±£´æµÄÅäÖá£


5.11.2.2 Óï·¨

¡¡¡¡OPTIONS ±äÁ¿µÄÓï·¨ÊÇ£º

OPTIONS=	OPTION	"˵Ã÷ÐÔÎÄ×Ö" ĬÈÏÖµ ...
ĬÈÏÖµ±ØÐëÊÇ ON ºÍ OFF Ö®Ò»¡£ ÕâÖÖÈýÔª×é¿ÉÒÔʹÓöà´Î¡£

¡¡¡¡¶¨Òå OPTIONS ±äÁ¿µÄÖµ£¬ ±ØÐëÔÚÒýÈë bsd.port.options.mk ֮ǰ½øÐС£ ¶ø WITH_* ºÍ WITHOUT_* ±äÁ¿ÔòÖ»ÄÜÔÚÒýÈëÁË bsd.port.options.mk Ö®ºó²Å¿ÉÒÔ½øÐмì²â¡£ ʹÓà bsd.port.pre.mk Ò²¿ÉÒԴﵽͬÑùµÄÄ¿µÄ£¬ ÔÚϵͳ¿ªÊ¼Ìṩ bsd.port.options.mk ֮ǰµÄÐí¶à port ¶¼ÔÚʹÓÃÕâÖÖÓ÷¨¡£ ²»¹ý£¬ Çë×¢Òâ bsd.port.pre.mk »áÒªÇóijЩ±äÁ¿ÒѾ­½øÐйý¶¨Ò壬 Èç USE_* µÈ¡£

Àý 5-8. ¼òµ¥µÄ OPTIONS Ó÷¨

OPTIONS=      FOO "ÆôÓà foo Ñ¡Ïî" On \
              BAR "Ö§³Ö bar ¹¦ÄÜ" Off

.include <bsd.port.options.mk>

.if defined(WITHOUT_FOO)
CONFIGURE_ARGS+=	--without-foo
.else
CONFIGURE_ARGS+=	--with-foo
.endif

.if defined(WITH_BAR)
RUN_DEPENDS+=	bar:${PORTSDIR}/bar/bar
.endif

.include <bsd.port.mk>

Àý 5-9. Old style use of OPTIONS

OPTIONS=      FOO "Enable option foo" On

.include <bsd.port.pre.mk>

.if defined(WITHOUT_FOO)
CONFIGURE_ARGS+=	--without-foo
.else
CONFIGURE_ARGS+=	--with-foo
.endif

.include <bsd.port.post.mk>

5.11.3 ×Ô¶¯¼¤»îµÄÌØÐÔ

¡¡¡¡ÔÚʹÓà GNU configure ½Å±¾Ê±£¬ Ò»¶¨ÒªÐ¡ÐÄÓÐÐ©ÌØÐÔ»áÓÉÆä×Ô¶¯¼ì²â¶ø¼¤»î¡£ ÄúӦͨ¹ýÃ÷È·µØÖ¸¶¨ÏàÓ¦µÄ --without-xxx »ò --disable-xxx ²ÎÊýµ½ CONFIGURE_ARGS À´½ûÓò»Ï£ÍûµÄÌØÐÔ¡£

Àý 5-10. ´¦ÀíÑ¡ÏîʱµÄ´íÎó×ö·¨

.if defined(WITH_FOO)
LIB_DEPENDS+=		foo.0:${PORTSDIR}/devel/foo
CONFIGURE_ARGS+=	--enable-foo
.endif

¡¡¡¡ÔÚÇ°ÃæµÄÀý×ÓÖУ¬ ¼ÙÉèϵͳÖÐÒѾ­°²×°ÁË libfoo ¿â¡£ Óû§¿ÉÄܲ¢²»Ï£ÍûÓ¦ÓóÌÐòʹÓà libfoo£¬ Òò´ËËûÔÚ make config ¶Ô»°¿òÖйصôÁËÕâ¸öÑ¡Ïî¡£ µ«ÊÇ£¬ Ó¦ÓóÌÐòµÄ configure ½Å±¾¼ì²âµ½ÁËϵͳÖдæÔÚÕâ¸ö¿â£¬ ²¢½«Æä¼ÓÈëµ½ÁË×îÖÕ¿ÉÖ´ÐÐÎļþÖ§³ÖµÄ¹¦ÄÜÖС£ ÏÖÔÚ£¬ Èç¹ûÓû§¾ö¶¨´ÓϵͳÖÐÐ¶ÔØ libfoo ʱ£¬ ports ϵͳ¾ÍÎÞ·¨±£»¤Õâ¸öÓ¦ÓóÌÐòÃâÔâÆÆ»µÁË (ÒòΪûÓмǼ libfoo µÄÒÀÀµ¹ØÏµ)¡£

Àý 5-11. ´¦ÀíÑ¡ÏîʱµÄÕýÈ·×ö·¨

.if defined(WITH_FOO)
LIB_DEPENDS+=		foo.0:${PORTSDIR}/devel/foo
CONFIGURE_ARGS+=	--enable-foo
.else
CONFIGURE_ARGS+=	--disable-foo
.endif

¡¡¡¡ÔÚµÚ¶þ¸öÀý×ÓÖУ¬ libfoo ¿â±»Ã÷È·½ûÓᣠ¼´Ê¹ÏµÍ³ÖÐÒѾ­°²×°ÁËÕâ¸ö¿â£¬ configure ½Å±¾Ò²²»»áÆôÓÃÏàÓ¦µÄ¹¦ÄÜÁË¡£


5.12 Ö¸¶¨¹¤×÷ÁÙʱĿ¼

¡¡¡¡Ã¿¸ö port ¶¼»á±»½âѹËõµ½Ò»¸ö¹¤×÷ÁÙʱĿ¼ÖУ¬ Õâ¸öĿ¼±ØÐëÊÇ¿ÉдµÄ¡£ ports ϵͳĬÈÏÇé¿öÏ»Ὣ DISTFILES ½âѹËõµ½Ò»¸ö½Ð×ö ${DISTNAME} µÄĿ¼ÖС£ »»ÑÔÖ®£¬ Èç¹ûÉèÁË£º

PORTNAME=      foo
PORTVERSION=   1.0

¡¡¡¡Ôò port µÄÔ´Âë°üÎļþµÄ¶¥¼¶Ä¿Â¼½«ÊÇ foo-1.0¡£

¡¡¡¡Èç¹ûÕâ²»ÊÇËùÏ£ÍûµÄÇéÐΣ¬ Äú¿ÉÒÔÐÞ¸ÄһϵÁбäÁ¿µÄÉèÖá£


5.12.1 WRKSRC (¿ªÊ¼Áª±à²Ù×÷µÄĿ¼Ãû)

¡¡¡¡Õâ¸ö±äÁ¿¸ø³öÁËÔÚÓ¦ÓóÌÐòµÄÔ´´úÂë°ü½âѹËõÖ®ºóËùÉú³ÉµÄĿ¼µÄÃû×Ö¡£ Èç¹ûÎÒÃÇ֮ǰµÄÀý×Ó½âѹËõÉú³ÉÒ»¸ö½Ð×ö foo (¶ø²»ÊÇ foo-1.0) µÄĿ¼£¬ ÄúÓ¦£º

WRKSRC=      ${WRKDIR}/foo

¡¡¡¡»òÕߣ¬ Ò²¿ÉÄÜÊÇ

WRKSRC=      ${WRKDIR}/${PORTNAME}

5.12.2 NO_WRKSUBDIR (²»ÐèÒªÁÙʱµÄÁª±àĿ¼)

¡¡¡¡Èç¹û port ÍêÈ«²»ÐèҪдÈ뵽ij¸ö×ÓĿ¼ÖУ¬ ÄúÓ¦ÉèÖà NO_WRKSUBDIR ÒÔÃ÷ʾÕâÒ»µã¡£

NO_WRKSUBDIR= yes

5.13 ´¦Àí³åÍ»

¡¡¡¡Õë¶Ô²»Í¬µÄ package »ò port Ö®¼äµÄ³åÍ»ÇéÐΣ¬ ϵͳÌṩÁ˲»Í¬µÄ±äÁ¿À´Ð­Öú¿ª·¢ÈËÔ±½øÐбí´ï£º CONFLICTS¡¢ CONFLICTS_INSTALL ºÍ CONFLICTS_BUILD¡£

×¢Òâ: ÕâЩÓÃÓÚÃèÊö³åÍ»µÄ±äÁ¿»á×Ô¶¯µØÉèÖà IGNORE£¬ ºóÕßµÄÍêÕû½éÉÜ£¬ ¿ÉÒÔÔÚ µÚ 12.14 ½Ú ÕÒµ½¡£

¡¡¡¡ÔÚɾȥÏ໥³åÍ»µÄ port ʱ£¬ ½¨Ò齫 CONFLICTS ±£Áô¼¸¸öÔ£¬ ÒÔ±ãÈÃÄÇЩ²»¾­³£¸üÐÂϵͳµÄÓû§Äܹ»¿´µ½¡£


5.13.1 CONFLICTS_INSTALL

¡¡¡¡Èç¹ûÄúµÄÈí¼þ°ü²»ÄÜÓëijЩÈí¼þ°üͬʱ°²×° (ÀýÈçÓÉÓÚ°²×°Í¬ÑùµÄÎļþµ½ÏàͬµÄλÖᢠÔËÐÐʱ²»¼æÈݵȵÈ)£¬ ÔòÓ¦°ÑÆäËüÈí¼þ°üµÄÃû×ÖÁÐÔÚ CONFLICTS_INSTALL ±äÁ¿ÖС£ ´Ë´¦¿ÉÒÔʹÓà shell ͨÅä·û£¬ Èç * ºÍ ?¡£ ÁгöÆäËüÈí¼þ°üµÄÃû×ÖʱÐèÒª×ñÑ­ËüÃÇÔÚ /var/db/pkg ÖгöÏÖµÄÑù×Ó¡£ ÇëÈ·±£ CONFLICTS_INSTALL ²»»áÆ¥Åäµ½ÄúÕýÖÆ×÷µÄÕâ¸öÔ¤±àÒë°üµÄÃû×Ö£¬ ·ñÔò£¬ ʹÓà FORCE_PKG_REGISTER À´Ç¿Öư²×°¾ÍûÓа취½øÐÐÁË¡£ ¶ÔÓÚ CONFLICTS_INSTALL µÄ¼ì²éÊÇÔÚÁª±à¹ý³ÌÖ®ºó¡¢ °²×°¿ªÊ¼Ö®Ç°½øÐеġ£


5.13.2 CONFLICTS_BUILD

¡¡¡¡Èç¹ûÄúµÄÈí¼þ°üÔÚϵͳÖдæÔÚijЩÆäËüÈí¼þ°üʱ²»ÄÜÍê³ÉÁª±à£¬ ÔòÓ¦°ÑÆäËüÈí¼þ°üµÄÃû×ÖÁÐÔÚ CONFLICTS_BUILD ±äÁ¿ÖС£ ´Ë´¦¿ÉÒÔʹÓà shell ͨÅä·û£¬ Èç * ºÍ ?¡£ ÁгöÆäËüÈí¼þ°üµÄÃû×ÖʱÐèÒª×ñÑ­ËüÃÇÔÚ /var/db/pkg ÖгöÏÖµÄÑù×Ó¡£ ¶ÔÓÚ CONFLICTS_BUILD µÄ¼ì²éÊÇÔÚÁª±à¹ý³Ì¿ªÊ¼Ö®Ç°½øÐеġ£ Áª±àʱµÄ³åÍ»²»»áÔÚ±àÒëºÃµÄ°üÖÐÓèÒԼǼ¡£


5.13.3 CONFLICTS

¡¡¡¡Èç¹ûÄúµÄ port ÔÚijЩÆäËü port ÒѾ­´æÔÚµÄÇé¿öϼȲ»ÄÜÁª±à£¬ Ò²²»Äܰ²×°£¬ ÔòÓ¦°ÑÆäËüÈí¼þ°üµÄÃû×ÖÁÐÔÚ CONFLICTS ±äÁ¿ÖС£ ´Ë´¦¿ÉÒÔʹÓà shell ͨÅä·û£¬ Èç * ºÍ ?¡£ ÁгöÆäËüÈí¼þ°üµÄÃû×ÖʱÐèÒª×ñÑ­ËüÃÇÔÚ /var/db/pkg ÖгöÏÖµÄÑù×Ó¡£ ÇëÈ·±£ CONFLICTS ²»»áÆ¥Åäµ½ÄúÕýÖÆ×÷µÄÕâ¸öÔ¤±àÒë°üµÄÃû×Ö£¬ ·ñÔò£¬ ʹÓà FORCE_PKG_REGISTER À´Ç¿Öư²×°¾ÍûÓа취½øÐÐÁË¡£ ¶ÔÓÚ CONFLICTS µÄ¼ì²éÊÇÔÚÁª±à¹ý³ÌÖ®ºó¡¢ °²×°¿ªÊ¼Ö®Ç°½øÐеġ£


5.14 °²×°Îļþ

5.14.1 INSTALL_* ºê

¡¡¡¡Ò»¶¨ÒªÊ¹ÓÃÓÉ bsd.port.mk ÌṩµÄºê£¬ ÒÔÈ·±£ÔÚÄú×Ô¼ºµÄ *-install target ÖÐÄܹ»ÒÔÕýÈ·µÄÊôÖ÷ºÍȨÏÞģʽ°²×°Îļþ¡£

  • INSTALL_PROGRAM Êǰ²×°¿ÉÖ´Ðжþ½øÖÆÎļþµÄÃüÁî¡£

  • INSTALL_SCRIPT Êǰ²×°¿ÉÖ´Ðнű¾ÎļþµÄÃüÁî¡£

  • INSTALL_LIB Êǰ²×°¶¯Ì¬Á¬½Ó¿âµÄÃüÁî¡£

  • INSTALL_KLD ÊÇÓÃÓÚ°²×°¿É¼ÓÔØÊ½ÄÚºËÄ£¿éµÄÃüÁî¡£ ÔÚijЩƽ̨ÉÏ£¬ µ±¶ÔÄÚºËÄ£¿é½øÐÐ strip Ö®ºó»áµ¼ÖÂһЩÎÊÌ⣬ Òò´ËÄúӦʹÓÃÕâ¸öºê¶ø²»ÊÇ INSTALL_PROGRAM À´°²×°ÄÚºËÄ£¿é¡£

  • INSTALL_DATA Êǰ²×°¿É¹²ÏíÊý¾ÝµÄÃüÁî¡£

  • INSTALL_MAN Êǰ²×°Áª»úÊÖ²áºÍÆäËûÎĵµµÄÃüÁî (×¢ÒâËü²¢²»»áÖ´ÐÐѹËõ²Ù×÷)¡£

¡¡¡¡ÕâЩºêÕ¹¿ªºó»ù±¾É϶¼Êǰüº¬Êʵ±²ÎÊýµÄ install ÃüÁî¡£


5.14.2 ¶Ô¿ÉÖ´ÐÐÎļþºÍ¶¯Ì¬Á¬½Ó¿â×öÍÑÄ£ (strip) ²Ù×÷

¡¡¡¡³ý·Ç²»µÃ²»½øÐУ¬ ·ñÔò²»ÒªÊÖ¹¤¶Ô¿ÉÖ´ÐÐÎļþ×÷ÍÑÄ£²Ù×÷¡£ ËùÓÐÎļþÔÚ°²×°Ê±¶¼Ó¦ÍÑÄ££¬ µ« INSTALL_PROGRAM ºê»áÔÚ°²×°µÄͬʱ¶ÔÆä½øÐÐÍÑÄ£ (²Î¼ûÏÂÒ»½ÚµÄÄÚÈÝ)¡£ INSTALL_LIB ºê

¡¡¡¡Èç¹ûÄúÐèÒª¶ÔijһÎļþ½øÐÐÍÑÄ££¬ µ«²»Ï£ÍûʹÓà INSTALL_PROGRAM ¼° INSTALL_LIB ºê£¬ ÔòӦʹÓà ${STRIP_CMD} À´´¦Àí³ÌÐò¡£ Ò»°ã¶øÑÔÕâÓ¦¸ÃÔÚ post-install target ÖнøÐС£ ÀýÈ磺

post-install:
	${STRIP_CMD} ${PREFIX}/bin/xdl

¡¡¡¡¿ÉÒÔʹÓà file(1) ÃüÁîÀ´¼ì²éËù°²×°µÄ¿ÉÖ´ÐÐÎļþÊÇ·ñ½øÐйýÍÑÄ£¡£ Èç¹ûËüûÓиø³ö not stripped µÄÌáʾ£¬ Ôò±íʾÒѾ­×ö¹ýÍÑÄ£ÁË¡£ ÁíÍ⣬ strip(1) ²»»á¶ÔÒѾ­ÍÑÄ£¹ýµÄÎļþÖØÐÂÍÑÄ££¬ Ëü»áÖ±½ÓÍ˳öµÄ¡£


5.14.3 °²×°Ò»¸öĿ¼ÏµÄÈ«²¿Îļþ

¡¡¡¡ÓÐʱ£¬ »áÓÐÐèÒª°²×°´óÁ¿µÄÎļþ£¬ ²¢±£³ÖÆä²ã´Î½á¹¹£¬ ÀýÈ磬 ½«Õû¸öĿ¼½á¹¹´Ó WRKSRC ¸´ÖƵ½ PREFIX µÄÄ¿±êĿ¼¡£

¡¡¡¡Õë¶ÔÕâÖÖÇé¿ö£¬ ϵͳÌṩÁËÁ½¸öºê¡£ ʹÓÃÕâЩºê£¬ ¶ø²»ÊÇÖ±½ÓʹÓà cp µÄÓÅÊÆÊÇËüÃÇÄܹ»È·±£Ä¿±êÎļþµÄÊôÖ÷ºÍȨÏÞÕýÈ·¡£ µÚÒ»¸öºê£¬ COPYTREE_BIN ½«ËùÓа²×°µÄÎļþÊÓΪ¿ÉÖ´ÐÐÎļþ£¬ Òò¶øÊʺϰ²×°Îļþµ½ PREFIX/bin¡£ µÚ¶þ¸öºê£¬ COPYTREE_SHARE£¬ Ôò²»»áÉèÖÿÉÖ´ÐÐȨÏÞ£¬ Òò´ËÊʺÏÓÚ½«Îļþ°²×°µ½ PREFIX/share Ï¡£

post-install:
	${MKDIR} ${EXAMPLESDIR}
	(cd ${WRKSRC}/examples/ && ${COPYTREE_SHARE} \* ${EXAMPLESDIR})

¡¡¡¡Õâ¸öÀý×Ó½«Ô­×÷ÕßÌṩµÄÕû¸ö examples Ŀ¼¸´ÖƵ½Äú port Ö¸¶¨µÄ°²×°Ê¾·¶ÎļþµÄλÖá£

post-install:
	${MKDIR} ${DATADIR}/summer
	(cd ${WRKSRC}/temperatures/ && ${COPYTREE_SHARE} "June July August" ${DATADIR}/summer/)

¡¡¡¡Õâ¸öÀý×Ó½«°ÑÏļ¾µÄÈý¸öÔµÄÊý¾Ý£¬ ¸´ÖƵ½ DATADIR ÖÐµÄ summer ×ÓĿ¼¡£

¡¡¡¡¾­ÓÉÉèÖà COPYTREE_* ºêµÄµÚÈý¸ö²ÎÊý£¬ Äú»¹¿ÉÒÔΪ find Ö¸¶¨¶îÍâµÄ²ÎÊý¡£ ÀýÈ磬 Èç¹ûÏ£Íû°²×°³ýÁË Makefile Ö®ÍâµÄÆäËûËùÓÐÎļþ£¬ ¿ÉÒÔʹÓÃÏÂÊöÃüÁî¡£

post-install:
	${MKDIR} ${EXAMPLESDIR}
	(cd ${WRKSRC}/examples/ && \
		${COPYTREE_SHARE} \* ${EXAMPLESDIR} "! -name Makefile")

¡¡¡¡ÐèҪעÒâµÄÊÇ£¬ ÕâЩºê²¢²»ÄÜ×Ô¶¯½«Ëù°²×°µÄÎļþ¼Óµ½ pkg-plist ÖУ¬ Äú»¹ÊÇÐèÒª×ÔÐÐÁгöËüÃÇ¡£


5.14.4 °²×°¸½¼ÓµÄÎĵµ

¡¡¡¡Èç¹ûÄúµÄÈí¼þ°üº¬Á˱ê×¼µÄÁª»úÊÖ²áºÍ info ÊÖ²áÒÔÍâµÄÎĵµ£¬ ¶øÇÒÄúÈÏΪËüÃǶÔÓû§»áÓÐÓ㬠Çë°ÑÕâЩÎĵµ°²×°µ½ PREFIX/share/doc Ï¡£ ºÍÇ°ÃæÀàËÆ£¬ ÕâÒ²¿ÉÒÔÔÚ post-install target ÖÐÍê³É¡£

¡¡¡¡ÎªÄúµÄ port ½¨Á¢Ò»¸öеÄĿ¼¡£ Õâ¸öĿ¼µÄÃû×ÖÓ¦¸Ã·´Ó³ËüÊÇÊôÓÚÄĸö port µÄ¡£ ͨ³£½¨ÒéʹÓà PORTNAME¡£ ²»¹ý£¬ Èç¹ûÄúÈÏΪ²»Í¬°æ±¾µÄ port ¿ÉÄÜ»áͬʱ°²×°£¬ Ò²¿ÉÒÔÓÃÍêÕûµÄ PKGNAME¡£

¡¡¡¡ÁíÍ⣬ Ó¦¸ÃÈÃÊÇ·ñ°²×°È¡¾öÓÚ±äÁ¿ NOPORTDOCS µÄÉèÖ㬠ÕâÑùÓû§¾ÍÄܹ»ÔÚ /etc/make.conf ÖнûÖ¹°²×°Ëü¡£ ÀýÈ磺

post-install:
.if !defined(NOPORTDOCS)
	${MKDIR} ${DOCSDIR}
	${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${DOCSDIR}
.endif

¡¡¡¡ÕâÀïÊÇһЩ±ãÓÚʹÓõıäÁ¿£¬ ÒÔ¼°ËüÃÇÔÚ Makefile ÖÐĬÈϵÄÕ¹¿ª·½Ê½£º

  • DATADIR »áÕ¹¿ª³É PREFIX/share/PORTNAME¡£

  • DATADIR_REL »áÕ¹¿ª³É share/PORTNAME¡£

  • DOCSDIR »áÕ¹¿ª³É PREFIX/share/doc/PORTNAME¡£

  • DOCSDIR_REL »áÕ¹¿ª³É share/doc/PORTNAME¡£

  • EXAMPLESDIR »áÕ¹¿ª³É PREFIX/share/examples/PORTNAME¡£

  • EXAMPLESDIR_REL »áÕ¹¿ª³É share/examples/PORTNAME¡£

×¢Òâ: NOPORTDOCS Ö»¿ØÖƽ«Òª°²×°µ½ DOCSDIR µÄÄÇЩÎĵµ£¬ ¶ø²»Ó¦Ó°Ïì±ê×¼µÄÁª»úÊÖ²áÒÔ¼° info ÊÖ²áµÄ°²×°¡£ °²×°µ½ DATADIR ºÍ EXAMPLESDIR µÄÎļþÔòÏàÓ¦µØÊÜ NOPORTDATA ºÍ NOPORTEXAMPLES ¿ØÖÆ¡£

¡¡¡¡ÕâЩ±äÁ¿Ò²»á±»µ¼³öµ½ PLIST_SUB ÖС£ Ö»Òª¿ÉÄÜ£¬ ËüÃǵÄÖµ¾Í½«ÔÚÄÇÀïÒÔÏà¶ÔÓÚ PREFIX µÄ·¾¶ÐÎʽ³öÏÖ¡£ Ò²¾ÍÊÇ˵£¬ share/doc/PORTNAME ÔÚ×°Ïäµ¥ÖÐĬÈÏÇé¿öÏ»áÌæ»»µô %%DOCSDIR%%£¬ µÈµÈ¡£ (¸ü¶àµÄ pkg-plist ´ú»»¿ÉÒÔÔÚ ÕâÀï ÕÒµ½¡£)

¡¡¡¡ËùÓзÇÎÞÌõ¼þ°²×°µÄÎĵµÎļþºÍĿ¼£¬ ¶¼Ó¦ÔÚ pkg-plist ³öÏÖ£¬ ²¢ÇÒʹÓà %%PORTDOCS%% ǰ׺£¬ ÀýÈ磺

%%PORTDOCS%%%%DOCSDIR%%/AUTHORS
%%PORTDOCS%%%%DOCSDIR%%/CONTACT
%%PORTDOCS%%@dirrm %%DOCSDIR%%

¡¡¡¡Èç¹û²»Ï£ÍûÔÚ pkg-plist ÖÐÖð¸öÁоÙÎĵµÎļþ£¬ port Ò²¿ÉÒÔ½« PORTDOCS ÉèÖÃΪһ×éÎļþ¼°Æä shell glob ģʽ£¬ ͨ¹ýÕâÖÖ·½Ê½À´¼ÓÈëµ½×îÖÕµÄ×°Ïäµ¥ÖС£ ÕâЩÃû×ÖÓ¦ÊÇÏà¶ÔÓÚ DOCSDIR µÄ¡£ Òò´Ë£¬ ʹÓÃÁË PORTDOCS£¬ ²¢½«Îĵµ°²×°µ½·Ç±ê׼λÖÃµÄ port£¬ Ó¦ÏàÓ¦µØÉèÖà DOCSDIR¡£ Èç¹ûÓÐÔÚ PORTDOCS ÖÐÁгöĿ¼£¬ »òÕßÕâÒ»±äÁ¿ÖÐµÄ glob ģʽƥÅäµ½ÁËĿ¼£¬ ÔòÕû¸ö×ÓÊ÷ÖеÄÎļþºÍĿ¼£¬ ¶¼½«±»×¢²áµ½×îÖÕµÄ×°Ïäµ¥ÖС£ Èç¹û¶¨ÒåÁË NOPORTDOCS£¬ Ôò PORTDOCS Öж¨ÒåµÄÎļþºÍĿ¼½«²»±»°²×°»ò¼ÓÈë×°Ïäµ¥¡£ ÊÇ·ñ°²×°Îĵµµ½Ç°ÃæËù˵µÄ PORTDOCS ÈÔÈ¡¾öÓÚ port ±¾Éí¡£ ÏÂÃæÊÇÒ»¸öµäÐ͵ÄʹÓà PORTDOCS µÄÀý×Ó£º

PORTDOCS=       README.* ChangeLog docs/*

×¢Òâ: Óë PORTDOCS ÀàËÆ£¬ ¶ÔÓ¦ÓÚ DATADIR ºÍ EXAMPLESDIR µÄ±äÁ¿·Ö±ðÊÇ PORTDATA ºÍ PORTEXAMPLES¡£

ÄúÒ²¿ÉÒÔʹÓà pkg-message Õâ¸öÎļþ£¬ À´ÔÚ°²×°Ê±ÏÔʾһЩÐÅÏ¢¡£ ²Î¼û ¹ØÓÚʹÓà pkg-message µÄÕâÒ»½Ú ÒÔÁË½â½øÒ»²½µÄÏêÇé¡£ ÐèҪ˵Ã÷µÄÊÇ£¬ ²¢²»ÐèÒª°Ñ pkg-message ¼Óµ½ pkg-plist ÖС£


5.14.5 ×ÓĿ¼

¡¡¡¡¾¡¿ÉÄÜÈà port ½«Ëü´´½¨µÄÎļþ£¬ ·ÅÖõ½ PREFIX ÖÐÕýÈ·µÄλÖᣠһЩ port »á°Ñ¸÷ʽ¸÷ÑùµÄ¶«Î÷»ìÔÚÒ»Æð£¬ ²¢·Åµ½Ò»¸öͬÃûµÄĿ¼ÖУ¬ ÕâÊDz»¶ÔµÄ¡£ ÁíÍ⣬ Ðí¶à port »á°Ñ³ýÁË¿ÉÖ´ÐÐÎļþ¡¢ Í·ÎļþºÍÁª»úÊÖ²áÖ®ÍâµÄËùÓÐÎļþ£¬ È«¶¼Ò»¹ÉÄԵطŵ½ lib ÖУ¬ ÕâÔÚºÍ BSD ÅäºÏʹÓÃʱ»áÓÐÎÊÌâ¡£ ¶àÊýÎļþ£¬ Ó¦±»·Åµ½ÏÂÁÐλÖÃÖ®Ò»£º etc (°²×°/ÅäÖÃÎļþ)¡¢ libexec (ÓÉϵͳÄÚ²¿µ÷ÓõĿÉÖ´ÐÐÎļþ)¡¢ sbin (Ϊ³¬¼¶Óû§/¹ÜÀíÔ±ÌṩµÄ¿ÉÖ´ÐÐÎļþ)¡¢ info (ÓÃÓÚ info ä¯ÀÀÆ÷µÄÎĵµ) »ò share (ƽ̨ÎÞ¹ØµÄÆäËüÎļþ)¡£ Çë²Î¼û hier(7) ÒÔÁË½â½øÒ»²½µÄÏêÇ飻 Õë¶Ô /usr µÄÄÇЩ¹æÔò£¬ ͬÑùÒ²ÊÊÓÃÓÚ /usr/local¡£ ÀýÍâÇé¿öÊÇÄÇЩÐèÒªºÍ USENET ¡°news¡± ´ò½»µÀµÄ port£¬ ËüÃÇ¿ÉÒÔÑ¡Ôñ²ÉÓà PREFIX/news ×÷ΪÎļþµÄÄ¿µÄµØ¡£


µÚ6Õ ¡¡ÌØÊâÇé¿ö

¡¡¡¡ÓÐһЩÄúÔÚ´´½¨portʱµÄÌØÊâÇé¿ö£¬ÎÒÃÇÔÚÕâÀïÌáһϡ£


6.1 ¹²Ïí¿â

¡¡¡¡Èç¹ûÄúµÄport°²×°ÁËÒ»¸ö»ò¶à¸ö¹²Ïí¿â,ÄÇôÇ붨ÒåÒ»¸ö USE_LDCONFIG make ±äÁ¿£¬ ÔÚpost-install±ê¼Ç°ÑËü×¢²á½ø¹²Ïí¿â »º³åʱ»áµ÷ÓÃbsd.port.mkÈ¥ÔËÐÐ ${LDCONFIG} -mÀ´Ö¸ÏòпâµÄ°²×°Ä¿Â¼¡£ (ͨ³£ÊÇ PREFIX/lib) ͬÑù£¬ÄúÒ²¿ÉÒÔÊʵ±µÄÔÚÄúµÄ pke-plistÎļþ Öж¨ÒåÒ»×é@exec /sbin/ldconfig -m ºÍ@unexec /sbin/ldconfig -R£¬ ÄÇôÓû§¿ÉÒÔÔÚ°²×°ºóÂíÉÏ ¾ÍÄÜʹÓ㬲¢ÇÒÔÚÐ¶ÔØÈí¼þ°üºóϵͳҲ²»»áÈÏΪÕâЩ¹²Ïí¿âÈÔÈ»´æÔÚ¡£

USE_LDCONFIG= yes

¡¡¡¡Èç¹ûÄúÐèÒª°Ñ¹²Ïí¿â°²×°ÔÚȱʡµÄλÖÃÖ®Í⣬ ¿ÉÒÔͨ¹ý¶¨Òå make ±äÁ¿ USE_LDCONFIG À´¸Ä±äĬÈϵݲװ·¾¶£¬ Ëü°üº¬°²×°¹²Ïí¿âµÄĿ¼Áбí ÀýÈ磺 Èç¹ûÄúµÄ¹²Ïí¿â°²×°µ½ PREFIX/lib/foo ºÍ PREFIX/lib/bar directoriesĿ¼£¬Äú¿ÉÒÔÔÚÄúµÄ MakefileÖÐÕâÑùÉèÖÃ:

USE_LDCONFIG= ${PREFIX}/lib/foo ${PREFIX}/lib/bar

¡¡¡¡ÇëÎñ±Ø×Ðϸ¼ì²é£¬ ͨ³£ÕâÊÇÍêÈ«²»±ØÒªµÄ£¬ »òÕß¿ÉÒÔͨ¹ý -rpath »òÔÚÁ¬½ÓʱÉèÖà LD_RUN_PATH À´±ÜÃâ (²Î¼û lang/moscow_ml ¸ø³öµÄÀý×Ó)£¬ »òÕßÓÃÒ»¸ö shell ·â×°³ÌÐòÀ´ÔÚÖ´ÐпÉÖ´ÐÐÎļþ֮ǰÉèÖà LD_LIBRARY_PATH£¬ ÀàËÆ www/seamonkey ÄÇÑù¡£

¡¡¡¡µ±ÔÚ 64-λϵͳÉϰ²×° 32-λ µÄº¯Êý¿âʱ£¬ ÇëʹÓà USE_LDCONFIG32¡£

¡¡¡¡¾¡Á¿½«¹²Ïí¿â°æ±¾ºÅ±£³ÖΪ libfoo.so.0 ÕâÑùµÄ¸ñʽ¡£ ÎÒÃǵÄÔËÐл·¾³Á¬½ÓÆ÷Ö»»á¼ì²éÖ÷ (µÚÒ»¸ö) °æ±¾Êý×Ö¡£

¡¡¡¡Èç¹ûÔÚ¸üРport ʱÉý¼¶ÁËÆä¿âµÄÖ÷°æ±¾ºÅ£¬ ÔòÆäËüËùÓÐÁ¬½ÓÁËÊÜÓ°ÏìµÄ¿âµÄ port µÄ PORTREVISION ¶¼Ó¦µÝÔö£¬ ÒÔÇ¿ÖÆËüÃDzÉÓÃа汾µÄ¿âÖØÐ±àÒë¡£


6.2 Ports µÄ·¢ÐÐÏÞÖÆ

¡¡¡¡ÖÚ¶àЭÒ飬²¢ÇÒÆäÖеÄһЩÖÂÁ¦ÓÚ ÏÞÖÆÔõÑùµÄÓ¦ÓóÌÐòÄܱ»´ò°ü£¬ ÊÇ·ñÄÜÓÃÓÚÏúÊÛÓ®ÀûµÈµÈ¡£

ÖØÒª: ×öΪһÃûporterÄúÓÐÒåÎñÈ¥ÔĶÁÈí¼þµÄЭÒé ²¢ÇÒÈ·±£FreeBSD ÏîÄ¿²»±ØÎªÍ¨¹ýFTP/HTTP »òCD-ROMÖØÐ·¢²¼Ô´Âë»ò±àÒëµÄ¶þ½øÖƶø½âÊÍ Ê²Ã´¡£Èç¹ûÓÐÈκÎÒÉÎÊ£¬ ÇëÁªÏµ FreeBSD ports ÓʼþÁÐ±í¡£

¡¡¡¡´¦ÓÚÕâÖÖÇé¿ö£¬¾Í¿ÉÒÔÉèÖÃÒÔÏÂÃèÊö µÄ±äÁ¿¡£


6.2.1 NO_PACKAGE (½ûÖ¹±àÒë½á¹û´ò°ü)

¡¡¡¡Õâ¸ö±äÁ¿±íʾÎÒÃÇ¿ÉÄܲ»ÄÜÉú³ÉÕâ¸öÓ¦Óà ³ÌÐòµÄ¶þ½øÖÆÎļþ¡£ÀýÈ磬ËûµÄЭÒé²»ÔÊÐí ¶þ½øÖÆÎļþµÄÔٴη¢ÐУ¬»òÕßËû¿ÉÄܽûÖ¹´Ó ²¹¶¡¹ýµÄÔ´´úÂë´ò°üµÄ·¢ÐС£

¡¡¡¡²»¹ÜÔõôÑù£¬portµÄ DISTFILES ¿ÉÒÔ ËæÒâµÄ¾µÏñµ½FTP/HTTP¡£³ý·ÇNO_CDROM ±äÁ¿Ò²±»ÉèÖã¬Èí¼þ°üÒ²¿ÉÒÔ·¢ÐÐÔÚÒ»ÕÅCD-ROM £¨»òÀàËÆµÄý½éÉÏ£©¡£

¡¡¡¡NO_PACKAGEÒ²ÄÜÓÃÔÚµ±¶þ½øÖưü ²»ÊǷdz£ÓÐÓ㬲¢ÇÒÕâ¸öÓ¦ÓÃÈí¼þ¾­³£Òª ´ÓÔ´´úÂë±àÒë¡£ÀýÈ磺µ±Õâ¸öÓ¦ÓÃÈí¼þÔÚ ±àÒëµÄʱºòÒªÔÚÅäÖÃÐÅÏ¢ÖÐÖ¸¶¨Ìض¨µÄÓ²¼þ ´úÂëʱ£¬¿ÉÒÔÉèÖÃNO_PACKAGE¡£

¡¡¡¡NO_PACKAGEÓ¦¸ÃÉèÖóÉ×Ö·û´® À´ÃèÊöΪʲôÕâ¸öÈí¼þ ²»ÄÜ´ò°ü¡£


6.2.2 NO_CDROM (½ûÖ¹ÒÔ CDROM ·¢ÐÐÔ¤±àÒë°ü)

¡¡¡¡Õâ¸ö±äÁ¿½ö½öÖ¸³öËäÈ»ÎÒÃÇÔÊÐí Éú³É¶þ½øÖưü£¬µ«Ò²ÐíÎÒÃǼȲ»ÄܰÑÕâ¸ö Èí¼þ°üÒ²²»ÄܰÑportµÄDISTFILES ·ÅÔÚ¹âÅÌ£¨»òÀàËÆµÄý½é£©ÉÏÏúÊÛ¡£µ«²»¹ÜÔõôÑù£¬ ¶þ½øÖưüºÍportµÄDISTFILES ¿ÉÒÔ´ÓFTP/HTTPÉÏ»ñµÃ¡£

¡¡¡¡Èç¹ûÕâ¸ö±äÁ¿ºÍ NO_PACKAGEÒ»Æð±»ÉèÖ㬠ÄÇôÕâ¸öportµÄDISTFIELS ½«Ö»ÄÜ´ÓFTP/HTTPÉÏ»ñµÃ¡£

¡¡¡¡NO_CDROM Ó¦¸Ã±»ÉèÖóÉÒ»¸ö×Ö·û´® À´ÃèÊöΪʲôÕâ¸öport²»ÄÜÖØÐ·¢²¼ÔÚCD-ROMÉÏ¡£ ÀýÈ磺Èç¹ûÕâ¸öportµÄЭÒé½ö½öÊÇÓÃÓÚ¡°·ÇÉÌÒµ»î¶¯¡± ,ÄÇôÕâ¸ö±äÁ¿¾ÍÄÜÉèÖÃÁË¡£


6.2.3 NOFETCHFILES (²»×Ô¶¯×¥È¡Ö¸¶¨µÄÎļþ)

¡¡¡¡ÔÚ NOFETCHFILES ±äÁ¿Öж¨ÒåµÄÎļþ£¬ ²»»á×Ô¶¯´Ó MASTER_SITES ץȡ¡£ Ò»ÖÖµäÐ͵ÄÓÃÀýÊÇ£¬ ʹÓÃÀ´×Ôij¸öÈí¼þ¹©Ó¦ÉÌÌṩµÄ CD-ROM ÉϵÄÎļþ¡£

¡¡¡¡ÓÃÓÚ¼ì²éÔÚ MASTER_SITES ÉÏÊÇ·ñ°üº¬ÁËËùÐèÎļþµÄ¹¤¾ß£¬ Ó¦ºöÂÔÕâЩÎļþ£¬ ¶ø²»ÊDZ¨¸æËüÃDz»´æÔÚ¡£


6.2.4 RESTRICTED (½ûÖ¹ÈκÎÐÎʽµÄÔÙ·Ö·¢)

¡¡¡¡Èç¹ûÓ¦ÓóÌÐò¼È²»ÔÊÐí¾µÏñÆä DISTFILES£¬ Ò²²»ÔÊÐí·¢²¼ÆäÔ¤±àÒë°æ±¾µÄ°ü£¬ ÉèÖÃËü¾Í¿ÉÒÔÁË¡£

¡¡¡¡NO_CDROM »ò NO_PACKAGE ²»Ó¦Óë RESTRICTED ͬʱÉèÖ㬠ÒòΪËü°üº¬ÁËÕâЩÇéÐΡ£

¡¡¡¡RESTRICTED Ó¦ÉèÖÃΪһ¸ö˵Ã÷ port ΪºÎ²»ÄÜ·¢²¼µÄ´®¡£ µäÐÍÇé¿ö¿ÉÄÜÊÇÓÉÓÚ port °üº¬ÁËרÓеÄÈí¼þ£¬ Òò¶øÓû§ÐèÒª×ÔÐÐÏÂÔØ DISTFILES£¬ ¿ÉÄÜÊÇ×¢²á»òÕßͬÒâijһ EULA µÄÌõ¿î¡£


6.2.5 RESTRICTED_FILES (½ûֹijЩÎļþµÄÔÙ·Ö·¢)

¡¡¡¡µ±ÉèÖÃÁË RESTRICTED »ò NO_CDROM ʱ£¬ Õâ¸ö±äÁ¿»áĬÈÏÉèÖÃΪ ${DISTFILES} ${PATCHFILES}£¬ ·ñÔòËü»áΪ¿Õ¡£ Èç¹ûÖ»ÓÐijЩԴÂë°üÎļþÊÇÊÜÏ޵ģ¬ Ôò¿ÉÒÔÓÃÕâ¸ö±äÁ¿À´Ö¸Ã÷ËüÃÇ¡£

¡¡¡¡×¢Ò⣬ port committer Ó¦¸ÃÔÚ /usr/ports/LEGAL ÖÐΪÿһ¸öÔ´Âë°üÎļþ׫д¶ÔÓ¦µÄÏîÄ¿£¬ ²¢½éÉÜÕâЩÏÞÖÆµÄÔ­Òò¡£


6.3 Áª±à»úÖÆ

6.3.1 Ports µÄ²¢ÐÐÁª±à

¡¡¡¡FreeBSD ports ¿ò¼ÜÖ§³ÖʹÓöà¸ö make ×Ó½ø³ÌÀ´½øÐв¢ÐбàÒ룬 ÔÚ SMP ÉÏÕâ¿ÉÒÔÈ«ÃæµØÀûÓÃϵͳµÄ CPU ¼ÆËãÄÜÁ¦£¬ Áî port µÄÁª±à¹ý³Ì¸ü¿ì¡¢ ¸üÓÐЧÂÊ¡£

¡¡¡¡Ä¿Ç°ÕâÊÇͨ¹ýÏòÔ­×÷ÕߵĴúÂë´«µÝ make(1) ²ÎÊý -jX À´ÊµÏֵġ£ Òź¶µÄÊÇ£¬ ²¢²»ÊÇËùÓÐµÄ port ¶¼Äܹ»ºÜºÃµØ´¦ÀíÕâ¸öÑ¡Ïî¡£ Òò´Ë£¬ ±ØÐëͨ¹ýÃ÷È·µØÔÚ Makefile ÖÐÖ¸¶¨ MAKE_JOBS_SAFE=yes À´ÆôÓÃÕâÒ»¹¦ÄÜ¡£

¡¡¡¡´Ó port ¼à»¤È˵ĽǶȻ¹ÓÐÒ»¸ö¿ØÖƵķ½·¨ÊÇÉèÖà MAKE_JOBS_UNSAFE=yes ±äÁ¿¡£ Õâ¸ö±äÁ¿Ö÷ÒªÊÇÓÃÓÚÒÑÖª²»ÄÜÓë -jX ÅäºÏʹÓÃµÄ port£¬ ¼´Ê¹Óû§ÔÚ /etc/make.conf Öж¨ÒåÁË FORCE_MAKE_JOBS=yes ±äÁ¿£¬ ϵͳҲ²»»áʹÓò¢ÐбàÒë¡£


6.3.2 make¡¢ gmake£¬ ÒÔ¼° imake

¡¡¡¡Èç¹û port Óõ½ÁË GNU make£¬ Ó¦ÉèÖà USE_GMAKE=yes¡£

±í 6-1. Óë gmake ÓÐ¹ØµÄ port ±äÁ¿

±äÁ¿ ÒâÒå
USE_GMAKE ´Ë port ÐèҪʹÓà gmake À´Íê³ÉÁª±à¹ý³Ì¡£
GMAKE ²»ÔÚ PATH ÖÐʱ£¬ gmake µÄÍêÕû·¾¶¡£

¡¡¡¡¶ÔÓÚ X Ó¦ÓóÌÐòµÄ port£¬ Èç¹ûËüʹÓà imake ¸ù¾Ý Imakefile ÎļþÀ´Éú³É Makefile£¬ ÔòÓ¦ÉèÖà USE_IMAKE=yes¡£ Õâ»áʹÁª±à¹ý³ÌÖеÄÅäÖà (configure) ½×¶Î×Ô¶¯Ö´ÐÐ xmkmf -a¡£ Èç¹û -a ±êÖ¾»á¸øÄúµÄ port ´øÀ´Âé·³£¬ ÔòÐèÉèÖà XMKMF=xmkmf¡£ Èç¹û port Óõ½ÁË imake µ«²¢²»Ê¹Óà install.man target£¬ ÔòÓ¦ÉèÖà NO_INSTALL_MANPAGES=yes¡£

¡¡¡¡Èç¹û port Ô´ÎļþµÄ Makefile µÄÖ÷Áª±à target ÊÇ all ÒÔÍâµÄÃû×Ö£¬ Ó¦¶ÔÓ¦µØÉèÖà ALL_TARGET¡£ ¶ÔÓÚ install ¶øÑÔ£¬ ¶ÔÓ¦µÄ±äÁ¿ÊÇ INSTALL_TARGET¡£


6.3.3 configure ½Å±¾

¡¡¡¡¼ÙÈç port ʹÓà configure ½Å±¾À´´Ó Makefile.in Éú³É Makefile Îļþ£¬ ÐèÒªÉèÖà GNU_CONFIGURE=yes¡£ Èç¹ûÏ£Íû´«¶îÍâµÄ²ÎÊý¸ø configure ½Å±¾ (ĬÈϲÎÊýΪ --prefix=${PREFIX} --infodir=${PREFIX}/${INFO_PATH} --mandir=${MANPREFIX}/man --build=${CONFIGURE_TARGET})£¬ Ӧͨ¹ý CONFIGURE_ARGS À´Ö¸¶¨ÕâЩ²ÎÊý¡£ ÀàËÆµØ£¬ ¿ÉÒÔͨ¹ý CONFIGURE_ENV ±äÁ¿À´´«µÝһЩ»·¾³±äÁ¿¡£

¡¡¡¡Èç¹ûÄúµÄÈí¼þ°üʹÓà GNU configure£¬ ¶øÉú³ÉµÄ¿ÉÖ´ÐÐÎļþÃüÃû·½Ê½ ¡°¹ÖÒ족 Èç i386-portbld-freebsd4.7-Ó¦ÓóÌÐòÃû£¬ ÔòÐèÒª¸ü½øÒ»²½µØÍ¨¹ý¸Ä±ä CONFIGURE_TARGET ±äÁ¿À´°´ÕÕ½Ïа汾µÄ autoconf Éú³ÉµÄ½Å±¾ËùÏ£ÍûµÄ·½Ê½Ö¸¶¨ target¡£ Æä·½·¨ÊÇ£¬ ½ôËæ Makefile ÖÐ GNU_CONFIGURE=yes Ò»ÐÐÖ®ºó¼ÓÈ룺

¡¡¡¡ CONFIGURE_TARGET=--build=${MACHINE_ARCH}-portbld-freebsd${OSREL}

±í 6-2. ÓÃÓÚÓõ½ÁË configure ½Å±¾µÄ port µÄ±äÁ¿

±äÁ¿ ÒâÒå
GNU_CONFIGURE ´Ë port ÐèÒªÓà configure ½Å±¾À´×¼±¸Áª±à¡£
HAS_CONFIGURE Óë GNU_CONFIGURE ÀàËÆ£¬ µ«Ä¬È쵀 configure target ²¢²»¼ÓÈë CONFIGURE_ARGS¡£
CONFIGURE_ARGS Ï£Íû´«¸ø configure ½Å±¾µÄ¶îÍâ²ÎÊý¡£
CONFIGURE_ENV Ï£ÍûÔÚÖ´ÐÐ configure ½Å±¾Ê±ÉèÖõĻ·¾³±äÁ¿¡£
CONFIGURE_TARGET Ìæ»»Ä¬È쵀 configure target¡£ ÆäĬÈÏÖµÊÇ ${MACHINE_ARCH}-portbld-freebsd${OSREL}¡£

6.3.4 ʹÓà scons

¡¡¡¡Èç¹ûÄúµÄ port ʹÓà SCons£¬ ¾ÍÐèÒª¶¨Òå USE_SCONS=yes ÁË¡£

±í 6-3. ʹÓà scons µÄ port »áÓõ½µÄ±äÁ¿

±äÁ¿ º¬Òå
SCONS_ARGS µ±Ç° port Ï£Íû´«¸ø SCons »·¾³µÄ²ÎÊý¡£
SCONS_BUILDENV Ï£ÍûÔÚϵͳ»·¾³ÖÐÉèÖõıäÁ¿¡£
SCONS_ENV Ï£ÍûÔÚ SCons »·¾³ÖÐÉèÖõıäÁ¿¡£
SCONS_TARGET ´«µÝ¸ø SCons µÄ×îºóÒ»¸ö²ÎÊý£¬ ÀàËÆÓÚ MAKE_TARGET¡£

¡¡¡¡Èç¹ûÏ£ÍûÈõÚÈý·½µÄ SConstruct ×ðÖØÍ¨¹ý SCONS_ENV (ÆäÖÐ×îÖØÒªµÄÊÇ CC/CXX/CFLAGS/CXXFLAGS ÅäÖÃ) ´«¸ø Scons µÄÅäÖ㬠ÔòÐèÒª¶Ô SConstruct ½øÐÐÐ޸ģ¬ ʹÁª±àµÄ Environment °´ÏÂÁз½Ê½½¨Á¢£º

env = Environment(**ARGUMENTS)

¡¡¡¡Æäºó£¬ ¿ÉÒÔͨ¹ý env.Append ºÍ env.Replace À´¶ÔËü½øÐÐÐ޸ġ£


6.4 ÀûÓÃ GNU autotools

6.4.1 ÈëÃÅ

¡¡¡¡ÖÚ¶à GNU autotools ÌṩÁËÒ»ÖÖÔÚ¶àÖØ²Ù×÷ϵͳºÍ»úÆ÷¼Ü¹¹Ö®ÉÏÁª±àÈí¼þµÄ³éÏó»úÖÆ¡£ ÔÚ Ports Collection ÖУ¬ port ¿ÉÒÔͨ¹ý¼òµ¥µÄ·½·¨À´Ê¹ÓÃÕâЩ¹¤¾ß£º

USE_AUTOTOOLS= ¹¤¾ß:°æ±¾[:²Ù×÷] ...

¡¡¡¡×«Ð´±¾Êéʱ£¬ ¹¤¾ß ¿ÉÒÔÉèÖÃΪ libtool¡¢ libltdl¡¢ autoconf¡¢ autoheader¡¢ automake »ò aclocal Ö®Ò»¡£

¡¡¡¡°æ±¾ ÓÃÀ´Ö¸¶¨Ï£ÍûʹÓõŤ¾ßµÄÌØ¶¨°æ±¾ (²Î¼û devel/{automake,autoconf,libtool}[0-9]+ ÒÔÁ˽âÓÐЧµÄ°æ±¾ºÅ)¡£

¡¡¡¡²Ù×÷ ÊÇÒ»¸ö¿ÉÑ¡µÄÀ©Õ¹Ñ¡Ï ÓÃÓÚÐÞ¸ÄÈçºÎʹÓù¤¾ß¡£

¡¡¡¡¿ÉÒÔͬʱָ¶¨¶à¸ö²»Í¬µÄ¹¤¾ß£¬ ¿ÉÒÔÔÚÒ»ÐÐÖÐÖ¸¶¨£¬ Ò²¿ÉÒÔÓà Makefile µÄ += ½á¹¹¡£

¡¡¡¡×îºó£¬ ¿ÉÒÔʹÓÃÒ»¸öÌØÊâµÄÃûΪ autotools µÄ¹¤¾ß£¬ Ëü»á°²×°È«²¿¿ÉÓÃµÄ autotools °æ±¾£¬ ÒÔÊÊÓ¦¿çƽ̨¿ª·¢µÄÐèÒª¡£ Äú¿ÉÒÔͨ¹ý°²×° devel/autotools port À´´ïµ½ÕâһĿµÄ¡£


6.4.2 libtool

¡¡¡¡Ê¹Óà GNU Áª±à¿ò¼ÜµÄ¹²Ïí¿âͨ³£»áʹÓà libtool À´µ÷Õû¹²Ïí¿âµÄ±àÒëºÍ°²×°£¬ ÒÔ±ãÓëËùÔËÐеIJÙ×÷ϵͳÏàÆ¥Åä¡£ ͨ³£µÄ×ö·¨ÊÇʹÓÃÓ¦ÓóÌÐòËù¸½´øµÄ libtool ¸±±¾¡£ Èç¹ûÐèҪʹÓÃÍⲿµÄ libtool£¬ Ôò¿ÉÒÔʹÓà Ports Ì×¼þÌṩµÄ°æ±¾£º

USE_AUTOTOOLS= libtool:°æ±¾[:env]

¡¡¡¡Èç¹û²»Ê¹ÓöîÍâµÄ²Ù×÷·û£¬ libtool:°æ±¾ ±íʾϣÍûÁª±à¿ò¼ÜʹÓà configure ½Å±¾À´¶ÔϵͳËù°²×°µÄ libtool ½øÐÐÐÞ²¹¡£ Õâ»á°µº¬µØ¶¨Òå GNU_CONFIGURE¡£ ¸ü½øÒ»²½£¬ Áª±à¿ò¼Ü»¹»áÉèÖÃһϵÁÐ make ºÍ shell ±äÁ¿ÓÃÓÚ port ºóÐøµÄ²Ù×÷¡£ Çë²Î¼û bsd.autotools.mk ÁË½â½øÒ»²½µÄÏêÇé¡£

¡¡¡¡Èç¹ûÖ¸¶¨ÁË :env ²Ù×÷·û£¬ Ôò±íʾֻÉèÖû·¾³£¬ ¶øÌø¹ýÆäËûµÄ²Ù×÷¡£

¡¡¡¡×îºó£¬ LIBTOOLFLAGS ºÍ LIBTOOLFILES ¿ÉÒÔÓÃÀ´Ìæ»»×î³£Ð޸ĵIJÎÊý£¬ ÒÔ¼°½«±» libtool ÐÞ²¹µÄÎļþ¡£ ¶àÊý port ²»ÐèÒªÕâÑù×ö¡£ Çë²Î¼û bsd.autotools.mk ÒÔÁË½â½øÒ»²½µÄϸ½Ú¡£


6.4.3 libltdl

¡¡¡¡Ò»Ð© ports »áʹÓà libltdl ¿â£¬ ºóÕßÊÇ libtool Èí¼þ°üµÄÒ»²¿·Ö¡£ ʹÓÃÕâ¸ö¿â²¢²»Òâζ×űØÐëʹÓà libtool ±¾Éí£¬ Òò´ËÌṩÁËÁíÒ»×é½á¹¹¡£

USE_AUTOTOOLS= libltdl:°æ±¾

¡¡¡¡Ä¿Ç°£¬ ÕâÒ»ÉèÖÃËù×öµÄÈ«²¿¹¤×÷Êǽ« LIB_DEPENDS ÉèÖÃΪÊʵ±µÄ libltdl port£¬ ²¢×÷ΪһÏî·½±ãµÄ¹¦ÄÜ£¬ ЭÖú¿ª·¢ÈËÔ±Ïû³ýÔÚ USE_AUTOTOOLS ¿ò¼ÜÒÔÍâµÄ£¬ ¶ÔÓÚ autotools port µÄÒÀÀµ¡£ Õâ¸ö¹¤¾ß²¢²»ÌṩÆäËüµÄ²Ù×÷·û¡£


6.4.4 autoconf ºÍ autoheader

¡¡¡¡Ä³Ð© port ²¢Ã»ÓÐÖ±½ÓÌṩ configure ½Å±¾£¬ µ«°üº¬ÁË×÷Ϊ autoconf Ä£°åµÄ configure.ac Îļþ¡£ ¿ÉÒÔÓÃÏÂÁÐÉèÖÃÀ´ÒªÇó autoconf ´´½¨ configure ½Å±¾£¬ ²¢Ê¹Óà autoheader À´Îª configure ½Å±¾´´½¨Ä£°åÍ·Îļþ¡£

USE_AUTOTOOLS=	autoconf:°æ±¾[:env]

¡¡¡¡ÒÔ¼°

USE_AUTOTOOLS=	autoheader:°æ±¾

¡¡¡¡ÉÏÊöÉèÖûᰵº¬Ê¹Óà autoconf:°æ±¾¡£

¡¡¡¡¶ÔÓÚ libtool£¬ ÉèÖÃÓëÇ°ÃæÀàËÆ¡£ Èç¹ûÖ¸¶¨¿ÉÑ¡µÄ :env ²Ù×÷·û£¬ Ôò±íʾֻÉèÖÃÓÃÓÚºóÐø¹¤×÷µÄ»·¾³¡£ Èç¹û²»Ö¸¶¨£¬ Ôò»á¶Ô port ½øÐÐÏàÓ¦µÄÐÞ²¹ºÍÖØÐÂÅäÖá£

¡¡¡¡ÆäËüµÄ¿ÉÑ¡±äÁ¿£¬ Èç AUTOCONF_ARGS ºÍ AUTOHEADER_ARGS ¿ÉÒÔͨ¹ý port µÄ Makefile À´ÏÔʽµØÖ¸¶¨Ìæ»»¡£ ÀàËÆ libtool£¬ ¶àÊý port ²¢²»ÐèÒªÕâÑù×ö¡£


6.4.5 automake ºÍ aclocal

¡¡¡¡Ä³Ð©Èí¼þ°üÖ»ÌṩÁË Makefile.am Îļþ¡£ ÕâЩÎļþ±ØÐëÊ×ÏÈÓà automake ת»»Îª Makefile.in ²¢Ê¹Óà configure À´Éú³Éʵ¼ÊµÄ Makefile¡£

¡¡¡¡ÀàËÆµØ£¬ ż¶û»áÓÐһЩÈí¼þ°ü²»ÌṩÁª±àËùÐèµÄ aclocal.m4 Îļþ¡£ ÕâЩÎļþ¿ÉÒÔͨ¹ýʹÓà aclocal À´É¨Ãè configure.ac »ò configure.in ×Ô¶¯Éú³É¡£

¡¡¡¡aclocal Óë automake ÓÐºÍ autoheader Óë autoconf ÔÚÇ°ÃæÒ»½ÚÖÐËù½éÉܵÄÏàÀàËÆµÄ¹ØÏµ¡£ aclocal »á°µº¬Ê¹Óà automake£¬ Òò´Ë£º

USE_AUTOTOOLS=	automake:°æ±¾[:env]

¡¡¡¡ºÍ

USE_AUTOTOOLS=	aclocal:°æ±¾

¡¡¡¡Ò²×Ô¶¯°µº¬Ê¹Óà automake:°æ±¾¡£

¡¡¡¡Óë libtool ÀàËÆ£¬ autoconf Èç¹ûʹÓÃÁË¿ÉÑ¡µÄ :env ²Ù×÷·û±íʾ½ö½öÉèÖÃÓÃÓÚºóÐøÊ¹ÓõĻ·¾³£¬ Èç¹û²»ÉèÖ㬠Ôò»á¶Ô port ½øÐÐÖØÐÂÅäÖá£

¡¡¡¡¶ÔÓÚ autoconf ºÍ autoheader ¶øÑÔ£¬ automake ºÍ aclocal ÌṩÁ˶ÔÓ¦µÄ¿ÉÑ¡²ÎÊý±äÁ¿ AUTOMAKE_ARGS ºÍ ACLOCAL_ARGS£¬ Èç¹ûÐèÒªµÄ»°£¬ ¿ÉÒÔÔÚ port µÄ Makefile ÖÐÖ¸¶¨¡£


6.5 ʹÓà GNU gettext

6.5.1 »ù±¾Ó÷¨

¡¡¡¡Èç¹ûÄúµÄ port ÐèҪʹÓà gettext£¬ Ö»Òª½« USE_GETTEXT ÉèÖÃΪ yes£¬ ÄúµÄ port ¾Í»áÔö¼Ó¶Ô devel/gettext µÄÒÀÀµ¡£ USE_GETTEXT Ò²¿ÉÒÔÖ¸¶¨ÎªËùÐèµÄ libintl ¿âµÄ°æ±¾£¬ ËüÊÇ gettext µÄ»ù±¾×é³É²¿·Ö£¬ ¾¡¹ÜÈç´Ë£¬ Ç¿ÁÒ½¨ÒéÄú²»Òª ʹÓÃÕâ¸ö¹¦ÄÜ£º ÄúµÄ port Ó¦ÄÜÓëĿǰ°æ±¾µÄ devel/gettext ÅäºÏ¹¤×÷¡£

¡¡¡¡ÔÚ port ÖÐÏ൱³£¼ûµÄÇé¿öÏ£¬ »áÐèҪͬʱʹÓà gettext ºÍ configure¡£ Ò»°ã¶øÑÔ£¬ GNU configure Äܹ»×Ô¶¯¶¨Î»µ½ gettext¡£ Èç¹ûËüûÓгɹ¦µØÍê³ÉÕâÏ×÷£¬ Ôò¿ÉÒÔͨ¹ýÀàËÆÏÂÃæÕâÑùµÄ CPPFLAGS ºÍ LDFLAGS ½« gettext µÄλÖøæËßËü£º

USE_GETTEXT=    yes
CPPFLAGS+=      -I${LOCALBASE}/include
LDFLAGS+=       -L${LOCALBASE}/lib

GNU_CONFIGURE=  yes
CONFIGURE_ENV=  CPPFLAGS="${CPPFLAGS}" \
                LDFLAGS="${LDFLAGS}"

¡¡¡¡µ±È»£¬ ²»ÐèÒª´«²ÎÊý¸ø configure ʱ£¬ ´úÂë¿ÉÒÔ¸üΪ¼òÁ·£º

USE_GETTEXT=    yes
GNU_CONFIGURE=  yes
CONFIGURE_ENV=  CPPFLAGS="-I${LOCALBASE}/include" \
                LDFLAGS="-L${LOCALBASE}/lib"

6.5.2 ¿ÉÑ¡Ó÷¨

¡¡¡¡Ò»Ð©Èí¼þ²úÆ·ÌṩÁ˽ûÓà NLS µÄÄÜÁ¦£¬ ÀýÈ磬 ÔÚ configure ʱ£¬ Ö¸¶¨ --disable-nls ²ÎÊý¡£ Èç¹ûÄú port µÄÈí¼þÖ§³ÖÕâÖÖÅäÖ㬠ÔòÓ¦¸ù¾Ý WITHOUT_NLS µÄÉèÖÃÀ´ÓÐÌõ¼þµØÊ¹Óà gettext¡£ ¶ÔÓڱȽϼòµ¥ºÍ²»Ì«¸´Ô port£¬ Äú¿ÉÒÔʹÓÃÏÂÁнṹ£º

GNU_CONFIGURE=          yes

.if !defined(WITHOUT_NLS)
USE_GETTEXT=            yes
PLIST_SUB+=             NLS=""
.else
CONFIGURE_ARGS+=        --disable-nls
PLIST_SUB+=             NLS="@comment "
.endif

¡¡¡¡ÄúÒª×öµÄÏÂÒ»¼þÊÂÊǺÏÀíµØ°²ÅÅ×°Ïäµ¥Îļþ£¬ ʹÆä¸ù¾ÝÓû§ÅäÖÃÀ´¾ö¶¨ÊÇ·ñ½«ÏûÏ¢±à¼ (message catalog) Îļþ·ÅÈë×îÖÕµÄ×°Ïäµ¥¡£ Ç°ÃæÒѾ­½éÉÜÁËÔÚ Makefile ÖÐËùÐèµÄд·¨£¬ ÕâÖÖ×ö·¨ÔÚ ¸ß¼¶ pkg-plist Ó÷¨ Õâ½ÚÖнøÐÐÁ˽éÉÜ¡£ ¼òµ¥µØËµ£¬ ÔÚ pkg-plist ÖгöÏÖµÄ %%NLS%% ¾ù»áÔÚ½ûÓà NLS ʱ×Ô¶¯Ì滻Ϊ ¡°@comment ¡±£¬ ·´Ö®ÔòÌæ»»Îª¿Õ´®¡£ ÕâÑù£¬ ÔÚ×îÖÕµÄ×°Ïäµ¥Öдø %%NLS%% µÄÐУ¬ ÔÚ NLS ¹Ø±ÕµÄÇé¿öϾͻá±äΪעÊÍ£¬ ·´Ö®£¬ ÕâЩǰ׺¾Í»á×Ô¶¯É¾µô¡£ ÏÖÔÚÐèÒª×öµÄÊÂÇé¾ÍÊÇ°Ñ %%NLS%% ²åµ½ pkg-plist ÖеÄÏûÏ¢±à¼ÎļþµÄÄÇЩÐпªÍ·£¬ ÀýÈ磺

%%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo
%%NLS%%share/locale/no/LC_MESSAGES/foobar.mo

¡¡¡¡ÔڱȽϸ´ÔÓµÄÇéÐÎÖУ¬ Äú¿ÉÄÜÐèҪʹÓøü¸ß¼¶µÄ¼¼Êõ£¬ ÀýÈç ¶¯Ì¬Éú³É×°Ïäµ¥ µÈ¡£


6.5.3 ´¦ÀíÏûÏ¢±à¼Ŀ¼

¡¡¡¡ÔÚ°²×°ÏûÏ¢±à¼Îļþʱ»¹ÓÐÒ»¸öÐèҪעÒâµÄµØ·½¡£ ÕâЩÎļþ»á·Åµ½ LOCALBASE/share/locale ÏÂÓëÓïÑÔ¶ÔÓ¦µÄĿ¼ÖУ¬ ÕâЩĿ¼һ°ãÄúµÄ port ²»ÐèÒª´´½¨ºÍɾ³ý¡£ ×î³£ÓõÄÓïÑÔµÄĿ¼ÒѾ­ÔÚ /etc/mtree/BSD.local.dist ÖÐÁгö£» Ò²¾ÍÊÇ˵£¬ ËüÃÇÊÇ»ù±¾ÏµÍ³µÄÒ»²¿·Ö¡£ ÆäËûһЩÓïÑÔµÄĿ¼£¬ ÔòÓÉ devel/gettext ¿ØÖÆ¡£ Äú×îºÃ²é¿´Ò»Ï pkg-plist£¬ ÒÔÈ·¶¨ÊÇ·ñÕýÔÚ°²×°Ä³ÖÖ²»³£ÓÃÓïÑÔµÄÎļþ¡£


6.6 ʹÓà perl

¡¡¡¡Èç¹û MASTER_SITES ÉèΪ MASTER_SITE_PERL_CPAN£¬ ÔòÓ¦¾¡Á¿°Ñ MASTER_SITE_SUBDIR ÉèÖÃΪ¶¥¼¶Ä¿Â¼µÄÃû×Ö¡£ ÀýÈ磬 ¶Ô p5-Module-Name ¶øÑÔÍÆ¼öµÄÃû×ÖÊÇ Module¡£ Äú¿ÉÒÔÔÚ cpan.org ÕÒµ½¶¥¼¶Ä¿Â¼µÄÃû×Ö¡£ Õâ¿ÉÒÔÈ·±£ÔÚÄ£¿éµÄ×÷Õß·¢Éú±ä»¯Ê±£¬ ±£³Ö port ¼ÌÐø¿ÉÓá£

¡¡¡¡ÒÔÉϹæÔòÓÐÒ»¸öÀýÍ⣬ ¼´¶ÔӦĿ¼²»´æÔÚ»òÔ´Âë°ü²»ÔÚÄǸöĿ¼ÖÐʱ£¬ ÔÊÐíʹÓÃ×÷ÕßµÄ id ×÷Ϊ MASTER_SITE_SUBDIR¡£

¡¡¡¡ËùÓÐÕâЩѡÏî¾ùͬʱ½ÓÊÜ YES ºÍ°æ±¾´®£¬ ÀàËÆ 5.8.0+ ÕâÑùµÄд·¨¡£ ʹÓà YES ±íʾ port Äܹ»ÅäºÏËùÓÐÊÜÖ§³ÖµÄ Perl °æ±¾À´Ê¹ÓᣠÈç¹û port Ö»ÄÜÅäºÏÌØ¶¨°æ±¾µÄ Perl À´Ê¹Ó㬠Ôò¿ÉÒÔÓð汾´®À´±íʾ£¬ ÀýÈç×îµÍ°æ±¾ (Èç 5.7.3+)¡¢ ×î¸ß°æ±¾ (Èç 5.8.0-) »òij¸ö¾ßÌåµÄ°æ±¾ (Èç 5.8.3)¡£

±í 6-4. ÓÃÓÚÓõ½ perl µÄ port µÄ±äÁ¿

±äÁ¿ ÒâÒå
USE_PERL5 ±íʾ port ½« perl 5 ÓÃÓÚÁª±àºÍÔËÐС£
USE_PERL5_BUILD ±íʾ port ½« perl 5 ÓÃÓÚÁª±à¡£
USE_PERL5_RUN ±íʾ port ½« perl 5 ÓÃÓÚÔËÐС£
PERL perl 5 µÄÍêÕû·¾¶£¬ ¿ÉÄÜÊÇϵͳ×Ô´øµÄ£¬ »òÕß´Ó port °²×°£¬ µ«Ã»Óа汾ºÅ¡£ Èç¹ûÄúÐèÒªÔڽű¾ÖÐÌæ»» ¡°#!¡± ÐУ¬ ÔòӦʹÓÃÕâ¸ö±äÁ¿¡£
PERL_CONFIGURE ²ÉÓà Perl µÄ MakeMaker ½øÐÐÅäÖᣠÕâÒ»±äÁ¿Òþº¬ÉèÖà USE_PERL5¡£
PERL_MODBUILD ʹÓà Module::Build ½øÐÐÅäÖᢠÁª±à²¢°²×°¡£ ÕâÒ»±äÁ¿Òþº¬ÉèÖà PERL_CONFIGURE¡£
Ö»¶Á±äÁ¿  
PERL_VERSION ϵͳÖа²×°µÄ perl µÄÍêÕû°æ±¾ (ÀýÈ磬 5.8.9)¡£
PERL_LEVEL ϵͳÖа²×°µÄ perl µÄ°æ±¾ÕûÊýÖµ£¬ ÆäÐÎʽΪ MNNNPP (ÀýÈ磬 500809)¡£
PERL_ARCH perl ±£´æÄ³Æ½Ì¨×¨ÓõĿâµÄλÖᣠĬÈÏֵΪ ${ARCH}-freebsd¡£
PERL_PORT ϵͳÖÐËù°²×°µÄ perl port µÄÃû×Ö (ÀýÈ磬 perl5)¡£
SITE_PERL Õ¾µãרÓÃµÄ perl package °²×°Â·¾¶¡£ ÆäÖµ»á×Ô¶¯¼ÓÈëµ½ PLIST_SUB ÖС£

×¢Òâ: Perl Ä£¿éͨ³£²¢Ã»Óйٷ½ÍøÕ¾£¬ ÕâЩ port Ó¦½« cpan.org ×÷ΪÆä pkg-descr WWW ÐеÄÄÚÈÝ¡£ ÍÆ¼öµÄ URL ¸ñʽΪ http://search.cpan.org/dist/Module-Name/ (±£Áô×îºóµÄбÏß)¡£


6.7 ʹÓà X11

6.7.1 X.Org ×é¼þ

¡¡¡¡ÔÚ Ports Ì×¼þÖÐÌṩµÄ X11 ʵÏÖÊÇ X.Org¡£ Èç¹ûÄúµÄÓ¦ÓóÌÐòÓõ½ÁË X ×é¼þ£¬ ÔòÓ¦½« USE_XORG ÉèΪËùÐèÒªµÄÄÇЩ×é¼þ¡£ Ŀǰ¿ÉÓõÄ×é¼þ°üÀ¨£º

¡¡¡¡bigreqsproto compositeproto damageproto dmx dmxproto evieproto fixesproto fontcacheproto fontenc fontsproto fontutil glproto ice inputproto kbproto libfs oldx printproto randrproto recordproto renderproto resourceproto scrnsaverproto sm trapproto videoproto x11 xau xaw xaw6 xaw7 xaw8 xbitmaps xcmiscproto xcomposite xcursor xdamage xdmcp xevie xext xextproto xf86bigfontproto xf86dgaproto xf86driproto xf86miscproto xf86rushproto xf86vidmodeproto xfixes xfont xfontcache xft xi xinerama xineramaproto xkbfile xkbui xmu xmuu xorg-server xp xpm xprintapputil xprintutil xpr oto xproxymngproto xrandr xrender xres xscrnsaver xt xtrans xtrap xtst xv xvmc xxf86dga xxf86misc xxf86vm.

¡¡¡¡×îеÄÁÐ±í£¬ ¿ÉÒÔÔÚ /usr/ports/Mk/bsd.xorg.mk ÖÐÕÒµ½¡£

¡¡¡¡The Mesa Project ÊÇÒ»¸öÖÂÁ¦ÓÚ×ÔÓÉµÄ OpenGL ʵÏֵļƻ®¡£ Äú¿ÉÒÔʹÓà USE_GL ±äÁ¿À´Èà port ÒÀÀµÆä²»Í¬µÄ×é¼þ¡£ ¿ÉÓõÄÑ¡Ïî°üÀ¨£º glut, glu, glw, glew, gl ºÍ linux¡£ ΪÁËʵÏÖÏòǰ¼æÈÝ£¬ µ±Ê¹Óà yes ʱϵͳ»á×Ô¶¯½«ÆäÓ³ÉäΪ glu¡£

Àý 6-1. ʹÓà USE_XORG µÄÀý×Ó

USE_XORG=   xrender xft xkbfile xt xaw
USE_GL=     glu

¡¡¡¡Ðí¶à ports »á¶¨Òå USE_XLIB£¬ Õâ»áµ¼Ö port ÒÀÀµ 50 ¶à¸ö¶¯Ì¬Á¬½Ó¿â¡£ ÓÉÓÚËü³öÏÖÓÚ X.org Ä£¿é»¯Ö®Ç°£¬ Òò´ËÕâ¸ö±äÁ¿½öΪÏòǰ¼æÈݵÄÔ­ÒòÌṩ£¬ Ð嵀 port ²»Ó¦ÔÙʹÓÃËü¡£

±í 6-5. Óõ½ X µÄ port ¿ÉÒÔʹÓõıäÁ¿

USE_XLIB ´Ë port Óõ½ÁË X ¿â¡£ Òѹýʱ - ÄúӦʹÓà USE_XORG ±äÁ¿ÁгöÓõ½µÄ X.Org ×é¼þ£¬ ¶ø²»ÊÇʹÓÃÕâ¸ö±äÁ¿¡£
USE_IMAKE ´Ë port Óõ½ÁË imake¡£
USE_X_PREFIX Òѹýʱ¡£ ĿǰÆä×÷ÓÃÓë USE_XLIB Ïàͬ£¬ ²¢¿ÉÒÔÖ±½ÓÓúóÕßÌæ»»¡£
XMKMF ÉèÖÃΪ xmkmf µÄÍêÕû·¾¶Ãû£¬ Èç¹ûËü²»ÔÚ PATH Öеϰ¡£ ĬÈÏÖµÊÇ xmkmf -a¡£

±í 6-6. ÓÃÓÚ±íʾ¶Ô X11 ijЩ×é¼þµÄÒÀÀµ¹ØÏµµÄ±äÁ¿

X_IMAKE_PORT ÓÃÒÔÌṩ imake ÒÔ¼°Ðí¶àÆäËüÓÃÓÚÁª±à X11 µÄ¹¤¾ßµÄ port¡£
X_LIBRARIES_PORT ÓÃÒÔÌṩ X11 ¿âµÄ port¡£
X_CLIENTS_PORT ÓÃÒÔÌṩ X ¿Í»§µÄ port¡£
X_SERVER_PORT ÓÃÒÔÌṩ X ·þÎñµÄ port¡£
X_FONTSERVER_PORT ÓÃÒÔÌṩ×ÖÌå·þÎñµÄ port¡£
X_PRINTSERVER_PORT ÓÃÒÔÌṩ´òÓ¡·þÎñµÄ port¡£
X_VFBSERVER_PORT ÓÃÒÔÌṩÔÚÐéÄâÖ¡»º´æ·þÎñ(virtual framebuffer server) µÄ port¡£
X_NESTSERVER_PORT ÓÃÒÔÌṩǶÌ× X ·þÎñµÄ port¡£
X_FONTS_ENCODINGS_PORT ÓÃÒÔΪ×ÖÌåÌṩ±àÂëµÄ port¡£
X_FONTS_MISC_PORT ÓÃÒÔÌṩ¶àÖÖλͼ×ÖÌåµÄ port¡£
X_FONTS_100DPI_PORT ÓÃÒÔÌṩ 100dpi λͼ×ÖÌåµÄ port¡£
X_FONTS_75DPI_PORT ÓÃÒÔÌṩ 75dpi λͼ×ÖÌåµÄ port¡£
X_FONTS_CYRILLIC_PORT ÓÃÒÔÌṩÎ÷Àï¶ûλͼ×ÖÌåµÄ port¡£
X_FONTS_TTF_PORT ÓÃÒÔÌṩ TrueType® ×ÖÌåµÄ port¡£
X_FONTS_TYPE1_PORT ÓÃÒÔÌṩ Type1 ×ÖÌåµÄ port¡£
X_MANUALS_PORT ÓÃÒÔÌá¹©ÃæÏò¿ª·¢ÈËÔ±µÄÁª»úÊÖ²áµÄ port¡£

Àý 6-2. ÔÚ±äÁ¿ÖÐʹÓÃÓë X11 ÓйصıäÁ¿

# ʹÓÃijЩ X11 ¿â²¢ÒÀÀµ×ÖÌå·þÎñºÍÎ÷Àï¶û×ÖÌå¡£
RUN_DEPENDS=   ${LOCALBASE}/bin/xfs:${X_FONTSERVER_PORT} \
               ${LOCALASE}/lib/X11/fonts/cyrillic/crox1c.pcf.gz:${X_FONTS_CYRILLIC_PORT}

USE_XORG=      x11 xpm

6.7.2 ÐèҪʹÓà Motif µÄ port

¡¡¡¡Èç¹ûÄúµÄ port ÐèÒª Motif ¿â£¬ ÔòÓ¦ÔÚ Makefile Öж¨Òå USE_MOTIF¡£ ĬÈ쵀 Motif ʵÏÖÊÇ x11-toolkits/open-motif¡£ Óû§¿ÉÒÔͨ¹ýÉèÖà WANT_LESSTIF ±äÁ¿À´Ñ¡Ôñ x11-toolkits/lesstif ´úÌæËü¡£

¡¡¡¡bsd.port.mk »á½« MOTIFLIB ±äÁ¿ÉèÖÃΪµ½ºÏÊ浀 Motif ¿âµÄÒýÓᣠÇëʹÓò¹¶¡½«Äú port ÖÐ Makefile »ò Imakefile Ìáµ½ Motif ¿âµÄµØ·½¸ÄΪ ${MOTIFLIB}¡£

¡¡¡¡ÓÐÁ½ÖֱȽϳ£¼ûµÄÇé¿ö£º

  • Èç¹û port Öн« Motif ÔÚÆä Makefile »ò Imakefile ±í´ïΪ -lXm£¬ Ôò¼òµ¥µØ½«ÆäÌæ»»Îª ${MOTIFLIB}¡£

  • Èç¹û port ÔÚÆä Imakefile ÖÐʹÓà XmClientLibs£¬ Ôò½«Æä¸ÄΪ ${MOTIFLIB} ${XTOOLLIB} ${XLIB}.

¡¡¡¡×¢Òâ MOTIFLIB (ͨ³£) »áÕ¹¿ªÎª -L/usr/X11R6/lib -lXm »ò /usr/X11R6/lib/libXm.a£¬ ËùÒÔ²»ÐèÒªÔÚÆäǰ¼ÓÈë -L »ò -l¡£


6.7.3 X11 ×ÖÌå

¡¡¡¡Èç¹û port ½«Îª X Window ϵͳ°²×°×ÖÌ壬 ½«ÕâЩ×ÖÌå·Åµ½ LOCALBASE/lib/X11/fonts/local¡£

¡¡¡¡


6.7.4 ͨ¹ý Xvfb À´»ñµÃÐéÄâµÄ DISPLAY

¡¡¡¡Ä³Ð©Ó¦ÓóÌÐò±ØÐëÔÚÓпÉÓÃµÄ X11 ÏÔʾµÄʱºò²ÅÄܳɹ¦±àÒë¡£ µ±±àÒëµÄ»úÆ÷ûÓпØÖÆÌ¨Ê±£¬ Õâ»á´øÀ´ÎÊÌâ¡£ ΪÁ˽â¾öÕâ¸öÎÊÌ⣬ Èç¹û¶¨ÒåÁËÊʵ±µÄ±äÁ¿£¬ Áª±à»ù´¡ÉèÊ©»áÆô¶¯²ÉÓÃÐéÄâÖ¡»º´æµÄ X server¡£ ´Ëʱ£¬ ±àÒë¹ý³ÌÖн«»á´«³ö¿ÉÓÃµÄ DISPLAY¡£

USE_DISPLAY=  yes

6.7.5 ×ÀÃæÏî

¡¡¡¡Í¨¹ýÀûÓà DESKTOP_ENTRIES ±äÁ¿£¬ ¿ÉÒÔºÜÈÝÒ×µØÔÚÄúµÄ port Öд´½¨×ÀÃæÏî (Freedesktop ±ê×¼)¡£ ÕâЩÏî»áÔÚÀàËÆ GNOME »ò KDE ÕâÑùµÄ·ûºÏÕâÒ»±ê×¼µÄ×ÀÃæ»·¾³ÖÐÏÔʾÔÚÓ¦ÓóÌÐò²Ëµ¥ÖС£ ÕâÑù×ö»á×Ô¶¯´´½¨¡¢ °²×° .desktop Îļþ£¬ ²¢½«Æä¼ÓÈë pkg-plist¡£ ÆäÓ﷨Ϊ£º

DESKTOP_ENTRIES=  "NAME" "COMMENT" "ICON" "COMMAND" "CATEGORY" StartupNotify

¡¡¡¡Äú¿ÉÒÔÔÚ Freedesktop ÍøÕ¾ÉÏ ÕÒµ½¿ÉÓõķÖÀàÃû³Æ¡£ StartupNotify ±íʾӦÓóÌÐòÔÚÖ§³ÖÆô¶¯Í¨ÖªµÄ»·¾³ÖÐÇå³ý״̬ÐÅÏ¢¡£

¡¡¡¡Àý×Ó£º

DESKTOP_ENTRIES=  "ToME" "Roguelike game based on JRR Tolkien's work" \
                  "${DATADIR}/xtra/graf/tome-128.png" \
                  "tome -v -g" "Application;Game;RolePlaying;" \
                  false

6.8 ʹÓà GNOME

¡¡¡¡FreeBSD/GNOME ÏîÄ¿×éʹÓÃÒ»×é×Ô¼ºµÄ±äÁ¿À´¶¨Òå port ËùʹÓÃµÄ GNOME ×é¼þ¡£ ÕâЩ±äÁ¿µÄÏêϸÁÐ±í ¿ÉÒÔÔÚ FreeBSD/GNOME ÏîÄ¿µÄÖ÷Ò³ÕÒµ½¡£


6.9 ʹÓà Qt

6.9.1 ÔÚ port ÖÐʹÓà Qt

±í 6-7. ÓÃÓÚʹÓà Qt µÄ port µÄ±äÁ¿

USE_QT_VER ±íʾ port Óõ½ÁË Qt ¹¤¾ßÌ×¼þ¡£ ¿ÉÓõÄÖµ°üÀ¨ 3 ºÍ 4£» ÓÃÓÚÖ¸¶¨Ê¹ÓÃµÄ Qt µÄÖ÷°æ±¾¡£ ´ËÍ⣬ ϵͳ»á×Ô¶¯Îª configure ½Å±¾ºÍ make ÃüÁîÌṩ±ØÒªµÄ²ÎÊý¡£
QT_PREFIX Õâ¸ö±äÁ¿»á×Ô¶¯ÉèΪ Qt µÄ°²×°Â·¾¶ (Ö»¶Á±äÁ¿)¡£
MOC Õâ¸ö±äÁ¿»á×Ô¶¯ÉèΪ moc µÄ·¾¶ (Ö»¶Á±äÁ¿)¡£ ĬÈÏÖµÓë USE_QT_VER ±äÁ¿µÄÖµÓйء£
QTCPPFLAGS ͨ¹ý CONFIGURE_ENV ´«¸ø Qt ¹¤¾ßÌ×¼þµÄ±àÒë²ÎÊý¡£ ĬÈÏÅäÖÃÓë USE_QT_VER Óйء£
QTCFGLIBS ͨ¹ý CONFIGURE_ENV ´«¸ø Qt ¹¤¾ßÌ×¼þµÄÁ¬½Ó¿â¡£ ĬÈÏÅäÖÃÓë USE_QT_VER Óйء£
QTNONSTANDARD ½ûֹϵͳ×Ô¶¯ÐÞ¸Ä CONFIGURE_ENV¡¢ CONFIGURE_ARGS ºÍ MAKE_ENV¡£

±í 6-8. ÆäËûÓÃÓÚʹÓà Qt 4.x µÄ±äÁ¿

QT_COMPONENTS ÓÃÓÚÖ¸¶¨ Qt4 ¹¤¾ßºÍº¯Êý¿âµÄÒÀÀµ¡£ ÏêÇé¼ûºó¡£
UIC Õâ¸ö±äÁ¿»á×Ô¶¯ÉèΪ uic µÄ·¾¶ (Ö»¶Á±äÁ¿)¡£ ĬÈÏÖµÓë USE_QT_VER Óйء£
QMAKE Õâ¸ö±äÁ¿»á×Ô¶¯ÉèΪ qmake µÄ·¾¶ (Ö»¶Á±äÁ¿)¡£ ÆäĬÈÏÖµÓë USE_QT_VER Óйء£
QMAKESPEC Õâ¸ö±äÁ¿»á×Ô¶¯ÉèΪ qmake ÅäÖÃÎļþµÄ·¾¶ (Ö»¶Á±äÁ¿)¡£ ÆäĬÈÏÖµÓë USE_QT_VER Óйء£

¡¡¡¡µ±ÉèÖÃÁË USE_QT_VER ʱ£¬ ϵͳ×Ô¶¯»á¸ø configure ½Å±¾´«Ò»ÏµÁÐÓÐÓõIJÎÊý£º

CONFIGURE_ARGS+= --with-qt-includes=${QT_PREFIX}/include \
                 --with-qt-libraries=${QT_PREFIX}/lib \
                 --with-extra-libs=${LOCALBASE}/lib \
                 --with-extra-includes=${LOCALBASE}/include
CONFIGURE_ENV+=  MOC="${MOC}" CPPFLAGS="${CPPFLAGS} ${QTCPPFLAGS}" LIBS="${QTCFGLIBS}" \
                 QTDIR="${QT_PREFIX}" KDEDIR="${KDE_PREFIX}"

¡¡¡¡Èç¹û½« USE_QT_VER ÉèΪ 4£¬ Ôò»¹»á½øÐÐÏÂÁÐÅäÖãº

CONFIGURE_ENV+= UIC="${UIC}" QMAKE="${QMAKE}" QMAKESPEC="${QMAKESPEC}"
MAKE_ENV+=      QMAKESPEC="${QMAKESPEC}"

6.9.2 ×é¼þµÄÑ¡Ôñ (½öÏÞ Qt 4.x)

¡¡¡¡µ±°Ñ USE_QT_VER ÉèΪ 4 ʱ£¬ ¾Í¿ÉÒÔͨ¹ý QT_COMPONENTS ±äÁ¿À´Ö¸¶¨¶Ô Qt4 ¹¤¾ßºÍº¯Êý¿âµÄÒÀÀµÁË¡£ ͨ¹ýÔÚ×é¼þµÄÃû³ÆºóÃæÌí¼Ó _build »ò _run ÕâÑùµÄºó׺£¬ Ôò¿ÉÏàÓ¦µØ½«ÕâÒÀÀµ¹ØÏµÏÞÓÚÁª±à»òÔËÐÐʱ¿Ì¡£ ÔÚûÓÐÖ¸¶¨ºó׺ʱ£¬ ϵͳĬÈÏÔÚÁª±àºÍÔËÐÐʱ¿Ì¾ùÒÀÀµ¸Ã×é¼þ¡£ ͨ³£Çé¿öÏÂÔÚÖ¸Ã÷º¯Êý¿âÒ»ÀàµÄ×é¼þʱӦ²»Ê¹Óúó׺£¬ Áª±à¹¤¾ßÀà×é¼þӦʹÓà _build ºó׺£¬ ¶ø²å¼þÀà×é¼þ£¬ ÔòӦʹÓà _run ºó׺¡£ ϱíÖÐÁгöÁËһЩ×î³£ÓõÄ×é¼þ (È«²¿¿ÉÓõÄ×é¼þ£¬ ÔòÔÚ /usr/ports/Mk/bsd.qt.mk ÖÐµÄ _QT_COMPONENTS_ALL Áгö)£º

±í 6-9. ¿ÉÓÃµÄ Qt4 º¯Êý¿â×é¼þ

Ãû×Ö ÃèÊö
corelib ºËÐÄ¿â (ÔÚ port ֻʹÓà corelib ¶øÃ»ÓÐÓõ½ÆäËû¿âʱ¿ÉÒÔÊ¡ÂÔ)
gui ͼÐÎÓû§½çÃæ¿â
network ÍøÂ纯Êý¿â
opengl OpenGL º¯Êý¿â
qt3support Qt3 ¼æÈÝÖ§³Öº¯Êý¿â
qtestlib µ¥Ôª²âÊÔº¯Êý¿â
script ½Å±¾º¯Êý¿â
sql SQL º¯Êý¿â
xml XML º¯Êý¿â

¡¡¡¡Äú¿ÉÒÔͨ¹ýÔڳɹ¦±àÒëÖ®ºó£¬ ͨ¹ýÔÚÖ÷¿ÉÖ´ÐÐÎļþÉÏÔËÐÐ ldd À´È·¶¨ËùÐèµÄ¿â¡£

±í 6-10. ¿ÉÓÃµÄ Qt4 ¹¤¾ß×é¼þ

Ãû×Ö ÃèÊö
moc Ôª¶ÔÏó±àÒëÆ÷ (¼¸ºõËùÓÐµÄ Qt Ó¦ÓóÌÐòÔÚÁª±à¹ý³ÌÖж¼ÐèÒªËü)
qmake Makefile Éú³ÉÆ÷ / Áª±à¹¤¾ß
rcc ×ÊÔ´±àÒëÆ÷ (Èç¹ûÓ¦ÓóÌÐòÖаüº¬ *.rc »ò *.qrc Îļþ£¬ ¾ÍÐèÒªËü)
uic Óû§½çÃæ±àÒëÆ÷ (Èç¹ûÓ¦ÓóÌÐòÖаüº¬Ê¹Óà Qt Designer ´´½¨µÄ *.ui Îļþʱ¾ÍÐèÒªËü - Ò»°ã˵À´ Qt Ó¦ÓóÌÐò¶¼»áʹÓà GUI µÄ)

±í 6-11. ¿ÉÓÃµÄ Qt4 ²å¼þ×é¼þ

Ãû×Ö ÃèÊö
iconengines SVG ͼ±êÒýÇæ²å¼þ (Èç¹ûÓ¦ÓóÌÐòʹÓà SVG ͼ±ê)
imageformats ÓÃÓÚ GIF¡¢ JPEG¡¢ MNG ºÍ SVG µÄ imageformat ²å¼þ (Èç¹ûÓ¦ÓóÌÐòʹÓÃͼƬÎļþ)

Àý 6-3. Ñ¡Ôñ Qt4 ×é¼þ

ÔÚÕâ¸öÀý×ÓÖУ¬ ÎÒÃǽ«ÒªÒÆÖ²µÄÓ¦ÓóÌÐòÓõ½ÁË Qt4 ͼÐÎÓû§½çÃæº¯Êý¿â¡¢ Qt4 ºËÐÄ (core) º¯Êý¿â¡¢ ËùÓÐ Qt4 ´úÂëÉú³É¹¤¾ßÒÔ¼° Qt4 µÄ Makefile Éú³ÉÆ÷¡£ ÓÉÓÚ gui º¯Êý¿â»á×Ô¶¯¸½´ø¶ÔºËÐĺ¯Êý¿âµÄÒÀÀµ£¬ Òò´Ë²¢²»ÐèÒªÃ÷È·Ö¸³öÐèÒª corelib µÄÒÀÀµ¹ØÏµ¡£ Qt4 ´úÂëÉú³É¹¤¾ß moc¡¢ uic ºÍ rcc ÒÔ¼° Makefile Éú³ÉÆ÷ qmake Ö»ÔÚÁª±à¹ý³ÌÖвŻáÓõ½£¬ Òò´Ë¿ÉÒÔÖ¸¶¨ _build ºó׺£º

USE_QT_VER=    4
QT_COMPONENTS= gui moc_build qmake_build rcc_build uic_build

6.9.3 ÆäËû¿¼ÂÇ

¡¡¡¡Èç¹ûÓ¦ÓóÌÐòûÓÐÌṩ configure Îļþ£¬ ¶øÊǸøÁËÒ»¸ö .pro Îļþ£¬ ÔòÓ¦ÕâÑù£º

HAS_CONFIGURE=	yes

do-configure:
        @cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \
                ${QMAKE} -unix PREFIX=${PREFIX} texmaker.pro

¡¡¡¡Çë×¢Ò⣬ ÕâÓëϵͳÌṩµÄ BUILD.sh ÖÐµÄ qmake ÀàËÆ¡£ ´«µÝ CONFIGURE_ENV Äܹ»È·±£ qmake ¿ÉÒÔ¿´µ½ QMAKESPEC ±äÁ¿£¬ ·ñÔòËü¿ÉÄÜÎÞ·¨Õý³£¹¤×÷¡£ qmake »áÉú³É±ê×¼µÄ Makefile£¬ Òò´ËÎÞÐè×ÔÐбàд build target¡£

¡¡¡¡Qt Ó¦ÓóÌÐòͨ³£»á±àдΪÄܹ»¿çƽ̨ʹÓ㬠ͨ³£ X11/Unix ²¢²»ÊÇ¿ª·¢ËüµÄƽ̨£¬ ÓÐʱÕâ»áµ¼ÖÂһЩ±ß±ß½Ç½ÇµÄÎÊÌ⣬ ÀýÈ磺

  • ȱÉÙ±ØÒªµÄ includepaths¡£ Ðí¶àÓ¦ÓóÌÐò»áʹÓÃÍÐÅÌͼ±êÖ§³Ö£¬ µ«ºöÂÔÁËÕâЩͷ»ò¿âÎļþÐèÒªÔÚ X11 Ŀ¼ÖвéÕÒ¡£ Äú¿ÉÒÔͨ¹ýÃüÁîÐиæËß qmake ½«ÕâЩͷÎļþºÍº¯Êý¿â¼ÓÈëµ½ËÑË÷·¾¶ÖУ¬ ÀýÈ磺

    ${QMAKE} -unix PREFIX=${PREFIX} INCLUDEPATH+=${LOCALBASE}/include \
    	LIBS+=-L${LOCALBASE}/lib sillyapp.pro
    
  • ÓÐÎÊÌâµÄ°²×°Â·¾¶¡£ ÓÐʱ£¬ ÀàËÆÍ¼±ê»ò .desktop ÎļþÕâÑùµÄһЩÊý¾Ý£¬ ĬÈÏÇé¿öÏÂûÓа²×°µ½ XDG-¼æÈݵijÌÐò»áɨÃèµÄ·¾¶ÖС£ editors/texmaker ¾ÍÊÇÒ»¸öÕâÑùµÄÀý×Ó - Çë²Î¿¼Õâ¸ö port µÄ files Ŀ¼ÖÐµÄ patch-texmaker.pro£¬ ÒÔÁ˽âÈçºÎÔÚ Qmake ¹¤³ÌÎļþÖÐÐÞÕýÕâ¸öÎÊÌâ¡£


6.10 ʹÓà KDE

6.10.1 ±äÁ¿¶¨Òå (Ö»ÓÃÓÚ KDE 3.x)

±í 6-12. ÓÃÓÚʹÓà KDE 3.x µÄ port µÄ±äÁ¿

USE_KDELIBS_VER ±íʾ port Óõ½ÁË KDE ¿â¡£ Õâ¸ö±äÁ¿¿ÉÒÔÖ¸¶¨Ï£ÍûʹÓÃµÄ KDE Ö÷°æ±¾ºÅ£¬ Èç¹ûÉèÖÃÁËÕâ¸ö±äÁ¿£¬ ÔòϵͳҲ»á½« USE_QT_VER ÉèΪÊʵ±µÄ°æ±¾¡£ ¸Ã±äÁ¿Ä¿Ç°Î¨Ò»ÓÐЧµÄÖµÊÇ 3¡£
USE_KDEBASE_VER ±íʾ port Óõ½ÁË KDE µÄ»ù±¾ÏµÍ³¡£ Õâ¸ö±äÁ¿¿ÉÒÔÖ¸¶¨Ï£ÍûʹÓÃµÄ KDE Ö÷°æ±¾ºÅ£¬ Èç¹ûÉèÖÃÁËÕâ¸ö±äÁ¿£¬ ÔòϵͳҲ»á½« USE_QT_VER ÉèΪÊʵ±µÄ°æ±¾¡£ ¸Ã±äÁ¿Ä¿Ç°Î¨Ò»ÓÐЧµÄÖµÊÇ 3¡£

6.10.2 ÓÃÓÚ KDE 4 µÄ±äÁ¿¶¨Òå

¡¡¡¡Èç¹ûÄúµÄÓ¦ÓóÌÐòÐèҪʹÓà KDE 4.x£¬ ÔòÓ¦½« USE_KDE4 ÉèΪËùÐè×é¼þµÄÁÐ±í¡£ ÏÂÃæÁгöһЩ×î³£Óõ½µÄ×é¼þ (×îеÄ×é¼þÁбíλÓÚ /usr/ports/Mk/bsd.kde4.mk ÖÐµÄ _USE_KDE4_ALL)£º

±í 6-13. ¿ÉÓÃµÄ KDE4 ×é¼þ

Ãû³Æ ˵Ã÷
akonadi ¸öÈËÐÅÏ¢¹ÜÀí (PIM)´æ´¢·þÎñ
automoc4 Áî port ʹÓà automoc4 Áª±à¹¤¾ß¼¯
kdebase »ù±¾µÄ KDE Ó¦ÓóÌÐò (Konqueror¡¢ Dolphin¡¢ Konsole)
kdeexp ÊÔÑéÐ﵀ KDE ¿â (°üº¬ÉÐδÍêȫȷ¶¨²»±äµÄ API)
kdehier ³£ÓÃµÄ KDE Ŀ¼²ã´Î½á¹¹
kdelibs »ù±¾ KDE ¿â
kdeprefix Èç¹ûÉèÖÃÁËÕâ¸öÑ¡Ï Ôò port ½«°²×°µ½ ${KDE4_PREFIX} ¶ø²»ÊÇ ${LOCALBASE}
pimlibs PIM º¯Êý¿â
workspace ÓÃÓÚ×é³É×ÀÃæµÄÓ¦ÓóÌÐòºÍº¯Êý¿â (Plasma¡¢ KWin)

¡¡¡¡KDE 4.x port »á°²×°µ½ ${KDE4_PREFIX}£¬ ĿǰÊÇ /usr/local/kde4£¬ ÒÔ±ÜÃâÓë KDE 3.x ports ³åÍ»¡£ ÕâÊÇͨ¹ýÖ¸¶¨ kdeprefix ×é¼þÀ´ÊµÏֵģ¬ Ëü±íÊ¾Ìæ»»Ä¬È쵀 PREFIX¡£ ²»¹ý£¬ port ÈÔ»á×ñѭͨ¹ý MAKEFLAGS »·¾³±äÁ¿ÉèÖÃµÄ PREFIX ÒÔ¼°ÆäËü make ²ÎÊý¡£

¡¡¡¡KDE 4.x ports ÓпÉÄÜºÍ KDE 3.x ports ³åÍ»£¬ Òò´ËÈç¹ûÆôÓÃÁË kdeprefix ×é¼þ£¬ ËüÃǻᰲװµ½ ${KDE4_PREFIX}¡£ Ŀǰ KDE4_PREFIX µÄĬÈÏÖµÊÇ /usr/local/kde4¡£ Ò²¿ÉÒÔ½« KDE 4.x ports °²×°µ½×Ô¶¨ÒåµÄ PREFIX¡£ µ± PREFIX ÊÇͨ¹ý MAKEFLAGS »·¾³±äÁ¿£¬ »òÖ±½ÓÔÚ make ÃüÁîÐÐÖ¸¶¨Ê±£¬ Ëü»áÌæ»» kdeprefix ÌṩµÄÅäÖá£

Àý 6-4. USE_KDE4 ʾÀý

ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄ KDE 4 port¡£ USE_CMAKE Ö¸¶¨ port ʹÓà CMake ©¤©¤ Ðí¶à KDE 4 ÏîÄ¿ËùʹÓõÄÅäÖù¤¾ß¡£ USE_KDE4 ÔòÒýÈë KDE º¯Êý¿â£¬ ²¢Áî port ÔÚÁª±à½×¶ÎʹÓà automoc4¡£ ÐèÒªµÄ KDE ×é¼þ£¬ ÒÔ¼°ÆäËûÒÀÀµµÄ×é¼þ¿ÉÒÔ´Ó configure µÄÈÕÖ¾ÖлñÖª¡£ USE_KDE4 ²¢²»»á×Ô¶¯ÉèÖà USE_QT_VER¡£ Èç¹û port ÐèҪʹÓÃijЩ Qt4 ×é¼þ£¬ ÔòÐèÒªÉèÖà USE_QT_VER ²¢Ö¸¶¨ËùÐèÒªµÄ×é¼þ¡£

USE_CMAKE=     yes
USE_KDE4=      automoc4 kdelibs kdeprefix
USE_QT_VER=    4
QT_COMPONENTS= qmake_build moc_build rcc_build uic_build

6.11 ʹÓà Java

6.11.1 ±äÁ¿¶¨Òå

¡¡¡¡Èç¹ûÄúµÄ port ÐèÒª Java" ¿ª·¢°ü (JDK") À´Íê³ÉÁª±à¡¢ Ö§³ÖÔËÐУ¬ ÉõÖÁÍê³É½â¿ªÔ´´úÂë°üÕâÑùµÄ¹¤×÷£¬ ¾ÍÓ¦¸Ã¶¨Òå USE_JAVA¡£

¡¡¡¡ÔÚ Ports Collection ÖÐÓÐÐí¶à²»Í¬µÄ JDK£¬ ËüÃǵİ汾¸÷²»Ïàͬ£¬ »òÊÇÀ´×Ô²»Í¬µÄ¹©Ó¦ÉÌ¡£ Èç¹ûÄúµÄ port ±ØÐëʹÓÃÆäÖеÄij¸öÌØ¶¨µÄ°æ±¾£¬ Ò²¿ÉÒÔÓèÒÔ¶¨Òå¡£ ×îеÄÎȶ¨°æ±¾ÊÇ java/jdk16¡£

±í 6-14. Óõ½ Java µÄ port ¿ÉÒÔʹÓõıäÁ¿

±äÁ¿ ÒâÒå
USE_JAVA Ö»Óж¨ÒåËü²ÅÄÜʹÆäËü±äÁ¿ÉúЧ¡£
JAVA_VERSION Óÿոñ·Ö¿ªµÄÊÊºÏ port ʹÓÃµÄ Java °æ±¾¡£ ¿ÉÑ¡µÄ "+" ¿ÉÒÔÓÃÓÚÖ¸¶¨Ä³¸ö·¶Î§µÄ°æ±¾ (¿ÉÒÔÓ㺠1.5[+] 1.6[+] 1.7[+])¡£
JAVA_OS Óÿոñ·Ö¿ªµÄÊÊÓ¦ port µÄ JDK port ²Ù×÷ϵͳÀàÐÍ (¿ÉÒÔÓ㺠native linux)¡£
JAVA_VENDOR Óÿոñ·Ö¿ªµÄÊÊÓ¦ port µÄ JDK port ¹©Ó¦ÉÌ (¿ÉÒÔÓ㺠freebsd bsdjava sun openjdk)¡£
JAVA_BUILD ÉèÖÃÕâ¸ö±äÁ¿±íʾËùÑ¡µÄ JDK port Ó¦±»ÁÐÈë port µÄÁª±àÒÀÀµ¹ØÏµ¡£
JAVA_RUN ÉèÖÃÕâ¸ö±äÁ¿±íʾËùÑ¡µÄ JDK port Ó¦±»ÁÐÈë port µÄÔËÐл·¾³ÒÀÀµ¹ØÏµ¡£
JAVA_EXTRACT ÉèÖÃÕâ¸ö±äÁ¿±íʾËùÑ¡µÄ JDK port Ó¦±»ÁÐÈë port µÄ½âѹËõÖ§³ÖÒÀÀµ¹ØÏµ¡£

¡¡¡¡ÏÂÃæÊÇÔÚÉèÖÃÁË USE_JAVA Ö®ºó£¬ port Äܹ»´ÓϵͳÖлñµÃµÄÅäÖãº

±í 6-15. ÏòʹÓÃÁË Java µÄ port ÌṩµÄ±äÁ¿

±äÁ¿ Öµ
JAVA_PORT JDK port µÄÃû×Ö (ÀýÈç 'java/diablo-jdk16')¡£
JAVA_PORT_VERSION JDK port µÄÍêÕû°æ±¾ (ÀýÈç '1.6.0')¡£ Èç¹ûÄúÖ»ÐèÒª°æ±¾ºÅµÄǰÁ½Î»£¬ Ôò¿ÉÓà ${JAVA_PORT_VERSION:C/^([0-9])\.([0-9])(.*)$/\1.\2/}¡£
JAVA_PORT_OS ËùÓà JDK port µÄ²Ù×÷ϵͳ (ÀýÈç 'native')¡£
JAVA_PORT_VENDOR ËùÓà JDK port µÄ¹©Ó¦ÉÌ (ÀýÈç 'freebsd')¡£
JAVA_PORT_OS_DESCRIPTION ËùÓà JDK port ²Ù×÷ϵͳµÄÃèÊö (ÀýÈç 'Native')¡£
JAVA_PORT_VENDOR_DESCRIPTION ËùÓà JDK port ¹©Ó¦É̵ÄÃèÊö (ÀýÈç 'FreeBSD Foundation')¡£
JAVA_HOME JDK µÄ°²×°Ä¿Â¼ (ÀýÈç '/usr/local/diablo-jdk1.6.0')¡£
JAVAC ËùÓà Java ±àÒëÆ÷µÄÍêÕû·¾¶ (ÀýÈç '/usr/local/diablo-jdk1.6.0/bin/javac')¡£
JAR ËùÓà jar ¹¤¾ßµÄÍêÕû·¾¶ (ÀýÈç '/usr/local/diablo-jdk1.6.0/bin/jar' »ò '/usr/local/bin/fastjar')¡£
APPLETVIEWER ËùÓà appletviewer ¹¤¾ßµÄÍêÕû·¾¶ (ÀýÈç '/usr/local/diablo-jdk1.6.0/bin/appletviewer')¡£
JAVA ËùÓà java Ö´ÐÐÎļþµÄÍêÕû·¾¶¡£ ÄúӦʹÓÃËüÀ´Ö´ÐÐ Java ³ÌÐò (ÀýÈç '/usr/local/diablo-jdk1.6.0/bin/java')¡£
JAVADOC ËùÓà javadoc ¹¤¾ßµÄÍêÕû·¾¶¡£
JAVAH ËùÓà javah ³ÌÐòµÄÍêÕû·¾¶¡£
JAVAP ËùÓà javap ³ÌÐòµÄÍêÕû·¾¶¡£
JAVA_KEYTOOL ËùÓà keytool ¹¤¾ßµÄÍêÕû·¾¶¡£
JAVA_N2A ËùÓà native2ascii ¹¤¾ßµÄÍêÕû·¾¶¡£
JAVA_POLICYTOOL ËùÓà policytool ³ÌÐòµÄÍêÕû·¾¶¡£
JAVA_SERIALVER ËùÓà serialver ³ÌÐòµÄÍêÕû·¾¶¡£
RMIC ËùÓà RMI ×®/¼Ü Éú³ÉÆ÷£¬ rmic µÄÍêÕû·¾¶¡£
RMIREGISTRY ËùÓà RMI ×¢²á±í³ÌÐò£¬ rmiregistry µÄÍêÕû·¾¶¡£
RMID ËùÓà RMI ·þÎñ³ÌÐò rmid µÄÍêÕû·¾¶¡£
JAVA_CLASSES ËùÓà JDK ÀàÎļþĿ¼µÄÍêÕû·¾¶¡£ ${JAVA_HOME}/jre/lib/rt.jar¡£

¡¡¡¡Äú¿ÉÒÔʹÓà java-debug make target ÒÔ»ñÈ¡ÓÃÓÚµ÷ÊÔ port µÄÐÅÏ¢¡£ ´ó¶àÊýǰÊö±äÁ¿µÄÖµ½Ô»áÓèÒÔ³ÊÏÖ¡£

¡¡¡¡´ËÍ⣬ »¹»á¶¨ÒåÏÂÊö³£Á¿£¬ ÒÔÈ·±£ËùÓÐµÄ Java port ¾ùÒÔÒ»ÖÂÖ®·½Ê½°²×°£º

±í 6-16. ΪʹÓà Java µÄ port ¶¨ÒåµÄ³£Á¿

³£Á¿ Öµ
JAVASHAREDIR ËùÓÐ Java Ïà¹Ø×ÊÁϵݲװ¸ùĿ¼¡£ ĬÈÏÖµ£º ${PREFIX}/share/java.
JAVAJARDIR ÓÃÒÔ°²×° JAR ÎļþµÄĿ¼¡£ ĬÈÏÖµ£º ${JAVASHAREDIR}/classes¡£
JAVALIBDIR ÆäËü port °²×°µÄ JAR ÎļþËùÔÚµÄĿ¼¡£ ĬÈÏÖµ£º ${LOCALBASE}/share/java/classes¡£

¡¡¡¡Ïà¹ØµÄÏîÒ²»á¶¨ÒåÔÚ PLIST_SUB (ÔÚ µÚ 7.1 ½Ú ÖнøÐнéÉÜ) ºÍ SUB_LIST ÖС£


6.11.2 ²ÉÓà Ant ½øÐÐÁª±à

¡¡¡¡Èç¹û port ²ÉÓà Apache Ant ½øÐÐÁª±à£¬ ÔòÐèÒª¶¨Òå USE_ANT¡£ ÈçÊÇ£¬ Ôò Ant ½«×÷Ϊ ×Ó-make ÃüÁîÀ´Ê¹ÓᣠÈç¹û port 䶨Òå do-build target£¬ Ôò½«Ä¬ÈÏÒÀ MAKE_ENV¡¢ MAKE_ARGS ºÍ ALL_TARGET¡£ µÄÉèÖÃÖ´ÐÐ Ant¡£ ÕâÀàËÆÓÚ µÚ 6.3 ½Ú ÖнéÉܵĹØÓÚ USE_GMAKE µÄ»úÖÆ¡£


6.11.3 ×î¼Ñʵ¼ù

¡¡¡¡Èç¹ûÄúÕýÒÆÖ²Ä³¸ö Java ¿â£¬ ÄúµÄ port Ó¦°Ñ JAR Îļþ°²×°µ½ ${JAVAJARDIR}£¬ ¶øÆäËüÎļþÔòÓ¦·ÅÔÚ ${JAVASHAREDIR}/${PORTNAME} Ï (³ýÁËÎĵµ£¬ ²Î¼ûÏÂÎÄ)¡£ Òª¼õÉÙ´ò°üÎļþµÄ³ß´ç£¬ Äú¿ÉÒÔÖ±½ÓÔÚ Makefile ÖÐÒýÓÃÕâЩ JAR Îļþ£¬ ¾ßÌå×ö·¨ÊÇʹÓÃÏÂÃæµÄÓï¾ä (´Ë´¦µÄ myport.jar ÊÇ×÷Ϊ port Ò»²¿·Ö°²×°µÄ JAR ÎļþµÄÃû×Ö)£º

PLIST_FILES+= %%JAVAJARDIR%%/myport.jar

¡¡¡¡ÒÆÖ² Java Ó¦ÓóÌÐòʱ£¬ port ͨ³£»áÏ£Íû½«ËùÓÐÎļþ°²×°µ½Í¬Ò»Ä¿Â¼ (°üÀ¨ÆäÒÀÀµµÄ JAR)¡£ ÕâʱǿÁÒ½¨ÒéʹÓà ${JAVASHAREDIR}/${PORTNAME}¡£ ÒÆÖ²Èí¼þµÄ¿ª·¢ÈËÔ±£¬ ¿ÉÒÔ×ÔÐоö¶¨ÊÇ·ñ½«ËùÒÀÀµµÄÆäËü JAR °²×°µ½´ËĿ¼£¬ »òÖ±½ÓʹÓÃÒѾ­×°ºÃµÄÄÇЩ (À´×Ô ${JAVAJARDIR})¡£

¡¡¡¡ÎÞÂÛÄúÕýÖÆ×÷ÄÄÒ»ÀàµÄ port (¿â»òÕßÓ¦ÓóÌÐò)£¬ ¸½¼ÓµÄÎĵµ¶¼Ó¦°²×°µ½ºÍÆäËü port ͬÑùµÄλÖᣠÒѾ­ÖªµÀ£¬ JavaDoc »á¸ù¾Ý JDK °æ±¾µÄ²»Í¬¶ø²úÉú²»Í¬µÄÎļþ¡£ ¶ÔÓÚÄÇЩ²»´òËãÇ¿ÖÆÊ¹ÓÃÄ³Ò»ÌØ¶¨°æ±¾ JDK µÄ port ¶øÑÔ£¬ ÕâÎÞÒÉÌá¸ßÁËÖÆ×÷×°Ïäµ¥ (pkg-plist) µÄÄѶȡ£ ÕâÊÇΪʲôǿÁÒ½¨ÒéʹÓà PORTDOCS ºêµÄÔ­Òò¡£ ¸ü½øÒ»²½£¬ ¼´Ê¹ÄúÄܹ»Ô¤²â javadoc ½«ÒªÉú³ÉµÄÎļþ£¬ ËùÐèµÄ pkg-plist µÄ³ß´ç£¬ Ò²ÊǹĴµÊ¹Óà PORTDOCS µÄÒ»´óÀíÓÉ¡£

¡¡¡¡DATADIR µÄĬÈÏÖµÊÇ ${PREFIX}/share/${PORTNAME}¡£ ¶Ô Java port ¶øÑÔ½« DATADIR ¸ÄΪ ${JAVASHAREDIR}/${PORTNAME} ÊÇÒ»¸öºÃÖ÷Òâ¡£ µ±È»£¬ DATADIR »á×Ô¶¯¼Óµ½ PLIST_SUB ÖÐ (ÔÚ µÚ 7.1 ½Ú ÓÐËù½éÉÜ) Òò´ËÄú¿ÉÒÔÔÚ pkg-plist ÖÐÖ±½ÓʹÓà %%DATADIR%%¡£

¡¡¡¡×«Ð´±¾ÎÄʱ£¬ ¶ÔÊÇÓ¦¸Ã´ÓÔ´´úÂëÁª±à£¬ »¹ÊÇÖ±½Ó°²×°Ô¤±àÒëµÄ Java ports °²×°°ü²¢Ã»ÓÐÃ÷È·µÄ¹æ¶¨¡£ ¾¡¹ÜÈç´Ë£¬ FreeBSD Java Project µÄ¿ª·¢ÈËÔ±ÈÔ¹ÄÀøÒÆÖ²Èí¼þµÄ¿ª·¢ÕßÔÚ²»Âé·³µÄÇé¿öϾ¡¿ÉÄÜ´ÓÔ´´úÂëÍê³ÉÁª±à¡£

¡¡¡¡±¾½ÚÖÐËù½éÉܵÄÈ«²¿ÌØÐÔ£¬ ¾ùÊÇÔÚ bsd.java.mk ÖÐʵÏֵġ£ Èç¹ûÄú¸Ð¾õ×Ô¼ºµÄ port ÐèÒª¸üΪ¸´Ô Java Ö§³Ö£¬ ÇëÊ×ÏȲÎÔÄ bsd.java.mk CVS ÈÕÖ¾£¬ ÒòΪͨ³£×«ÎĽéÉÜ×îÐÂÌØÐÔÐèҪһЩʱ¼ä¡£ ´ËÍ⣬ Èç¹ûÄúÈÏΪËùȱÉÙµÄÖ§³Ö¶ÔÐí¶àÆäËü Java port ÒàÊôÓÐÒæ£¬ ÇëÔÚ FreeBSD Java ÓïÑÔÓʼþÁÐ±í ¶ÔÆä½øÐÐÌÖÂÛ¡£

¡¡¡¡ÔÚ PR ÖÐµÄ java Àà±ð£¬ Ö÷ÒªÊÇÓÃÓÚ FreeBSD Java project ÒÆÖ² JDK ±¾ÉíÖ®ÓᣠÒò¶ø£¬ Ìá½»ÄúµÄ Java port ʱ£¬ Ó¦¹éÈë ports Àà±ð£¬ ³ý·ÇÄúÕý³¢ÊÔ½â¾öµÄÎÊÌâÊÇ JDK ʵÏÖ±¾Éí»ò bsd.java.mk µÄ¡£

¡¡¡¡ÀàËÆµØ£¬ ÄúÓ¦²Î¿¼ µÚ 5.3 ½Ú ÖÐËùÏêÊöµÄ¹ØÓÚ CATEGORIES ÔÚ Java port ÖеÄʹÓùæÔò¡£


6.12 Web Ó¦Ó㬠Apache ºÍ PHP

6.12.1 Apache

±í 6-17. Óõ½ Apache µÄ port ¿ÉÒÔʹÓõıäÁ¿

USE_APACHE ´Ë port ÐèÒª Apache¡£ ¿ÉÓõÄÖµ£º yes (ÈÎÒâ¿ÉÓð汾)¡¢ 1.3¡¢ 2.0¡¢ 2.2¡¢ 2.0+¡¢ µÈµÈ¡£ ĬÈÏÒÀÀµµÄ°æ±¾ÊÇ 1.3¡£
WITH_APACHE2 ´Ë port ÐèÒª Apache 2.0¡£ Èç¹ûûÓÐÕâ¸ö±äÁ¿£¬ Ôò port ½«ÒÀÀµ Apache 1.3¡£ ÕâÒ»±äÁ¿Ä¿Ç°ÒѾ­¹ýʱ£¬ Òò¶ø²»Ó¦¼ÌÐøÊ¹Óá£
APXS µ½ apxs ¿ÉÖ´ÐÐÎļþµÄÍêÕû·¾¶¡£ Äú¿ÉÒÔÔÚ port ÖÐÌæ´ú¸ÃÖµ¡£
HTTPD µ½ httpd ¿ÉÖ´ÐÐÎļþµÄÍêÕû·¾¶¡£ Äú¿ÉÒÔÔÚ port ÖÐÌæ´ú¸ÃÖµ¡£
APACHE_VERSION ĿǰϵͳÖа²×°µÄ Apache °æ±¾ (Ö»¶Á±äÁ¿)¡£ ÕâÒ»±äÁ¿Ö»ÓÐÔÚÒýÓÃÁË bsd.port.pre.mk Ö®ºó²ÅÄÜʹÓ㬠Æä¿ÉÄܵÄֵΪ£º 13¡¢ 20¡¢ 22¡£
APACHEMODDIR Apache Ä£¿éËùÔÚµÄÎļþ¼Ð¡£ ÔÚ pkg-plist ÖУ¬ ÕâÒ»±äÁ¿»á×Ô¶¯Õ¹¿ª¡£
APACHEINCLUDEDIR Apache Í·ÎļþËùÔÚµÄÎļþ¼Ð¡£ ÔÚ pkg-plist ÖУ¬ ÕâÒ»±äÁ¿»á×Ô¶¯Õ¹¿ª¡£
APACHEETCDIR Apache ÅäÖÃÎļþËùÔÚµÄÎļþ¼Ð¡£ ÔÚ pkg-plist ÖУ¬ ÕâÒ»±äÁ¿»á×Ô¶¯Õ¹¿ª¡£

±í 6-18. ÔÚÒÆÖ² Apache Ä£¿éʱ±È½ÏÓÐÓõıäÁ¿

MODULENAME Ä£¿éµÄÃû³Æ¡£ ĬÈÏֵΪ PORTNAME¡£ ÀýÈ磺 mod_hello
SHORTMODNAME Ä£¿éµÄ¼òÂÔÃû×Ö¡£ ĬÈÏÇé¿öÏ»á×Ô¶¯¸ù¾Ý MODULENAME ¼ÆË㣬 µ«ÄúÒ²¿ÉÒÔ×ÔÐÐÉèÖÃÖµÀ´Ìæ´úËü¡£ ÀýÈ磺 hello
AP_FAST_BUILD ʹÓà apxs À´±àÒëºÍ°²×°Ä£¿é¡£
AP_GENPLIST ͬʱ×Ô¶¯´´½¨ pkg-plist¡£
AP_INC ÔÚ±àÒë¹ý³ÌÖУ¬ ½«Ö¸¶¨µÄĿ¼¼ÓÈëµ½ËÑË÷Í·ÎļþµÄĿ¼ÖС£
AP_LIB ÔÚ±àÒë¹ý³ÌÖУ¬ ½«Ö¸¶¨µÄĿ¼¼ÓÈëµ½ËÑË÷º¯Êý¿âµÄĿ¼ÖС£
AP_EXTRAS ´«µÝ¸ø apxs µÄ¶îÍâ²ÎÊý¡£

6.12.2 Web Ó¦ÓÃ

¡¡¡¡Web Ó¦ÓóÌÐòÓ¦°²×°µ½ PREFIX/www/Ó¦ÓóÌÐòµÄÃû×Ö¡£ Ϊ·½±ãÆð¼û£¬ Õâ¸ö·¾¶ÔÚ Makefile ºÍ pkg-plist ¾ùÒÔ WWWDIR ±äÁ¿µÄÐÎʽÌṩ¡£ ÔÚ Makefile ÖпÉÒÔʹÓà WWWDIR_REL À´±íʾ°üº¬ÁË PREFIX µÄ¸Ã±äÁ¿Öµ¡£

¡¡¡¡web ·þÎñÆ÷½ø³ÌËùÓõÄÓû§ºÍÓû§×飬 ·Ö±ðÒÔ WWWOWN ºÍ WWWGRP ±äÁ¿µÄÐÎʽÌṩ£¬ Èç¹ûÄúÐèÒªÐÞ¸ÄijЩÎļþµÄÊôÖ÷µÄ»°¡£ ÕâÁ½¸ö±äÁ¿µÄĬÈÏÖµ¾ùΪ www¡£ Èç¹ûÄúµÄ port Ï£ÍûʹÓÃÆäËûÖµ£¬ ÇëʹÓà WWWOWN?= myuser ÕâÖÖд·¨£¬ ÒÔ±ãÈÃÓû§Äܹ»¸üÈÝÒ×µØÐÞ¸ÄËü¡£

¡¡¡¡³ý·ÇÄúµÄ port ±ØÐèʹÓà Apache£¬ ·ñÔò²»Òª½«ÆäдÈëÒÀÀµ¹ØÏµ¡£ Çë×ðÖØÔËÐÐÄúµÄÓ¦ÓóÌÐòµÄÓû§Ñ¡Ôñ Apache ÒÔÍâµÄÆäËû web ·þÎñÆ÷µÄÐèÇó¡£


6.12.3 PHP

±í 6-19. Óõ½ PHP µÄ port ÖпÉÒÔʹÓõıäÁ¿

USE_PHP ´Ë port ÐèÒª PHP¡£ ȡֵΪ yes ½«°Ñ PHP ¼ÓÈëÒÀÀµ¹ØÏµ¡£ ´ËÍ⣬ »¹¿ÉÒÔÔÚ´ËÖ¸¶¨½«ËùÐèÒªµÄ PHP À©Õ¹Ä£¿é¡£ ÀýÈ磺 pcre xml gettext
DEFAULT_PHP_VER Ñ¡ÔñÔÚûÓа²×° PHP ʱ×Ô¶¯°²×°µÄ PHP Ö÷°æ±¾¡£ ĬÈÏÊÇ 4¡£ ¿ÉÑ¡ 4¡¢ 5 Ö®Ò»¡£
IGNORE_WITH_PHP ´Ë port ÎÞ·¨Óë¸ø¶¨°æ±¾µÄ PHP һͬ¹¤×÷¡£ ¿ÉѡֵΪ 4¡¢ 5 Ö®Ò»¡£
USE_PHPIZE ´Ë port ½«×÷Ϊ PHP À©Õ¹Ä£¿é½øÐÐÁª±à¡£
USE_PHPEXT ´Ë port ½«×÷Ϊ PHP À©Õ¹£¬ ÇÒÐèÒª×÷ΪÀ©Õ¹Ä£¿é×¢²á¡£
USE_PHP_BUILD Áª±àÒÀÀµÓÚ PHP¡£
WANT_PHP_CLI Ï£ÍûʹÓà CLI (ÃüÁîÐÐ) °æ±¾µÄ PHP¡£
WANT_PHP_CGI Ï£ÍûʹÓà CGI °æ±¾µÄ PHP¡£
WANT_PHP_MOD Ï£ÍûʹÓà Apache Ä£¿é°æ±¾µÄ PHP¡£
WANT_PHP_SCR Ï£ÍûʹÓà CLI »ò CGI °æ±¾µÄ PHP¡£
WANT_PHP_WEB Ï£ÍûʹÓà Apache Ä£¿é»ò CGI °æ±¾µÄ PHP¡£

6.12.4 PEAR Ä£¿é

¡¡¡¡ÒÆÖ² PEAR Ä£¿éµÄ¹ý³Ì·Ç³£¼òµ¥¡£

¡¡¡¡Ê¹Óà FILES¡¢ TESTS¡¢ DATA¡¢ SQLS¡¢ SCRIPTFILES¡¢ DOCS ÒÔ¼° EXAMPLES ÕâЩ±äÁ¿À´Ö¸Ã÷ÄúÏ£Íû°²×°µÄÎļþ¡£ ËùÓÐÕâÀïÁгöµÄÎļþ¶¼»á×Ô¶¯°²×°µ½ºÏÊʵÄλÖ㬠²¢¼ÓÈë pkg-plist¡£

¡¡¡¡ÔÚ Makefile ÎļþµÄ×îºóÒ»ÐÐÒýÈë ${PORTSDIR}/devel/pear/bsd.pear.mk¡£

Àý 6-5. ÓÃÓÚ PEAR ÀàµÄ Makefile Àý×Ó

PORTNAME=       Date
PORTVERSION=    1.4.3
CATEGORIES=     devel www pear

MAINTAINER=     example@domain.com
COMMENT=        PEAR Date and Time Zone Classes

BUILD_DEPENDS=  ${PEARDIR}/PEAR.php:${PORTSDIR}/devel/pear-PEAR
RUN_DEPENDS=    ${BUILD_DEPENDS}

FILES=          Date.php Date/Calc.php Date/Human.php Date/Span.php     \
                Date/TimeZone.php
TESTS=          test_calc.php test_date_methods_span.php testunit.php   \
                testunit_date.php testunit_date_span.php wknotest.txt   \
                bug674.php bug727_1.php bug727_2.php bug727_3.php       \
                bug727_4.php bug967.php weeksinmonth_4_monday.txt       \
                weeksinmonth_4_sunday.txt weeksinmonth_rdm_monday.txt   \
                weeksinmonth_rdm_sunday.txt
DOCS=           TODO
_DOCSDIR=       .

.include <bsd.port.pre.mk>
.include "${PORTSDIR}/devel/pear/bsd.pear.mk"
.include <bsd.port.post.mk>

6.13 ʹÓà Python

¡¡¡¡Ports Ì×¼þÖ§³Öͬʱ²¢Ðа²×°¶à¸ö²»Í¬µÄ Python °æ±¾¡£ Ports Ӧȷ±£Äܹ»¸ù¾ÝÓû§ÅäÖÃµÄ PYTHON_VERSION ±äÁ¿Ê¹ÓÃÕýÈ·µÄ python ½âÊÍÆ÷¡£ Ò»°ã˵À´£¬ ÕâÊÇͨ¹ý½«½Å±¾ÖÐµÄ python ·¾¶ÃûÌæ»»Îª PYTHON_CMD ±äÁ¿µÄÖµÀ´ÊµÏֵġ£

¡¡¡¡ÔÚ PYTHON_SITELIBDIR ϰ²×°ÎļþµÄ ports Ó¦ÔÚ°üÃûÉÏʹÓà pyXY- ǰ׺£¬ ÒÔ±ãÃ÷ʾËüÃǽ«»áÅäºÏÄĸö Python °æ±¾Ê¹Óá£

PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}

±í 6-20. ¶ÔÓõ½ Python µÄ port ×îÓÐÓõÄһЩ±äÁ¿

USE_PYTHON ´Ë port ÐèÒª Python¡£ ¿ÉÒÔÓà 2.3+ ÕâÑùµÄÐÎʽÀ´Ö¸¶¨ËùÏ£ÍûµÄ°æ±¾¡£ ³ý´ËÖ®Í⣬ Ò²¿ÉÒÔÓúáÏßÀ´·Ö¸ôÁ½¸ö°æ±¾ºÅ£¬ ÒÔ±íʾij¸ö·¶Î§µÄ°æ±¾£¬ ÀýÈ磺 2.1-2.3
USE_PYDISTUTILS ʹÓà Python distutils À´Íê³ÉÅäÖᢠ±àÒëºÍ°²×°¡£ ¶Ô°üº¬ setup.py µÄ port ¶øÑÔÕâÊDZØÐèµÄ¡£ Ëü»á×Ô¶¯¸²¸ÇĬÈ쵀 do-build ÒÔ¼° do-install ÕâÁ½¸ö target¡£ Èç䶨Òå GNU_CONFIGURE£¬ Ëü»¹»á¸Ä±ä do-configure¡£
PYTHON_PKGNAMEPREFIX ×÷Ϊ PKGNAMEPREFIX À´Çø·Ö²»Í¬ Python °æ±¾µÄ package¡£ ÀýÈ磺 py24-
PYTHON_SITELIBDIR ȫվ package ËùÔÚµÄĿ¼£¬ Ëü°üÀ¨ÁË Python µÄ°²×°Ä¿Â¼ (ͨ³£ÊÇ LOCALBASE)¡£ ÔÚ°²×° Python Ä£¿éʱ£¬ PYTHON_SITELIBDIR ±äÁ¿»á·Ç³£ÓÐÓá£
PYTHONPREFIX_SITELIBDIR È¥µôÁË PREFIX ²¿·ÖµÄ PYTHON_SITELIBDIR¡£ Ó¦¾¡¿ÉÄÜÔÚ pkg-plist ÖÐʹÓà %%PYTHON_SITELIBDIR%%¡£ %%PYTHON_SITELIBDIR%% µÄĬÈÏÖµÊÇ lib/python%%PYTHON_VERSION%%/site-packages
PYTHON_CMD Python ½âÊÍÆ÷µÄÃüÁîÐУ¬ °üÀ¨°æ±¾ºÅ¡£
PYNUMERIC ½«ÊýÖµ´¦ÀíÀ©Õ¹Ä£¿é¼ÓÈëÒÀÀµ¹ØÏµ¡£
PYNUMPY ¶ÔÐÂÔöµÄÊýÖµ¼ÆËãÀ©Õ¹, numpyµÄÒÀÀµ¡£ (PYNUMERIC ĿǰÒѱ»×÷ÕßÌÔÌ­)¡£
PYXML ½« XML À©Õ¹Ä£¿é¼ÓÈëÒÀÀµ¹ØÏµ¡£ (¶ÔÓÚ Python 2.0 ºÍ¸ü¸ß°æ±¾²»ÔÙÐèÒª£¬ ÒòΪËüÒѾ­³ÉΪÁ˱ê×¼×é¼þ)¡£
USE_TWISTED ½« twistedCore ¼ÓÈëÒÀÀµ¹ØÏµ¡£ Ò²¿ÉÒÔÓÃÕâ¸ö±äÁ¿Ö¸¶¨ËùÐèµÄ×é¼þ£¬ ÀýÈ磺 web lore pair flow
USE_ZOPE ¼ÓÈë¶Ô Zope£¬ Ò»ÖÖ web Ó¦ÓÃÆ½Ì¨µÄÒÀÀµ¡£ Õâ»á°Ñ Python ÒÀÀµ¸ÄΪ Python 2.3¡£ ´ËÍâ ZOPEBASEDIR Ò²»á×Ô¶¯ÉèΪ Zope °²×°Ä¿Â¼µÄλÖá£

¡¡¡¡ÍêÕûµÄ¿ÉÓñäÁ¿ÁÐ±í£¬ ¿ÉÒÔÔÚ /usr/ports/Mk/bsd.python.mk ÖÐÕÒµ½¡£


6.14 ʹÓà Tcl/Tk

¡¡¡¡Ports Ì×¼þÖ§³Öͬʱ°²×°¶à¸ö Tcl/Tk °æ±¾¡£ Ports Ó¦ÖÁÉÙÖ§³ÖĬÈ쵀 Tcl/Tk °æ±¾£¬ ÒÔ¼°Í¨¹ý USE_TCL ºÍ USE_TK ±äÁ¿Ö¸¶¨µÄ¸ü¸ß°æ±¾¡£ Ï£ÍûʹÓÃµÄ tcl °æ±¾£¬ Ôò¿ÉÒÔͨ¹ý WITH_TCL_VER ±äÁ¿À´Ê¹Óá£

±í 6-21. Óõ½ Tcl/Tk µÄ port ¿ÉÒÔʹÓõıäÁ¿

USE_TCL ±íʾ port ÒÀÀµÓÚ Tcl º¯Êý¿â (²»ÊÇ shell)¡£ ¿ÉÒÔÖ¸¶¨ÐèÒªµÄ×îµÍ°æ±¾£¬ ÀýÈç 84+¡£ ²»Ö§³ÖµÄ°æ±¾£¬ ¿ÉÒÔÔÚ INVALID_TCL_VER ±äÁ¿ÖÐÖð¸öÖ¸¶¨¡£
USE_TCL_BUILD ±íʾ port ÔÚÁª±à¹ý³ÌÖÐÐèҪʹÓà Tcl¡£
USE_TCL_WRAPPER ÐèҪʹÓà Tcl shell ¶ø²»ÐèÒªÌØ¶¨°æ±¾µÄ tclsh µÄ port ¿ÉÒÔʹÓÃÕâ¸öбäÁ¿¡£ ϵͳÖлᰲװ tclsh wrapper£¬ Óû§Ôò¿ÉÒÔÖ¸¶¨ËùÏ£ÍûµÄ tcl shell¡£
WITH_TCL_VER ÓÉÓû§¶¨ÒåµÄ¡¢ Ï£ÍûʹÓÃµÄ Tcl °æ±¾¡£
UNIQUENAME_WITH_TCL_VER ºÍ WITH_TCL_VER ÀàËÆ£¬ µ«ÊÇÕë¶Ô port Ö¸¶¨µÄ¡£
USE_TCL_THREADS ÐèÒª°üº¬Ïß³ÌÖ§³ÖµÄ Tcl/Tk¡£
USE_TK ±íʾ port ÒÀÀµÓÚ Tk ¿â (²»ÊÇ wish shell)¡£ Ëüͬʱ»áÒþº¬½« USE_TCL ÉèÖÃΪÏàͬµÄÖµ¡£ ¸ü¶àµÄÃèÊö£¬ Çë²Î¿¼ USE_TCL ±äÁ¿¡£
USE_TK_BUILD Óë USE_TCL_BUILD ±äÁ¿±í´ïÀàËÆµÄº¬Òå¡£
USE_TK_WRAPPER Óë USE_TCL_WRAPPER ±äÁ¿±í´ïÀàËÆµÄº¬Òå¡£
WITH_TK_VER ±í´ïÓë WITH_TCL_VER ±äÁ¿ÀàËÆµÄº¬Ò壬 Ëüͬʱ»áÒþº¬½« WITH_TCL_VER ÉèÖÃΪÏàͬµÄÖµ¡£

¡¡¡¡¿ÉÓõıäÁ¿µÄÍêÕûÁÐ±í£¬ ¿ÉÒÔÔÚ /usr/ports/Mk/bsd.tcl.mk ÖÐÕÒµ½¡£


6.15 ʹÓà Emacs

¡¡¡¡±¾½ÚÉÐÓдý׫д¡£


6.16 ʹÓà Ruby

±í 6-22. ʹÓà Ruby µÄ port ¿ÉÒÔʹÓõıäÁ¿

±äÁ¿ ˵Ã÷
USE_RUBY ´Ë port ÐèÒª Ruby¡£
USE_RUBY_EXTCONF ´Ë port ʹÓà extconf.rb À´Íê³ÉÅäÖá£
USE_RUBY_SETUP ´Ë port ʹÓà setup.rb À´Íê³ÉÅäÖá£
RUBY_SETUP ½«´Ë±äÁ¿ÃûÉèÖÃΪËùÓÃµÄ setup.rb µÄÎļþÃû¡£ ͨ³£»áÊÇ install.rb¡£

¡¡¡¡Ï±íչʾÁË ports ϵͳÌṩ¸ø port ×÷ÕßµÄһЩ±äÁ¿¡£ ÄúӦʹÓÃÕâЩ±äÁ¿£¬ ÒÔ±ã°ÑÎļþ×°µ½ºÏÊʵÄλÖᣠÇ뾡¿ÉÄÜ¶àµØÔÚ pkg-plist ÖÐʹÓÃËüÃÇ¡£ ÕâЩ±äÁ¿²»Ó¦ÔÚ port ÖÐÖØÐ¶¨Òå¡£

±í 6-23. ʹÓà Ruby µÄ port ÖеÄһЩ¿ÉÓõÄÖ»¶Á±äÁ¿

±äÁ¿ ˵Ã÷ ʾ·¶Öµ
RUBY_PKGNAMEPREFIX ×÷Ϊ PKGNAMEPREFIX ÒÔÇø·ÖÓÃÓÚ²»Í¬ Ruby °æ±¾µÄ package¡£ ruby18-
RUBY_VERSION x.y.z ÐÎʽµÄÍêÕû ruby °æ±¾¡£ 1.8.2
RUBY_SITELIBDIR ƽ̨Î޹ؿâµÄ°²×°Â·¾¶¡£ /usr/local/lib/ruby/site_ruby/1.8
RUBY_SITEARCHLIBDIR ƽ̨Ïà¹ØµÄ¿âµÄ°²×°Â·¾¶¡£ /usr/local/lib/ruby/site_ruby/1.8/amd64-freebsd6
RUBY_MODDOCDIR Ä£¿éÎĵµµÄ°²×°Â·¾¶¡£ /usr/local/share/doc/ruby18/patsy
RUBY_MODEXAMPLESDIR Ä£¿éÓÃÀýµÄ°²×°Â·¾¶¡£ /usr/local/share/examples/ruby18/patsy

¡¡¡¡¿ÉÓñäÁ¿µÄÍêÕûÁÐ±í£¬ ¿ÉÒÔÔÚ /usr/ports/Mk/bsd.ruby.mk ÖÐÕÒµ½¡£


6.17 ʹÓà SDL

¡¡¡¡±äÁ¿ USE_SDL ¿ÉÒÔÓÃÓÚ×Ô¶¯ÅäÖà port µÄÒÀÀµ¹ØÏµ£¬ ÒÔÊÊӦʹÓÃÀàËÆ devel/sdl12 ºÍ x11-toolkits/sdl_gui ÕâЩÒÀÀµ SDL µÄ¿âµÄÇéÐΡ£

¡¡¡¡Ä¿Ç°ÏµÍ³Äܹ»Ê¶±ðÏÂÁÐ SDL ¿â£º

¡¡¡¡Òò´Ë£¬ Èç¹û port ÐèÒªÒÀÀµ net/sdl_net ºÍ audio/sdl_mixer£¬ Ôò¶ÔÓ¦µÄд·¨½«ÊÇ£º

USE_SDL=        net mixer

¡¡¡¡Í¬Ê±£¬ net/sdl_net ºÍ audio/sdl_mixer ËùÒÀÀµµÄ devel/sdl12 Ò²»á±»×Ô¶¯µØ¼ÓÈë¡£

¡¡¡¡¼ÓÈëÄúʹÓà USE_SDL£¬ Ëü½«×Ô¶¯µØ£º

  • ½«¶ÔÓÚ sdl12-config µÄÒÀÀµ¹ØÏµ¼ÓÈëµ½ BUILD_DEPENDS

  • ½«±äÁ¿ SDL_CONFIG ¼ÓÈëµ½ CONFIGURE_ENV

  • ½«¶ÔËùÑ¡µÄ¿âµÄÒÀÀµ£¬ ¼ÓÈëµ½ LIB_DEPENDS

¡¡¡¡Òª¼ì²éij¸öÌØ¶¨µÄ SDL ¿âÊÇ·ñ¿ÉÓ㬠¿ÉÒÔͨ¹ý WANT_SDL ±äÁ¿À´´ïµ½Ä¿µÄ£º

WANT_SDL=yes

.include <bsd.port.pre.mk>

.if ${HAVE_SDL:Mmixer}!=""
USE_SDL+=   mixer
.endif

.include <bsd.port.post.mk>

6.18 ʹÓà wxWidgets

¡¡¡¡ÕâÒ»½Ú½éÉÜÁËÔÚ ports tree ÖÐµÄ wxWidgets ¿âµÄÏÖ×´£¬ ÒÔ¼°ËüÓë ports ϵͳµÄ¼¯³É¡£


6.18.1 ½éÉÜ

¡¡¡¡Ðí¶à²»Í¬°æ±¾µÄ wxWidgets ¿âÖ®¼äÊÇ´æÔÚÏ໥³åÍ»µÄ (ËüÃǻᰲװͬÃûµÄÎļþ) ÔÚ ports ϵͳÖУ¬ ÕâÒ»ÎÊÌâÊÇͨ¹ý½«²»Í¬µÄ°æ±¾ÒÔ°üº¬°æ±¾ºÅºó׺µÄÃû×Ö°²×°À´½â¾öµÄ¡£

¡¡¡¡ÕâÑù×öµÄÒ»¸ö×îÃ÷ÏÔµÄȱµãÊÇ£¬ Ó¦ÓóÌÐò±ØÐë½øÐÐÐ޸ģ¬ ²ÅÄÜÕÒµ½ËùÏ£ÍûµÄ°æ±¾¡£ ÐÒÔ˵ÄÊÇ£¬ ¶àÊýÓ¦ÓóÌÐò»áµ÷Óà wx-config ½Å±¾À´È·¶¨ÐèÒªµÄ±àÒëÆ÷ºÍÁ¬½ÓÆ÷Ñ¡Ïî¡£ Õâ¸ö½Å±¾»áËæ¿ÉÓõİ汾²»Í¬¶øÓв»Í¬µÄÃû×Ö¡£ Ö÷ÒªµÄÓ¦ÓóÌÐò¶¼»á×ðÖØ»·¾³±äÁ¿µÄÅäÖ㬠»òÌṩһ¸ö configure ²ÎÊý£¬ ÓÃÒÔÖ¸¶¨µ÷ÓÃÄĸö wx-config¡£ Èç¹û²»ÊÇÕâÑùµÄ»°£¬ ¾ÍÐèÒª¶ÔÓ¦ÓóÌÐò´ò²¹¶¡ÁË¡£


6.18.2 °æ±¾µÄÑ¡Ôñ

¡¡¡¡ÎªÁËÈÃÄúµÄ port ʹÓÃÖ¸¶¨°æ±¾µÄ wxWidgets£¬ ¿ÉÒÔ¶¨ÒåÁ½¸ö±äÁ¿ (Èç¹ûÖ»¶¨ÒåÁËÒ»¸ö£¬ ÔòÁíÒ»¸ö»áȡĬÈÏÖµ)£º

±í 6-24. ÓÃÓÚÑ¡Ôñ wxWidgets °æ±¾µÄ±äÁ¿

±äÁ¿ ˵Ã÷ ĬÈÏÖµ
USE_WX ÁгöÕâ¸ö port ÄÜʹÓõİ汾 È«²¿°æ±¾
USE_WX_NOT ÁгöÕâ¸ö port ²»ÄÜʹÓõİ汾 ÎÞ

¡¡¡¡ÏÂÃæÊÇ¿ÉÓÃµÄ wxWidgets °æ±¾£¬ ÒÔ¼°¶ÔÓ¦µÄ ports£º

±í 6-25. ¿ÉÓÃµÄ wxWidgets versions

°æ±¾ Port
2.4 x11-toolkits/wxgtk24
2.6 x11-toolkits/wxgtk26
2.8 x11-toolkits/wxgtk28

×¢Òâ: ´Ó 2.5 °æ¿ªÊ¼£¬ Ò²ÌṩÁ˶ÔÓ¦µÄ Unicode °æ±¾£¬ ÕâÖÖ°æ±¾¿ÉÒÔͨ¹ý slave port °²×°£¬ ÓëÆÕͨ°æ±¾Ïà±È£¬ Ëü»á¶àÒ»¸ö -unicode ºó׺£¬ ²»¹ýÕâ¿ÉÒÔͨ¹ýʹÓñäÁ¿À´´¦Àí (Çë²Î¼û µÚ 6.18.4 ½Ú)¡£

¡¡¡¡ÔÚ ±í 6-24 ÖеıäÁ¿£¬ ¿ÉÒÔÉèΪÏÂÁÐÖµ»òÓɿոñ·Ö¸ôµÄ×éºÏ£º

±í 6-26. wxWidgets °æ±¾

˵Ã÷ Àý×Ó
µ¥¸ö°æ±¾ 2.4
ij°æ±¾ÒÔÉϰ汾 2.4+
ij°æ±¾ÒÔϰ汾 2.6-
ij¶Î°æ±¾ (°æ±¾ºÅ½ÏСµÄ±ØÐëÔÚǰ) 2.4-2.6

¡¡¡¡³ý´ËÖ®Í⣬ »¹ÓÐһЩÓÃÒÔ´Ó¿ÉÓõı¾ÄDZ¾ÖÐÑ¡ÔñËùÏ£ÍûµÄ°æ±¾µÄ±äÁ¿¡£ ÕâÖÖ±äÁ¿Ò²¿ÉÒÔÉèΪһ×é°æ±¾£¬ ¶ø¿¿Ç°µÄ°æ±¾µÄÓÅÏȼ¶¸ü¸ß¡£

±í 6-27. ÓÃÓÚÑ¡ÔñÏ£ÍûµÄ°æ±¾µÄ wxWidgets versions

±äÁ¿Ãû ÓÃÓÚ
WANT_WX_VER port
WITH_WX_VER Óû§

6.18.3 Ñ¡Ôñ×é¼þ

¡¡¡¡Ò²ÓÐһЩÆäËûÓ¦Ó㬠¾¡¹ÜËüÃDZ¾Éí²¢²»ÊÇ wxWidgets ¿â£¬ µ«È´ÓëÖ®Ïà¹Ø¡£ ÕâЩӦÓóÌÐò¿ÉÒÔÔÚ WX_COMPS ±äÁ¿ÖÐʹÓ㬠ÒÔÏÂÊÇ¿ÉÓõÄ×é¼þ£º

±í 6-28. ¿ÉÓÃµÄ wxWidgets ×é¼þ

Ãû³Æ ˵Ã÷ °æ±¾ÏÞÖÆ
wx Ö÷¿â ÎÞ
contrib µÚÈý·½¿â ÎÞ
python wxPython (Python °ó¶¨) 2.4-2.6
mozilla wxMozilla 2.4
svg wxSVG 2.6

¡¡¡¡Äú¿ÉÒÔΪÿ¸öÒÀÀµµÄ×é¼þ£¬ ͨ¹ýðºÅ·Ö¸ôµÄºó׺ָ¶¨ÆäÀàÐÍ¡£ Èç¹ûûÓÐÖ¸¶¨£¬ Ôò»áʹÓÃĬÈϵÄÒÀÀµÀàÐÍ (²Î¼û ±í 6-30)¡£ ÏÂÃæÊÇ¿ÉÓõÄÀàÐÍ£º

±í 6-29. ¿ÉÓÃµÄ wxWidgets ÒÀÀµÀàÐÍ

Ãû³Æ ˵Ã÷
build Áª±àʱÐèÒª¸Ã×é¼þ£¬ Ï൱ÓÚ BUILD_DEPENDS
run ÔËÐÐʱÐèÒª¸Ã×é¼þ£¬ Ï൱ÓÚ RUN_DEPENDS
lib Áª±àºÍÔËÐÐʱ¾ùÐèÒª¸Ã×é¼þ£¬ Ï൱ÓÚ LIB_DEPENDS

¡¡¡¡×é¼þµÄĬÈÏÒÀÀµ¹ØÏµÀàÐÍ£¬ ÈçϱíËùʾ£º

±í 6-30. ĬÈ쵀 wxWidgets ÒÀÀµ¹ØÏµÀàÐÍ

×é¼þ ÒÀÀµ¹ØÏµÀàÐÍ
wx lib
contrib lib
python run
mozilla lib
svg lib

Àý 6-6. Ñ¡Ôñ wxWidgets ×é¼þ

ÏÂÃæµÄƬ¶ÎչʾÁËʹÓà wxWidgets °æ±¾ 2.4 ¼°µÚÈý·½¿âµÄ·½·¨¡£

USE_WX=       2.4
WX_COMPS=     wx contrib

6.18.4 Unicode

¡¡¡¡wxWidgets ¿â´ÓÆä 2.5 °æ¿ªÊ¼Ö§³Ö Unicode ÁË¡£ ÔÚ ports ϵͳÖУ¬ ÕâÁ½ÖÖ°æ±¾¾ùÓÐÌṩ£¬ ²¢¿ÉÒÔͨ¹ýÏÂÁбäÁ¿À´Ñ¡Ôñ£º

±í 6-31. ÓÃÒÔÔÚ Unicode °æ±¾µÄ wxWidgets µÄ±äÁ¿

±äÁ¿ ˵Ã÷ ×÷ÓÃ
WX_UNICODE ¸Ã port Ö»ÄÜ ÅäºÏ Unicode °æ±¾Ê¹Óà port
WANT_UNICODE port Äܹ»ÓëÁ½ÖÖ°æ±¾ÅäºÏʹÓ㬠µ«Ï£ÍûʹÓà Unicode °æ±¾ port
WITH_UNICODE Áî port ʹÓà Unicode °æ±¾ Óû§
WITHOUT_UNICODE Áî port ʹÓÃÆÕͨ°æ±¾£¬ Èç¹ûÖ§³ÖµÄ»° (¼´Î´¶¨Òå WX_UNICODE) Óû§

¾¯¸æ: Èç¹û port ͬʱ֧³Ö Unicode ºÍÆÕͨ°æ±¾£¬ Ç벻ҪʹÓà WX_UNICODE¡£ Èç¹ûÏ£ÍûĬÈÏÆôÓà Unicode£¬ Ó¦¶¨Òå WANT_UNICODE¡£


6.18.5 ¼ì²âÒѰ²×°µÄ°æ±¾

¡¡¡¡Òª¼ì²âϵͳÖа²×°µÄ°æ±¾£¬ ¾ÍÐèÒª¶¨Òå WANT_WX¡£ Èç¹ûûÓн«ÆäÉèÖÃÎªÌØ¶¨µÄ°æ±¾£¬ Ôò×é¼þ½«°üº¬°æ±¾ºó׺¡£ HAVE_WX ±äÁ¿ÔÚ¼ì²âÍê³Éºó»á×Ô¶¯ÌîÈëÄÚÈÝ¡£

Àý 6-7. ¼ì²âÒѰ²×°µÄ wxWidgets °æ±¾ºÍ×é¼þ

ÏÂÃæµÄƬ¶Î¿ÉÒÔÔÚ°²×° wxWidgets µÄϵͳÖÐÁî port ʹÓÃËü£¬ ·´Ö®Ôò×÷ΪһÏîÑ¡ÏîÌṩ¡£

WANT_WX=        yes

.include <bsd.port.pre.mk>

.if defined(WITH_WX) || ${HAVE_WX:Mwx-2.4} != ""
USE_WX=         2.4
CONFIGURE_ARGS+=--enable-wx
.endif

ÏÂÃæµÄƬ¶ÎÔÚϵͳÖÐÓа²×°¹ýʱÆôÓà wxPython Ö§³Ö£¬ »òÔÚûÓа²×°Ê±×÷ΪѡÏîÌṩ£» ¶Ô wxWidgets Ò²ÊÇÈç´Ë°ìÀí£¬ °æ±¾½ÔΪ 2.6¡£

USE_WX=         2.6
WX_COMPS=       wx
WANT_WX=        2.6

.include <bsd.port.pre.mk>

.if defined(WITH_WXPYTHON) || ${HAVE_WX:Mpython} != ""
WX_COMPS+=      python
CONFIGURE_ARGS+=--enable-wxpython
.endif

6.18.6 ¶¨ÒåµÄ±äÁ¿

¡¡¡¡ÒÔÏÂÊÇһЩ¿ÉÒÔÔÚ port ÖÐʹÓõıäÁ¿ (Õâ֮ǰÐèÒª¶¨Òå ±í 6-24 ÖеÄÖÁÉÙÒ»¸ö±äÁ¿)¡£

±í 6-32. ΪʹÓà wxWidgets µÄ port ¶¨ÒåµÄ±äÁ¿

±äÁ¿Ãû ˵Ã÷
WX_CONFIG µ½ wxWidgets wx-config ½Å±¾µÄ·¾¶ (Ãû×Ö»áËæ°æ±¾²»Í¬¶ø²»Í¬)
WXRC_CMD µ½ wxWidgets wxrc ³ÌÐòµÄ·¾¶ (Ãû×Ö»áËæ°æ±¾²»Í¬¶ø²»Í¬)
WX_VERSION ½«ÒªÓõ½µÄ wxWidgets °æ±¾ (ÀýÈ磬 2.6)
WX_UNICODE Èç¹ûûÓж¨Ò壬 ¶ø½«»áʹÓà Unicode ʱ£¬ ϵͳ½«×Ô¶¯¶¨Òå´Ë±äÁ¿¡£

6.18.7 ÔÚ bsd.port.pre.mk ÖнøÐд¦Àí

¡¡¡¡Èç¹ûÄúÐèÒªÔÚÒýÓÃÁË bsd.port.pre.mk Ö®ºóÁ¢¼´¶ÔһЩ±äÁ¿½øÐд¦Àí£¬ ÔòÐèÒª¶¨Òå WX_PREMK¡£

ÖØÒª: Èç¹û¶¨ÒåÁË WX_PREMK£¬ ÔòÔÚ´Ë Ö®ºó ¶¨ÒåµÄÒÀÀµ¹ØÏµ¡¢ ×é¼þºÍ±äÁ¿½«²»»áÉúЧ£¬ ÄúÔÚÒýÓà bsd.port.pre.mk ֮ǰµÄ wxWidgets port ±äÁ¿½«Ö±½ÓÆð×÷Óá£

Àý 6-8. ÔÚÃüÁîÖÐʹÓà wxWidgets ±äÁ¿

ÏÂÃæµÄƬ¶ÎÒÔÖ´ÐÐ wx-config ½Å±¾À´µÃµ½ÍêÕûµÄ°æ±¾ºÅ£¬ ½«Æä¸³Öµµ½±äÁ¿ÖУ¬ ²¢´«µÝ¸øÒ»¸ö³ÌÐò¾ÙÀý˵Ã÷ÁË WX_PREMK µÄÓ÷¨¡£

USE_WX=         2.4
WX_PREMK=       yes

.include <bsd.port.pre.mk>

.if exists(${WX_CONFIG})
VER_STR!=       ${WX_CONFIG} --release

PLIST_SUB+=     VERSION="${VER_STR}"
.endif

×¢Òâ: ÔÚ target ÖÐµÄ wxWidgets ±äÁ¿¿ÉÒÔÖ±½ÓʹÓ㬠¶øÎÞÐè WX_PREMK µÄ²ÎÓë¡£


6.18.8 ¶îÍâµÄ configure ²ÎÊý

¡¡¡¡Ä³Ð© GNU configure ½Å±¾ÔÚÖ»ÉèÖÃÁË WX_CONFIG »·¾³±äÁ¿Ê±£¬ ÎÞ·¨×Ô¶¯ÕÒµ½ wxWidgets£¬ ¶øÐèҪʹÓöîÍâµÄ²ÎÊýÀ´¼ÓÒÔÖ¸¶¨¡£ Äú¿ÉÒÔʹÓà WX_CONF_ARGS ±äÁ¿À´¸ø³öÕâЩ²ÎÊý¡£

±í 6-33. ¿ÉÓÃÓÚ WX_CONF_ARGS µÄÖµ

¿ÉÓÃÖµ ½á¹û
absolute --with-wx-config=${WX_CONFIG}
relative --with-wx=${LOCALBASE} --with-wx-config=${WX_CONFIG:T}

6.19 ʹÓà Lua

¡¡¡¡ÕâÒ»½ÚÃèÊöÁËÔÚ ports ϵͳÖÐµÄ Lua ¿âµÄÏÖ×´£¬ ÒÔ¼°ËüÓë ports ϵͳµÄ¼¯³É¡£


6.19.1 ½éÉÜ

¡¡¡¡Ðí¶à²»Í¬°æ±¾µÄ Lua ¿âºÍÏà¹ØµÄ½âÊÍÆ÷Ö®¼äÊÇÏ໥³åÍ»µÄ (ËüÃǻᰲװͬÃûµÄÎļþ)¡£ ÔÚ ports ϵͳÖУ¬ ÕâÒ»ÎÊÌâÊÇͨ¹ý½«²»Í¬°æ±¾µÄÎļþÒÔ²»Í¬µÄ°æ±¾ºÅ×÷Ϊºó׺Ãû½â¾öµÄ¡£

¡¡¡¡ÕâÑù×ö×î´óµÄÒ»¸öÎÊÌâÊÇ£¬ ÿ¸ö³ÌÐò¶¼ÐèÒª½øÐÐÐ޸IJÅÄÜÕÒµ½ËüËùÐèÒªµÄ°æ±¾¡£ ²»¹ý£¬ ͨ¹ý½«Êʵ±µÄ²ÎÊý´«¸ø±àÒëÆ÷ºÍÁ¬½ÓÆ÷ºÜÈÝÒ×½â¾öÕâ¸öÎÊÌâ¡£


6.19.2 Ñ¡Ôñ°æ±¾

¡¡¡¡ÒªÈÃÄúµÄ port ʹÓÃÖ¸¶¨°æ±¾µÄ Lua£¬ ¿ÉÒÔ¶¨ÒåÁ½¸ö±äÁ¿µÄÖµ (Èç¹ûÖ»¶¨ÒåÁËÆäÖеÄÒ»¸ö£¬ ÔòÁíÒ»¸ö»áʹÓÃĬÈÏÖµ)£º

±í 6-34. ÓÃÓÚÑ¡Ôñ Lua °æ±¾µÄ±äÁ¿

±äÁ¿ ˵Ã÷ ĬÈÏÖµ
USE_LUA port Äܹ»Ê¹ÓÃµÄ Lua °æ±¾Áбí È«²¿¿ÉÓð汾
USE_LUA_NOT Óë port ²»¼æÈݵİ汾Áбí ÎÞ

¡¡¡¡ÏÂÃæÊÇĿǰ ports ϵͳÌṩµÄ¿ÉÓà Lua °æ±¾ºÍ¶ÔÓ¦µÄĿ¼£º

±í 6-35. ¿ÉÓÃµÄ Lua °æ±¾

°æ±¾ Port
4.0 lang/lua4
5.0 lang/lua50
5.1 lang/lua

¡¡¡¡ÔÚ ±í 6-34 ÖеıäÁ¿£¬ ¿ÉÒÔÉèÖÃΪÏÂÃæµÄ°æ±¾Ö®Ò»£¬ »òÓÿոñ·Ö¸ôµÄÈô¸É°æ±¾£º

±í 6-36. Ö¸¶¨ Lua °æ±¾

˵Ã÷ Àý×Ó
Ò»¸ö°æ±¾ 4.0
ij¸ö°æ±¾»ò¸ü¸ß°æ±¾ 5.0+
²»¸ßÓÚij¸ö°æ±¾ 5.0-
°æ±¾·¶Î§ (µÍ°æ±¾±ØÐëÔÚǰ) 5.0-5.1

¡¡¡¡³ý´ËÖ®Í⣬ Ò²ÓÐһЩÓÃÀ´´Ó¿ÉÓð汾ÖÐÑ¡ÔñÍÆ¼ö°æ±¾µÄÆäËü±äÁ¿¡£ ÕâЩ±äÁ¿Ò²¿ÉÒÔÉèÖÃΪһ×é°æ±¾£¬ ¶øÇ°ÃæµÄ°æ±¾ÓÅÏȼ¶½Ï¸ß¡£

±í 6-37. ÓÃÓÚÑ¡ÔñÍÆ¼ö Lua °æ±¾µÄ±äÁ¿

±äÁ¿Ãû ÓÃÓÚ
WANT_LUA_VER port
WITH_LUA_VER Óû§

Àý 6-9. Ñ¡Ôñ Lua °æ±¾

ÏÂÃæÊÇÒ»¸öÓõ½ Lua °æ±¾ 5.0 »ò 5.1£¬ ²¢Ä¬ÈÏʹÓà 5.0 µÄ port µÄƬ¶Î¡£ Õâ¸öĬÈÏÖµ¿ÉÒÔͨ¹ý WITH_LUA_VER À´ÁíÍâÖ¸¶¨¡£

USE_LUA=      5.0-5.1
WANT_LUA_VER= 5.0

6.19.3 ×é¼þµÄÑ¡Ôñ

¡¡¡¡Ò²ÓÐһЩÆäËüµÄÓ¦Ó㬠¾¡¹Ü±¾Éí²¢²»ÊÇ Lua ¿â£¬ µ«È´ÓëËüÃÇÏà¹Ø¡£ ÕâЩӦÓÿÉÒÔͨ¹ý LUA_COMPS ±äÁ¿À´Ö¸¶¨¡£ ¿ÉÓõÄ×é¼þÈçÏ£º

±í 6-38. ¿ÉÓÃµÄ Lua ×é¼þ

Ãû×Ö ËµÃ÷ °æ±¾ÏÞÖÆ
lua Ö÷¿â ÎÞ
tolua ÓÃÓÚ·ÃÎÊ C/C++ ´úÂëµÄ¿â 4.0-5.0
ruby Ruby °ó¶¨ 4.0-5.0

×¢Òâ: »¹ÓÐһЩÆäËüµÄ×é¼þ£¬ µ«ÕâЩ×é¼þÊÇÓɽâÊÍÆ÷£¬ ¶ø²»ÊÇÓÉÓ¦ÓóÌÐòʹÓÃµÄ (Ò²¾ÍÊDz»±»ÆäËüÄ£¿éʹÓÃ)¡£

¡¡¡¡Ã¿¸ö×é¼þµÄÒÀÀµ¹ØÏµÀàÐÍ¿ÉÒÔͨ¹ýÊÖ¹¤Ìí¼Ó·Ö¸ô·ûΪðºÅµÄºó׺À´Ö¸¶¨¡£ Èç¹û²»Ö¸¶¨£¬ Ôò»á²ÉÓÃĬÈÏÀàÐÍ (Çë²Î¼û ±í 6-40)¡£ ÒÔÏÂÊÇ¿ÉÓõÄÒÀÀµ¹ØÏµÀàÐÍ£º

±í 6-39. ¿ÉÓÃµÄ Lua ÒÀÀµ¹ØÏµÀàÐÍ

Ãû×Ö ËµÃ÷
build Õâ¸ö×é¼þÊÇÁª±à¹ý³ÌËù±ØÐèµÄ£¬ Ï൱ÓÚ BUILD_DEPENDS
run ÔÚÔËÐÐʱÐèÒªÕâ¸ö×é¼þ£¬ Ï൱ÓÚ RUN_DEPENDS
lib Õâ¸ö×é¼þÔÚÁª±àºÍÔËÐÐʱ¶¼ÐèÒª£¬ Ï൱ÓÚ LIB_DEPENDS

¡¡¡¡×é¼þµÄĬÈÏÒÀÀµ¹ØÏµÀàÐÍÈçÏ£º

±í 6-40. ĬÈ쵀 Lua ÒÀÀµ¹ØÏµÀàÐÍ

×é¼þ ÒÀÀµ¹ØÏµÀàÐÍ
lua ¶ÔÓÚ 4.0-5.0 ÊÇ lib (¶¯Ì¬Á¬½Ó) ¶ø¶ÔÓÚ 5.1 ÔòÊÇ build (¾²Ì¬Á¬½Ó)
tolua build (¾²Ì¬Á¬½Ó)
ruby lib (¶¯Ì¬Á¬½Ó)

Àý 6-10. Ñ¡Ôñ Lua ×é¼þ

ÏÂÃæÊÇÒ»¸öʹÓÃÁË Lua °æ±¾ 4.0 ¼°Æä Ruby °ó¶¨µÄ port Ƭ¶Î¡£

USE_LUA=      4.0
LUA_COMPS=    lua ruby

6.19.4 ¼ì²âϵͳÖÐÒѰ²×°µÄ°æ±¾

¡¡¡¡Òª¼ì²âϵͳÖÐÒѰ²×°µÄ°æ±¾£¬ Äú±ØÐ붨Òå WANT_LUA¡£ Èç¹ûûÓн«ÆäÉ趨Ϊ¾ßÌåµÄ°æ±¾£¬ Ôò×é¼þ»á°üº¬°æ±¾ºó׺¡£ ÔÚ¼ì²âÖ®ºó£¬ HAVE_LUA ±äÁ¿½«ÉèΪ¼ì²âµ½µÄ°æ±¾¡£

Àý 6-11. ¼ì²âÒѰ²×°µÄ Lua °æ±¾ºÍ×é¼þ

ÏÂÃæÊÇÒ»¸öÈç¹ûϵͳÖÐÓа²×° Lua »òÑ¡ÔñÁËÑ¡ÏîʱʹÓÃËüµÄ port Ƭ¶Î¡£

WANT_LUA=       yes

.include <bsd.port.pre.mk>

.if defined(WITH_LUA5) || ${HAVE_LUA:Mlua-5.[01]} != ""
USE_LUA=        5.0-5.1
CONFIGURE_ARGS+=--enable-lua5
.endif

ÏÂÃæµÄÕâ¶Î port ÔÚϵͳÖÐÒѾ­Óа²×°£¬ »òÓû§Ñ¡ÔñÁË tolua ºÍ Lua Ö§³Öʱ¼ÓÒÔ°²×°£¬ °æ±¾¾ùÑ¡Ôñ 4.0¡£

USE_LUA=        4.0
LUA_COMPS=      lua
WANT_LUA=       4.0

.include <bsd.port.pre.mk>

.if defined(WITH_TOLUA) || ${HAVE_LUA:Mtolua} != ""
LUA_COMPS+=     tolua
CONFIGURE_ARGS+=--enable-tolua
.endif

6.19.5 ¶¨ÒåµÄ±äÁ¿

¡¡¡¡ÔÚ port ÖпÉÒÔʹÓÃÏÂÁбäÁ¿ (ÔÚ¶¨ÒåÁË ±í 6-34 ÖÐÖÁÉÙÒ»¸ö±äÁ¿Ö®ºó)¡£

±í 6-41. ΪÓõ½ Lua µÄ port ¶¨ÒåµÄ±äÁ¿

±äÁ¿Ãû ˵Ã÷
LUA_VER ½«ÒªÊ¹ÓÃµÄ Lua °æ±¾¡£ (ÀýÈ磬 5.1)
LUA_VER_SH Lua ¶¯Ì¬Á¬½Ó¿âµÄÖ÷°æ±¾ (ÀýÈ磬 1)
LUA_VER_STR ²»´øµãµÄ Lua °æ±¾ (ÀýÈ磬 51)
LUA_PREFIX °²×° Lua (¼°Æä×é¼þ) ʹÓõĺó׺
LUA_SUBDIR ÔÚ ${PREFIX}/bin¡¢ ${PREFIX}/share ºÍ ${PREFIX}/lib ÖÐÓÃÓÚ°²×° Lua µÄ×ÓĿ¼
LUA_INCDIR ÓÃÒÔ°²×° Lua ºÍ tolua Í·ÎļþµÄĿ¼
LUA_LIBDIR ÓÃÒÔ°²×° Lua ºÍ tolua ¿âÎļþµÄĿ¼
LUA_MODLIBDIR ÓÃÒÔ°²×° Lua Ä£¿é¶¯Ì¬Á¬½Ó¿â (.so) µÄĿ¼
LUA_MODSHAREDIR ÓÃÒÔ°²×° Lua Ä£¿é (.lua) µÄĿ¼
LUA_PKGNAMEPREFIX Lua Ä£¿é°üµÄºó׺Ãû
LUA_CMD µ½ Lua ½âÊÍÆ÷µÄ·¾¶
LUAC_CMD µ½ Lua ±àÒëÆ÷µÄ·¾¶
TOLUA_CMD µ½ tolua ³ÌÐòµÄ·¾¶

Àý 6-12. ¸æËß port µ½Ê²Ã´µØ·½È¥ÕÒ Lua

ÏÂÃæµÄ port Ƭ¶ÎչʾÁËÈçºÎ¸æËßʹÓÃµÄ configure ½Å±¾È¥Ê²Ã´µØ·½²éÕÒ Lua µÄÍ·ÎļþºÍ¿âÎļþ¡£

USE_LUA=        4.0
GNU_CONFIGURE=  yes
CONFIGURE_ENV=  CPPFLAGS="-I${LUA_INCDIR}" LDFLAGS="-L${LUA_LIBDIR}"

6.19.6 ÔÚ bsd.port.pre.mk ʱ½øÐд¦Àí

¡¡¡¡Èç¹ûÄúÐèÒªÔÚʹÓÃÒýÓà bsd.port.pre.mk Ö®ºó¾ÍµÃµ½±äÁ¿£¬ ÒԱ㽫ÆäÓÃÓÚÖ´ÐÐһЩÃüÁ ÐèÒª¶¨Òå LUA_PREMK¡£

ÖØÒª: Èç¹ûÄú¶¨ÒåÁË LUA_PREMK£¬ ÔòÔÚÄúÒýÓà bsd.port.pre.mk Ö®ºó£¬ ¼´Ê¹ÐÞ¸ÄÁË Lua port ±äÁ¿£¬ °æ±¾ºÍÒÀÀµ¹ØÏµÒ²¶¼²»»áËæÖ®·¢Éú±ä»¯ÁË¡£

Àý 6-13. ÔÚÃüÁîÖÐʹÓà Lua ±äÁ¿

ÏÂÃæµÄƬ¶ÎչʾÁËÈçºÎÀûÓà LUA_PREMK£¬ ²¢ÔËÐÐ Lua ½âÊÍÆ÷µÃµ½ÍêÕûµÄ°æ±¾´®£¬ ½«Æä¸³Öµ¸øÒ»¸ö±äÁ¿£¬ ²¢´«µÝ¸ø³ÌÐò¡£

USE_LUA=        5.0
LUA_PREMK=      yes

.include <bsd.port.pre.mk>

.if exists(${LUA_CMD})
VER_STR!=       ${LUA_CMD} -v

CFLAGS+=        -DLUA_VERSION_STRING="${VER_STR}"
.endif

×¢Òâ: ÔÚ target ÖÐµÄ Lua ±äÁ¿¿ÉÒÔÔÚÃüÁîÖа²È«µÄʹÓ㬠¶øÎÞÐèʹÓà LUA_PREMK¡£


6.20 ʹÓà Xfce

¡¡¡¡USE_XFCE ±äÁ¿¿ÉÒÔÓÃÀ´×Ô¶¯ÅäÖÃʹÓûùÓÚ Xfce ¿â»òÓ¦ÓóÌÐò£¬ Èç x11-toolkits/libxfce4gui ºÍ x11-wm/xfce4-panel µÄ port µÄÒÀÀµ¹ØÏµ¡£

¡¡¡¡Ä¿Ç°£¬ ϵͳÄܹ»Ê¶±ðÏÂÁÐ Xfce ¿âºÍÓ¦ÓóÌÐò£º

¡¡¡¡³ý´ËÖ®Í⣬ »¹Äܹ»Ê¹ÓÃÏÂÁвÎÊý£º

  • configenv£º Èç¹ûÄúµÄ port ÐèҪʹÓÃÌØÊâµÄ CONFIGURE_ENV À´²éÕÒËùÐèµÄ¿â¡£

    -I${LOCALBASE}/include -L${LOCALBASE}/lib
    
    »á¼Óµ½ CONFIGURE_ENV µÄ CPPFLAGS¡£

¡¡¡¡Òò´Ë£¬ Èç¹û port Óе½ sysutils/xfce4-mcs-manager µÄÒÀÀµ¹ØÏµ£¬ ²¢ÐèÒªÔÚ configure µÄ»·¾³ÖÐÖ¸¶¨ÌØÊâµÄ¶ö CPPFLAGS£¬ ÔòËùÓõÄÓ﷨Ϊ£º

USE_XFCE=        mcsmanager configenv

6.21 ʹÓà Mozilla

±í 6-42. Óõ½ Mozilla µÄ port ʹÓõıäÁ¿

USE_GECKO port Ö§³ÖµÄ Gecko ºó¶Ë¡£ ¿Éѡֵ£º libxul (libxul.so)¡¢ seamonkey (libgtkembedmoz.so£¬ ¹ýʱ£¬ Рport Ó¦±ÜÃâʹÓÃ)¡£
USE_FIREFOX port ÐèҪʹÓà Firefox ×÷ΪÔËÐл·¾³ÒÀÀµ¡£ ¿Éѡֵ£º yes (ʹÓÃĬÈϰ汾)¡¢ 40¡¢ 36¡¢ 35¡£ ĬÈϵÄÒÀÀµ²ÉÓõÄÊǰ汾 40¡£
USE_FIREFOX_BUILD port ÐèҪʹÓà Firefox ×÷ΪÁª±à»·¾³ÒÀÀµ¡£ ¿Éѡֵ£º ²Î¼û USE_FIREFOX¡£ Õâ¸ö±äÁ¿»á×Ô¶¯ÉèÖà USE_FIREFOX ʹÓÃÏàͬµÄÖµ¡£
USE_SEAMONKEY port ÐèҪʹÓà SeaMonkey ×÷ΪÔËÐл·¾³ÒÀÀµ¡£ ¿Éѡֵ£º yes (ʹÓÃĬÈϰ汾)¡¢ 20¡¢ 11 (¹ýʱ£¬ Рport Ó¦±ÜÃâʹÓÃ)¡£ ĬÈϵÄÒÀÀµ²ÉÓõÄÊǰ汾 20¡£
USE_SEAMONKEY_BUILD port ÐèҪʹÓà SeaMonkey ×÷ΪÁª±à»·¾³ÒÀÀµ¡£ ¿Éѡֵ£º ²Î¼û USE_SEAMONKEY¡£ Õâ¸ö±äÁ¿»á×Ô¶¯ÉèÖà USE_SEAMONKEY ʹÓÃÏàͬµÄÖµ¡£
USE_THUNDERBIRD port ÐèҪʹÓà Thunderbird ×÷ΪÔËÐл·¾³ÒÀÀµ¡£ ¿Éѡֵ£º yes (ʹÓÃĬÈϰ汾)¡¢ 31¡¢ 30 (¹ýʱ£¬ Рport Ó¦±ÜÃâʹÓÃ)¡£ ĬÈϵÄÒÀÀµ²ÉÓõÄÊǰ汾 31¡£
USE_THUNDERBIRD_BUILD port ÐèҪʹÓà Thunderbird ×÷ΪÁª±à»·¾³ÒÀÀµ¡£ ¿Éѡֵ£º ²Î¼û USE_THUNDERBIRD¡£ Õâ¸ö±äÁ¿»á×Ô¶¯ÉèÖà USE_THUNDERBIRD ʹÓÃÏàͬµÄÖµ¡£

¡¡¡¡¿ÉÓñäÁ¿µÄÍêÕûÁÐ±í£¬ Çë²ÎÔÄ /usr/ports/Mk/bsd.gecko.mk¡£


6.22 ʹÓÃÊý¾Ý¿â

±í 6-43. ports ÖÐÓйØÊý¾Ý¿âµÄ±äÁ¿

Variable Means
USE_BDB Èç¹ûÕâ¸ö±äÁ¿Îª yes£¬ Ôò°Ñ databases/db41 ÁÐΪÒÀÀµ¹ØÏµ¡£ Õâ¸ö±äÁ¿»¹¿ÉÒÔ±»ÉèÖóɵÄÖµÓУº 40£¬41£¬ 42¡¢ 43¡¢ 44¡¢ 46¡¢ 47¡¢ 48 »ò 51¡£ Äú¿ÉÒÔÉùÃ÷¿É½ÓÊÜÖµµÄ·¶Î§£¬ USE_BDB=42+ ½«Ñ°ÕÒÒѰ²×°µÄ×î¸ß°æ±¾£¬ Èç¹ûûÓÐÕÒµ½ÔòÍ˻ص½ 42¡£
USE_MYSQL Èç¹ûÕâ¸ö±äÁ¿Îª yes£¬ Ôò°Ñ databases/mysql55-server ÁÐΪÒÀÀµ¹ØÏµ¡£»¹ÓÐÒ»¸öÏà¹ØµÄ±äÁ¿£¬WANT_MYSQL_VER, ¿ÉÒÔÉèÖõÄÖµÓÐ 323£¬40£¬41£¬50£¬51£¬ 52£¬ 55 »òÕß 60¡£
USE_PGSQL Èç¹ûÉèÖÃ³É yes£¬Ôò°Ñ databases/postgresql82 ÁÐΪÒÀÀµ¹ØÏµ¡£»¹ÓÐÒ»¸öÏà¹ØµÄ±äÁ¿£¬WANT_PGSQL_VER£¬ ¿ÉÒÔÉèÖõÄÖµÓÐ 73£¬74£¬80£¬81£¬82£¬ 83 »ò 90¡£

¡¡¡¡¸ü¶àÏêÇéÇë²ÎÔÄ bsd.database.mk¡£


6.23 Æô¶¯ºÍÍ£Ö¹·þÎñ (rc ½Å±¾)

¡¡¡¡rc.d ½Å±¾ÔÚϵͳÆô¶¯Ê±ÓÃÓÚÆô¶¯·þÎñ£¬ ²¢Îª¹ÜÀíÔ±Ìṩֹͣ¡¢ Æô¶¯ºÍÖØÐÂÆô¶¯Ä³¸ö·þÎñµÄ±ê×¼·½·¨¡£ Ports °²×°µÄ½Å±¾»á¼¯³Éµ½ÏµÍ³µÄ rc.d ¿ò¼ÜÖС£ ¹ØÓÚÈçºÎʹÓÃËüµÄ˵Ã÷£¬ ¿ÉÒÔÔÚ Ê¹ÓÃÊÖ²áµÄ rc.d ÕÂ½Ú ÕÒµ½¡£ ¹ØÓÚ¿ÉÓÃÃüÁîµÄÏêϸ½âÊÍ£¬ Ôò¿ÉÒÔÔÚ rc(8) ºÍ rc.subr(8) ÕÒµ½¡£ ×îºó£¬ Äú¿ÉÒÔ²ÎÔÄ ÕâÆªÎÄÕ Á˽â׫д rc.d ½Å±¾µÄ×î¼Ñʵ¼ù¡£

¡¡¡¡¿ÉÒÔ°²×°Ò»»ò¶à¸ö rc.d ½Å±¾£º

USE_RC_SUBR=	doormand

¡¡¡¡ÕâЩ½Å±¾±ØÐë·Åµ½ files Ŀ¼£¬ ²¢¸½¼Ó .in¡£ Õâ¸öÎļþÖпÉÒÔʹÓñê×¼µÄ SUB_LIST Ìæ»»Õ¹¿ª¡£ ³ý´ËÖ®Í⣬ ÎÒÃÇ»¹Ç¿ÁÒÍÆ¼öʹÓà %%PREFIX%% ºÍ %%LOCALBASE%% Ìæ»»Õ¹¿ª¡£ ¹ØÓÚ SUB_LIST µÄ½éÉÜ¿ÉÒÔÔÚ ±¾ÊéµÄÏà¹ØÕÂ½Ú ÕÒµ½¡£

¡¡¡¡ÔÚ FreeBSD 6.1-RELEASE ֮ǰ£¬ Óë rcorder(8) µÄ¼¯³ÉÊÇͨ¹ý USE_RCORDER ¶ø²»ÊÇ USE_RC_SUBR À´Íê³ÉµÄ¡£ ²»¹ý£¬ ³ý·Ç port ÐèÒªÌṩ°²×°½ø»ù±¾ÏµÍ³ÕâÑùµÄÑ¡Ï »òÕß·þÎñÐèÒªÔÚ rc.d ½Å±¾ FILESYSTEMS ֮ǰÔËÐÐÕâÀàÌØÊâÇé¿ö£¬ Ò»°ãÀ´ËµÊDz»ÐèҪʹÓÃÕâ¸ö¹¦Äܵġ£

¡¡¡¡´Ó FreeBSD 6.1-RELEASE ¿ªÊ¼£¬ ±¾µØ°²×°µÄ rc.d ½Å±¾ (°üÀ¨ÓÉ port °²×°µÄ½Å±¾) »áÄÉÈë»ù±¾ÏµÍ³µÄ rcorder(8)¡£

¡¡¡¡ÒÔÏÂÊÇÒ»¸ö¼òµ¥µÄ rc.d ½Å±¾£º

#!/bin/sh

# $FreeBSD$
#
# PROVIDE: doormand
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# ÔÚ /etc/rc.conf.local »ò /etc/rc.conf ÖÐÔö¼ÓÏÂÊöÉèÖÿÉÒÔÆôÓÃÕâÒ»·þÎñ£º
#
# doormand_enable (bool):	ĬÈÏÉèΪ NO¡£
#				ÉèΪ YES ¿ÉÒÔÆôÓà doormand¡£
# doormand_config (path):	ĬÈÏÉèΪ %%PREFIX%%/etc/doormand/doormand.cf¡£
#

. /etc/rc.subr

name="doormand"
rcvar=${name}_enable

command=%%PREFIX%%/sbin/${name}
pidfile=/var/run/${name}.pid

load_rc_config $name

: ${doormand_enable="NO"}
: ${doormand_config="%%PREFIX%%/etc/doormand/doormand.cf"}

command_args="-p $pidfile -f $doormand_config"

run_rc_command "$1"

¡¡¡¡³ý·ÇÓкÜÕ¾µÃס½ÅµÄÀíÓÉÌáǰÆô¶¯·þÎñ£¬ËùÓÐµÄ ports ½Å±¾Ó¦Ê¹ÓÃ

REQUIRE: LOGIN
¡£ Èç¹û·þÎñÐèÒªÒÔÌØ¶¨Óû§ (³ý root Ö®Íâ) Éí·ÝÆô¶¯£¬ Ôò±ØÐëÕâÑù×ö¡£ ÔÚÇ°ÃæµÄÀý×ÓÖУ¬ ÎÒÃÇ»¹Ê¹ÓÃÁË
KEYWORD: shutdown
ÒÔ±ãÈà mythical port ÔÚϵͳͣ»úµÄ¹ý³ÌÖÐÒÔÕý³£µÄ·½Ê½ÖÕÖ¹£¬ ÒòΪËüÐèÒªÔÚϵͳÒýµ¼¹ý³ÌÖÐÆô¶¯·þÎñ¡£ Èç¹û½Å±¾Ã»ÓÐÆô¶¯ÈκηþÎñ£¬ Ôò²¢²»ÐèÒªÕâÑù×ö¡£

¡¡¡¡ÕâÀ ¶Ô±äÁ¿µÄĬÈϸ³Öµ·½·¨Ó¦²ÉÓà "="£¬ ¶ø·Ç ":=" ÕâÑùµÄÐÎʽ¡£ ÕâÊÇÒòΪ£¬ ǰһÖÖ¸³Öµ·½·¨Ö»ÓÐÔÚ±äÁ¿Î´±»ÉèÖÃʱ²ÅÉèÖÃĬÈÏÖµ£¬ ¶øºóÒ»ÖÖ·½·¨Ôò»áÔÚ±äÁ¿Ã»ÓÐÉèÖ㬠»òÕß ÆäֵΪ¿Õʱ¶¼ÉèÖÃĬÈÏÖµ¡£ Óû§·Ç³£¿ÉÄÜÔÚÆä rc.conf.local ÖÐʹÓÃÀàËÆ

doormand_flags=""
ÕâÑùµÄÉèÖ㬠¶ø²ÉÓà ":=" À´½øÐи³Öµ£¬ Ôò»áÔÚ²»¾­Òâ¼ä¸²¸ÇÓû§ËùÏ£ÍûµÄÉèÖá£

×¢Òâ: ÐÂÔöµÄ½Å±¾¾ù²»Ó¦Ê¹Óà .sh ºó׺¡£ δÀ´£¬ ÈÔÈ»°üº¬ÕâÒ»ºó׺µÄ½Å±¾½«±»ÅúÁ¿¸ÄÃû¡£


6.23.1 Ð¶ÔØÊ±Í£Ö¹·þÎñ

¡¡¡¡¿ÉÒÔÔÚÐ¶ÔØµÄ¹ý³ÌÖÐ×Ô¶¯µØÍ£Ö¹·þÎñ¡£ ÎÒÃǽ¨ÒéÖ»ÓÐÔÚ¾ø¶Ô±ØÒª£¬ ÀýÈç±ØÐëÔÚɾ³ýÎļþ֮ǰֹͣ·þÎñÕâÀàµÄÇé¿öϲÅʹÓÃÕâÒ»¹¦ÄÜ¡£ ͨ³£À´Ëµ£¬ ¾ö¶¨ÊÇ·ñÔÚÐ¶ÔØÊ±Í£Ö¹·þÎñÊÇϵͳ¹ÜÀíÔ±ÐèÒª¿¼ÂǵÄÊÂÇé¡£ ÁíÍâҪעÒ⣬ Õâ¸ö¹¦ÄÜÒ²»áÓ°ÏìÉý¼¶¹ý³Ì¡£

¡¡¡¡ÐèҪʱ¿ÉÒÔÔÚ pkg-plist ÖмÓÈ룺

@stopdaemon doormand

¡¡¡¡ÕâÀïµÄ²ÎÊý±ØÐëÓë USE_RC_SUBR ±äÁ¿µÄÄÚÈÝÆ¥Åä¡£


6.24 Ìí¼ÓÓû§ºÍÓû§×é

¡¡¡¡Ò»Ð© port ÐèÒªÔÚ°²×°µÄϵͳÖд´½¨Ìض¨µÄÓû§»òÓû§×é¡£ Èç¹ûÓÐÕâÖÖÇé¿ö£¬ Çë´Ó 50 µ½ 999 Ö®¼äÑ¡ÔñÒ»¸öÉÐδʹÓÃµÄ UID£¬ ²¢ÔÚ ports/UIDs (Õë¶ÔÓû§) »ò ports/GIDs (Õë¶Ô×é) ÖÐÓèÒԼǼ¡£ ÇëÎñ±ØÈ·±£ÄúûÓÐʹÓÃϵͳÖÐÒѾ­ÔÚÆäËû ports ÖÐʹÓÃµÄ UID¡£

¡¡¡¡Èç¹ûÄúµÄ port ÐèÒª´´½¨ÐÂÓû§»òÓû§×飬 ÇëÔÚÌá½»²¹¶¡µÄʱºòÒ»²¢Ìá½»ÕâÁ½¸öÎļþµÄ²¹¶¡¡£

¡¡¡¡½ÓÏÂÀ´£¬ ¿ÉÒÔÔÚÄúµÄ Makefile ÖÐʹÓà USERS ºÍ GROUPS ÕâÁ½¸ö±äÁ¿£¬ ϵͳ»áÔÚ°²×°Ê±×Ô¶¯´´½¨Óû§»ò×é¡£

USERS=	pulse
GROUPS=	pulse pulse-access pulse-rt

¡¡¡¡ÏÖÓеı£Áô UID ºÍ GID ÁÐ±í£¬ ¿ÉÒÔÔÚ ports/UIDs ºÍ ports/GIDs ÕÒµ½¡£


6.25 ÒÀÀµÄÚºËÔ´´úÂëµÄ Ports

¡¡¡¡Ä³Ð© ports (ÀýÈç¿É¼ÓÔØÊ½ÄÚºËÄ£¿é) ÐèÒªÄں˵ÄÔ´Îļþ²ÅÄܱàÒë¡£ ÏÂÃæÊǼì²âÓû§ÊÇ·ñ°²×°ÁËÔ´´úÂëµÄÀý×Ó£º

.if !exists(${SRC_BASE}/sys/Makefile)
IGNORE=         requires kernel sources to be installed
.endif

µÚ7Õ ¡¡¸ß¼¶ pkg-plist Ó÷¨

7.1 ¸ù¾Ý make ±äÁ¿¶Ô pkg-plist ½øÐÐÐÞ¸Ä

¡¡¡¡Ä³Ð© port£¬ ÌØ±ðÊÇ p5- port£¬ »áÐèÒª¸ù¾ÝÅäÖÃÑ¡Ïî (»ò¶ÔÓÚ p5- port ¶øÑÔ£¬ perl µÄ°æ±¾) À´ÐÞ¸ÄËüÃÇµÄ pkg-plist¡£ Ϊ¼ò»¯ÕâÒ»¹¤×÷£¬ ÔÚ pkg-plist ÖÐµÄ %%OSREL%%¡¢ %%PERL_VER%%£¬ ÒÔ¼° %%PERL_VERSION%% ½«×Ô¶¯½øÐÐÏàÓ¦µÄÌæ»»¡£ ÆäÖУ¬ %%OSREL%% µÄÖµÊDzÙ×÷ϵͳÒÔÊýÖµ±íʾµÄ°æ±¾ (ÀýÈç 4.9)¡£ %%PERL_VERSION%% ºÍ %%PERL_VER%% ÊÇ perl µÄÍêÕû°æ±¾ºÅ (ÀýÈç 5.8.9)¡£Ðí¶àÆäËüÓë port ÎĵµÎļþÓÐ¹ØµÄ %%±äÁ¿%% ÔÚ ÏàÓ¦ÕÂ½Ú ÖнøÐÐÁ˽éÉÜ¡£

¡¡¡¡Èç¹ûÄú»¹ÐèÒª½øÐÐÆäËüµÄÌæ»»£¬ ¿ÉÒÔͨ¹ý½« PLIST_SUB ±äÁ¿ÉèÖÃΪһ×é ±äÁ¿=Öµ ¶ÔÀ´ÊµÏÖ¡£ ÆäÖУ¬ %%VAR%% ±íʾÔÚ pkg-plist Öн«±» Öµ Ìæ»»µÄÄÇЩÎÄ×Ö¡£

¡¡¡¡¾ÙÀýÀ´Ëµ£¬ Èç¹û port ÐèÒª°ÑºÜ¶àÎļþ·Åµ½ºÍ°æ±¾ÓйصÄĿ¼ÖУ¬ ¿ÉÒÔÔÚ Makefile Öа´ÕÕÀàËÆÏÂÃæµÄÀý×Ó£º

OCTAVE_VERSION= 2.0.13
PLIST_SUB=      OCTAVE_VERSION=${OCTAVE_VERSION}

¡¡¡¡²¢ÔÚ pkg-plist Öн«¾ßÌåµÄ°æ±¾Ì滻Ϊ %%OCTAVE_VERSION%%¡£ ÕâÑù£¬ ÔÚÉý¼¶ port ʱ£¬ ¾Í²»ÐèÒªÔÙµ½ pkg-plist ÖÐÐÞ¸ÄÄǼ¸Ê® (»òÕߣ¬ ÓÐʱÉõÖÁÊÇÉϰÙ) ÐеÄÄÚÈÝÁË¡£

¡¡¡¡Èç¹ûÄúµÄ port ÐèÒª¸ù¾ÝÒ»¶¨µÄÅäÖÃÀ´ÓÐÌõ¼þµØ°²×°Ò»Ð©Îļþ£¬ ͨ³£µÄ×ö·¨ÊÇÔÚ pkg-plist ÖÐÁгöÕâЩÎļþʱ£¬ ÔÚ¶ÔÓ¦ÐеĿªÍ·¼ÓÉÏ %%TAG%%£¬ ²¢½« TAG дµ½ Makefile ÖÐµÄ PLIST_SUB ±äÁ¿ÖУ¬ ¸ù¾ÝÐèÒªÌæ»»µô£¬ »òÌæ»»Îª @comment£¬ ºóÕß±íʾÈôò°ü¹¤¾ßºöÂÔÕâÐУº

.if defined(WITH_X11)
PLIST_SUB+=	X11=""
.else
PLIST_SUB+=	X11="@comment "
.endif

¡¡¡¡ÓëÖ®¶ÔÓ¦£¬ ÔÚ pkg-plist ÖУº

%%X11%%bin/foo-gui

¡¡¡¡ÕâÒ»Ìæ»»¹ý³Ì (ÒÔ¼°¼ÓÈë Áª»úÊÖ²á µÄ¹ý³Ì)£¬ »áÔÚ pre-install ºÍ do-install Á½¸ö target Ö®¼ä£¬ ͨ¹ý¶ÁÈ¡ PLIST ²¢Ð´Èë TMPPLIST (ĬÈÏÇé¿öÏ£¬ ÊÇ£º WRKDIR/.PLIST.mktmp) À´Íê³É¡£ Òò´Ë£¬ Èç¹ûÄúµÄ port ¶¯Ì¬Éú³É PLIST£¬ ¾ÍÐèÒªÔÚ pre-install ֮ǰÍê³É¡£ ÁíÍ⣬ Èç¹ûÄúµÄ port ÐèÒª±à¼­ËùÉú³ÉµÄÎļþ£¬ ÔòÐèÒªÔÚ post-install ÖвÙ×÷ÃûΪ TMPPLIST µÄÄǸöÎļþ¡£

¡¡¡¡ÁíÒ»ÖÖ¿ÉÐеÄÐÞ¸Ä×°Ïäµ¥µÄ·½·¨£¬ ÔòÊǸù¾Ý PLIST_FILES ºÍ PLIST_DIRS ÕâÁ½¸ö±äÁ¿µÄÉèÖÃÀ´½øÐС£ ËüÃǵÄÖµ»á×÷ΪĿ¼ÃûÁ¬Í¬ PLIST µÄÄÚÈÝÒ»ÆðдÈë TMPPLIST¡£ ÔÚ PLIST_FILES ºÍ PLIST_DIRS ÖÐÁгöµÄÃû×Ö£¬ »á¾­ÀúÇ°ÃæËù½éÉÜµÄ %%±äÁ¿%% Ìæ»»¹ý³Ì¡£ ³ý´ËÖ®Í⣬ ÔÚ PLIST_FILES ÖÐÁгöµÄÎļþ£¬ »á²»¼ÓÈκÎÐ޸ĵڳöÏÖÔÚ×îÖÕµÄ×°Ïäµ¥ÖУ¬ ¶ø @dirrm ½«×÷Ϊǰ׺¼Óµ½ PLIST_DIRS ËùÁеÄÃû×Ö֮ǰ¡£ ΪÁ˴ﵽĿµÄ£¬ PLIST_FILES ºÍ PLIST_DIRS ±ØÐëÔÚд TMPPLIST ֮ǰ£¬ Ò²¾ÍÊÇÔÚ pre-install »ò¸üÔçµÄ½×¶Î½øÐÐÉèÖá£


7.2 ¿ÕĿ¼

7.2.1 ÇåÀí¿ÕĿ¼

¡¡¡¡Ò»¶¨ÒªÈà port ÔÚÐ¶ÔØÊ±½øÐÐÇåÀí¿ÕĿ¼¡£ ͨ³££¬ ¿ÉÒÔͨ¹ýΪËùÓÐÓÉ port ´´½¨µÄĿ¼Ôö¼Ó¶ÔÓ¦µÄ @dirrm ÐÐÀ´ÊµÏÖ¡£ ÔÚɾ³ý¸¸Ä¿Â¼Ö®Ç°£¬ ÐèÒªÊ×ÏÈɾ³ýËüµÄ×ÓĿ¼¡£

 :
lib/X11/oneko/pixmaps/cat.xpm
lib/X11/oneko/sounds/cat.au
 :
@dirrm lib/X11/oneko/pixmaps
@dirrm lib/X11/oneko/sounds
@dirrm lib/X11/oneko

¡¡¡¡È»¶ø£¬ ÓÐʱ @dirrm »áÓÉÓÚÆäËü port ʹÓÃÁËͬһ¸öĿ¼¶ø·¢Éú´íÎó¡£ ÀûÓà @dirrmtry ¿ÉÒÔֻɾ³ýÄÇЩ¿ÕĿ¼£¬ ¶ø±ÜÃâ¸ø³ö¾¯¸æ¡£

@dirrmtry share/doc/gimp

¡¡¡¡°´ÕÕÉÏÃæµÄд·¨£¬ ½«²»»áÏÔʾÈκδíÎóÐÅÏ¢£¬ ¶øÇÒ£¬¼´Ê¹ÔÚ ${PREFIX}/share/doc/gimp ÓÉÓÚÆäËü port ÔÚÆäÖа²×°ÁËһЩ±ðµÄÎļþµÄʱºò£¬ Ò²²»»áµ¼Ö pkg_delete(1) Òì³£Í˳ö¡£


7.2.2 ÈçºÎ½¨Á¢¿ÕĿ¼

¡¡¡¡ÔÚ port °²×°¹ý³ÌÖд´½¨µÄ¿ÕĿ¼ÐèÒªÌØ±ðÁôÒâ¡£ °²×° package ʱ²¢²»»á×Ô¶¯´´½¨ÕâЩĿ¼£¬ ÕâÊÇÒòΪ package Ö»±£´æÎļþ¡£ Ҫȷ±£°²×° package ʱ»á×Ô¶¯´´½¨ÕâЩ¿ÕĿ¼£¬ ÐèÒªÔÚ pkg-plist ÖмÓÈëÓë @dirrm ¶ÔÓ¦µÄÐУº

@exec mkdir -p %D/share/foo/templates

7.3 ÅäÖÃÎļþ

¡¡¡¡Èç¹û port ÐèÒª°ÑһЩÎļþ·Åµ½ PREFIX/etc£¬ ²»Òª ¼òµ¥µØ°²×°ËüÃÇ£¬ ²¢½«ÆäÁÐÈë pkg-plist£¬ ÒòΪÕâÑù»áµ¼Ö pkg_delete(1) ɾ³ýÓû§¾«Ðı༭µÄÎļþ£¬ ¶øÐ°²×°Ê±ÔòÓÖ»á°ÑÕâЩÎļþ¸²¸Ç¡£

¡¡¡¡Òò´Ë£¬ ÄúÓ¦°ÑÅäÖÃÎļþµÄÀý×Ó°´ÆäËüµÄºó׺À´°²×° (ÀýÈç filename.sample ¾ÍÊÇÒ»¸ö²»´íµÄÑ¡Ôñ) ²¢ÏÔʾһÌõ ÏûÏ¢ ¸æËßÓû§ÈçºÎ¸´ÖƲ¢±à¼­Õâ¸öÅäÖÃÎļþ£¬ ÒÔ±ãÈÃÈí¼þÄܹ»ÕýÈ·¹¤×÷¡£

¡¡¡¡Òò´Ë£¬ Ó¦°´ÆäËüµÄºó׺À´°²×°ÅäÖÃÎļþµÄÀý×Ó (filename.sample ¾ÍÊÇÒ»¸ö²»´íµÄÑ¡Ôñ)¡£ Èç¹ûʵ¼ÊµÄÅäÖÃÎļþ²»´æÔÚ£¬ Ôò½«Æä¸´ÖÆÎªÊµ¼ÊÎļþµÄÃû×Ö¡£ Ð¶ÔØÊ±£¬ Èç¹û·¢ÏÖÓû§Ã»ÓÐÐÞ¸ÄÅäÖÃÎļþ£¬ Ôò½«Æäɾ³ý¡£ ÄúÐèÒªÔÚ port µÄ Makefile£¬ ÒÔ¼° pkg-plist (¶ÔÓÚ´Ó package °²×°µÄÇéÐÎ) ½øÐд¦Àí¡£

¡¡¡¡Ê¾ÀýµÄ Makefile ²¿·Ö£º

post-install:
	@if [ ! -f ${PREFIX}/etc/orbit.conf ]; then \
		${CP} -p ${PREFIX}/etc/orbit.conf.sample ${PREFIX}/etc/orbit.conf ; \
	fi

¡¡¡¡Ê¾ÀýµÄ pkg-plist ²¿·Ö£º

@unexec if cmp -s %D/etc/orbit.conf.sample %D/etc/orbit.conf; then rm -f %D/etc/orbit.conf; fi
etc/orbit.conf.sample
@exec if [ ! -f %D/etc/orbit.conf ] ; then cp -p %D/%F %B/orbit.conf; fi

¡¡¡¡ÁíÍ⣬ »¹Ó¦ÏÔʾһÌõ ÏûÏ¢ Ö¸³öÓû§Ó¦Ôںδ¦¸´ÖƲ¢±à¼­Õâ¸öÎļþ£¬ ÒÔ±ãÈÃÈí¼þÄÜ¿ªÊ¼Õý³£¹¤×÷¡£


7.4 ¶¯Ì¬×°Ïäµ¥Ó뾲̬װÏäµ¥µÄ¶Ô±È

¡¡¡¡¾²Ì¬×°Ïäµ¥ ÊÇÖ¸ÔÚ Ports Collection ÖÐÒÔ pkg-plist Îļþ (¿ÉÄܰüº¬±äÁ¿Ìæ»»)£¬ »òÒÔ PLIST_FILES ºÍ PLIST_DIRS µÄÐÎʽǶÈëµ½ Makefile ³öÏÖµÄ×°Ïäµ¥¡£ ¼´Ê¹ËüÊÇÓɹ¤¾ß»ò Makefile ÖеÄij¸ö target ÔÚ¾­ÓÉ committer ¼ÓÈëµ½ Ports Collection ֮ǰ ×Ô¶¯Éú³ÉµÄÒ²ÊÇÈç´Ë£¬ ÒòΪ¿ÉÒÔÔÚ²»ÏÂÔØ»ò±àÒëÔ´´úÂë°üµÄǰÌáÏÂ¶ÔÆä½øÐмìÊÓ¡£

¡¡¡¡¶¯Ì¬×°Ïäµ¥ ÊÇÖ¸ÔÚ port ±àÒë²¢°²×°Ê±Éú³ÉµÄ×°Ïäµ¥¡£ ÔÚÏÂÔØ²¢±àÒëÄúËùÒÆÖ²µÄÓ¦ÓóÌÐòµÄÔ´´úÂë֮ǰ£¬ »òÔÚÖ´ÐÐÁË make clean Ö®ºó£¬ ¾ÍÎÞ·¨²é¿´ÆäÄÚÈÝÁË¡£

¡¡¡¡¾¡¹ÜʹÓö¯Ì¬×°Ïäµ¥²¢²»±»½ûÖ¹£¬ µ«¼à»¤ÈËÓ¦¾¡¿ÉÄÜʹÓþ²Ì¬×°Ïäµ¥£¬ ÒòΪËüÄܹ»ÈÃÓû§Ê¹Óà grep(1)À´·¢ÏÖËùÐèµÄ ports£¬ ÀýÈ磬 ËüÊÇ·ñ»á°²×°Ä³¸öÌØ¶¨Îļþ¡£ ¶¯Ì¬ÁбíÖ÷ÒªÓ¦ÓÃÓÚ¸´Ôӵģ¬ Æä×°Ïäµ¥ËæËùÑ¡¹¦ÄܻᷢÉú¾Þ±ä (Òò¶øÊ¹µÃά»¤¾²Ì¬×°Ïäµ¥²»ÔÙ¿ÉÐÐ)£¬ »òÄÇÐ©Ëæ°æ±¾¶ø¸Ä±ä×°Ïäµ¥ÄÚÈÝµÄ port (ÀýÈ磬 ʹÓà Javadoc À´Éú³ÉÎĵµµÄÄÇЩ ports)¡£

¡¡¡¡ÎÒÃǹÄÀøÄÇЩѡÔñʹÓö¯Ì¬×°Ïäµ¥µÄ¼à»¤ÈËÌṩһ¸öÄܹ»Éú³É pkg-plist µÄ target£¬ ÒÔ±ãÓÚÓû§¼ìÊÓÆäÄÚÈÝ¡£


7.5 ×°Ïäµ¥ (package list) µÄ×Ô¶¯»¯ÖÆ×÷

¡¡¡¡Ê×ÏÈ£¬ ÇëÈ·ÈÏÒѾ­»ù±¾ÉÏÍê³ÉÁË port µÄ¹¤×÷£¬ ½öȱ pkg-plist¡£

¡¡¡¡½ÓÏÂÀ´£¬ ½¨Á¢Ò»¸öÓÃÓÚ°²×°ÄúµÄ port µÄÁÙʱĿ¼£¬ ²¢ÔÚÆäÖа²×°ËüËùÒÀÀµµÄËùÓÐÆäËûÈí¼þ°ü£º

# mkdir /var/tmp/`make -V PORTNAME`
# mtree -U -f `make -V MTREE_FILE` -d -e -p /var/tmp/`make -V PORTNAME`
# make depends PREFIX=/var/tmp/`make -V PORTNAME`

¡¡¡¡½«Ä¿Â¼½á¹¹±£´æµ½Ò»ÐÂÎļþÖС£

# (cd /var/tmp/`make -V PORTNAME` && find -d * -type d) | sort > OLD-DIRS

¡¡¡¡½¨Á¢Ò»¿Õ°× pkg-plist Îļþ£º

# :>pkg-plist

¡¡¡¡Èç¹ûÄúµÄ port ×ñÑ­ PREFIX (Ó¦¸ÃÈç´Ë) Ôò½ÓÏÂÀ´Ó¦°²×°¸Ã port ²¢´´½¨×°Ïäµ¥¡£

# make install PREFIX=/var/tmp/`make -V PORTNAME`
# (cd /var/tmp/`make -V PORTNAME` && find -d * \! -type d) | sort > pkg-plist

¡¡¡¡´ËÍ⻹Ӧ°Ñн¨Á¢µÄĿ¼¼ÓÈë×°Ïäµ¥¡£

# (cd /var/tmp/`make -V PORTNAME` && find -d * -type d) | sort | comm -13 OLD-DIRS - | sort -r | sed -e 's#^#@dirrm #' >> pkg-plist

¡¡¡¡×îºóÐèÒªÊÖ¹¤ÕûÀí packing list£» ÕâÒ»¹ý³Ì²»ÊÇ ÍêÈ« ×Ô¶¯µÄ¡£ Áª»úÊÖ²áÓ¦ÁÐÈë port µÄ Makefile ÖÐµÄ MANn£¬ ¶ø²»ÊÇ×°Ïäµ¥¡£ Óû§ÅäÖÃÎļþÓ¦±»É¾³ý£¬ »òÒÔ filename.sample ÕâÑùµÄÃû×ÖÀ´°²×°¡£ info/dir Îļþ£¬ Ò²²»Ó¦ÁÐÈ룬 ͬʱӦ°´ÕÕ info Îļþ µÄ˵Ã÷À´Ôö¼ÓһЩ install-info ÐС£ ËùÓÐÓÉ port °²×°µÄ¿â£¬ Ó¦°´ÕÕ ¶¯Ì¬Á¬½Ó¿â С½ÚÖнéÉܵķ½·¨´¦Àí¡£

¡¡¡¡ÁíÍ⣬ Ò²¿ÉÒÔʹÓà /usr/ports/Tools/scripts/ ÖÐµÄ plist ½Å±¾À´×Ô¶¯´´½¨ package list¡£ plist ½Å±¾ÊÇÒ»¸ö Ruby ½Å±¾£¬ ËüÄܹ»½«Ç°Ãæ½éÉܵÄÊÖ¹¤²Ù×÷×Ô¶¯»¯¡£

¡¡¡¡¿ªÊ¼µÄ²½ÖèºÍÉÏÃæµÄǰÈýÐÐÒ»Ñù£¬ Ò²¾ÍÊÇ mkdir£¬ mtree ²¢ make depends¡£ È»ºóÁª±àºÍ°²×° port£º

# make install PREFIX=/var/tmp/`make -V PORTNAME`

¡¡¡¡È»ºóÈà plist Éú³É pkg-plist Îļþ£º

# /usr/ports/Tools/scripts/plist -Md -m `make -V MTREE_FILE` /var/tmp/`make -V PORTNAME` > pkg-plist

¡¡¡¡ÓëÇ°ÃæÀàËÆ£¬ Èç´ËÉú³ÉµÄ×°Ïäµ¥Ò²ÐèÒªÊÖ¹¤½øÐÐһЩÇåÀí¹¤×÷¡£

¡¡¡¡ÁíÒ»¸ö¿ÉÒÔÓÃÀ´´´½¨×î³õµÄ pkg-plist µÄ¹¤¾ßÊÇ ports-mgmt/genplist¡£ ºÍÆäËû×Ô¶¯»¯¹¤¾ßÀàËÆ£¬ ÄúÓ¦¶ÔËüÉú³ÉµÄ pkg-plist Ó¦ÊÖ¹¤¼ì²é²¢¸ù¾ÝÐèÒª½øÐÐÐ޸ġ£


µÚ8Õ ¡¡pkg-* Îļþ

¡¡¡¡Ç°ÃæÓÐһЩûÓÐÌá¼°µÄ¹ØÓÚ pkg-* ÎļþµÄ¼¼ÇÉ£¬ ËüÃÇ¿ÉÒÔ·½±ãµØÍê³ÉÐí¶àÈÎÎñ¡£


8.1 pkg-message (°²×°Ô¤±àÒë°üʱÏÔʾµÄÏûÏ¢Îļþ)

¡¡¡¡Èç¹ûÄúÐèÒªÔÚ°²×°Ê±ÏÔʾһÌõÏûÏ¢¸øÓû§£¬ ¿ÉÒÔ°ÑÕâÏûÏ¢·ÅÔÚ pkg-message ÖС£ ÕâÒ»ÌØÐÔͨ³£¿ÉÒÔÓÃÓÚÔÚ pkg_add(1) Ö®ºóÏÔʾһЩ¸½¼ÓµÄ°²×°²½Ö裬 »òÏÔʾ¹ØÓÚÊÚȨµÄÐÅÏ¢¡£

¡¡¡¡µ±ÐèÒªÏÔʾһЩ±àÒ뿪¹Ø»ò¾¯¸æÊ±£¬ ÇëʹÓà ECHO_MSG¡£ pkg-message ÎļþÖ»ÊÇΪÏÔʾ°²×°ºóµÄÖ´ÐвÙ×÷Ö¸µ¼Ê¹Óõġ£ ÀàËÆµØ£¬ »¹ÐèÒªÁôÒâ ECHO_MSG ºÍ ECHO_CMD Ö®¼äµÄÇø±ð¡£ ǰһ¸öÊÇÔÚÆÁÄ»ÉÏÏÔʾÏûÏ¢ÐÔµÄÎÄ×Ö£¬ ¶øºóÒ»¸öÔòÓÃÓÚÔÚÖ´ÐÐÃüÁîʱʹÓùܵÀ¡£

¡¡¡¡ÏÂÃæÊÇÓõ½ÁËÕâÁ½¸öºêµÄÀý×Ó shells/bash2/Makefile£º

update-etc-shells:
	@${ECHO_MSG} "updating /etc/shells"
	@${CP} /etc/shells /etc/shells.bak
	@( ${GREP} -v ${PREFIX}/bin/bash /etc/shells.bak; \
		${ECHO_CMD} ${PREFIX}/bin/bash) >/etc/shells
	@${RM} /etc/shells.bak

×¢Òâ: pkg-message Îļþ£¬ ²¢²»ÐèÒªÃ÷È·µØ¼Óµ½ pkg-plist ÖС£ ´ËÍ⣬ ÔÚÓû§Ê¹Óà port ¶ø²»ÊÇ package À´°²×°Èí¼þʱ£¬ Ëü²¢²»»á±»ÏÔʾ³öÀ´¡£ Òò´ËÈç¹ûÐèÒªµÄ»°£¬ ÄúÓ¦¸ÃÔÚ post-install target ÖÐÖ¸¶¨ÏÔʾËü¡£


8.2 pkg-install (°²×°Ô¤±àÒë°üʱִÐеĽű¾Îļþ)

¡¡¡¡Èç¹ûÄúµÄ port ÐèÒªÔÚÔ¤±àÒëµÄ°²×°°üͨ¹ý pkg_add(1) °²×°Ê±Ö´ÐÐһЩÃüÁ ÔòӦͨ¹ý pkg-install ½Å±¾À´Íê³É¡£ Õâ¸ö½Å±¾»á×Ô¶¯µØ¼ÓÈë package£¬ ²¢±» pkg_add(1) Ö´ÐÐÁ½´Î£º µÚÒ»´ÎÊÇ ${SH} pkg-install ${PKGNAME} PRE-INSTALL ¶øµÚ¶þ´ÎÊÇ ${SH} pkg-install ${PKGNAME} POST-INSTALL¡£ $2 ¿É±»ÓÃÀ´¼ì²â½Å±¾ÔËÐеÄģʽ¡£ »·¾³±äÁ¿ PKG_PREFIX ½«ÉèÖÃΪ package µÄ°²×°Ä¿Â¼¡£ Çë²Î¼û pkg_add(1) ÒÔÁ˽â¸ü½øÒ»²½µÄϸ½Ú¡£

×¢Òâ: ÔÚʹÓà make install ʱÕâ¸ö½Å±¾²»»á±»×Ô¶¯ÔËÐС£ Èç¹ûÐèÒªÔËÐÐËü£¬ Ôò±ØÐëÔÚÄúµÄ port ÖÐµÄ Makefile ÀïÃ÷È·µØÓèÒÔµ÷Ó㬠Æä·½·¨ÊǼÓÈëÀàËÆ PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL ÕâÑùµÄÃüÁî¡£


8.3 pkg-deinstall (Ð¶ÔØÊ±Ö´ÐеĽű¾Îļþ)

¡¡¡¡ÕâÒ»½Å±¾½«ÔÚ package ±»Ð¶ÔØÊ±Ö´ÐС£

¡¡¡¡´Ë½Å±¾»á±» pkg_delete(1) Ö´ÐÐÁ½´Î¡£ µÚÒ»´ÎÊÇ ${SH} pkg-deinstall ${PKGNAME} DEINSTALL ¶øµÚ¶þ´ÎÔòÊÇ ${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL¡£


8.4 pkg-req (°²×°Ô¤±àÒë°üʱ¼ì²âÊÇ·ñÓ¦Ö´ÐвÙ×÷µÄ½Å±¾Îļþ)

¡¡¡¡Èç¹ûÄúµÄ port ÐèҪȷ¶¨ËüÊÇ·ñÓ¦±»°²×°£¬ ¿ÉÒÔ´´½¨ pkg-req ¡°requirements¡± ½Å±¾¡£ Ëü»áÔÚ°²×°/Ð¶ÔØÊ±×Ô¶¯ÔËÐУ¬ ÒÔ¾ö¶¨²Ù×÷ÊÇ·ñÓ¦±»ÊµÊ©¡£

¡¡¡¡Õâ¸ö½Å±¾»áÔÚʹÓà pkg_add(1) °²×°Ê±ÒÔ pkg-req ${PKGNAME} INSTALL µÄÃüÁîÐÐÖ´ÐС£ Ð¶ÔØÊ±£¬ Ëü½«ÓÉ pkg_delete(1) ÒÔ pkg-req ${PKGNAME} DEINSTALL µÄÃüÁîÐÐÖ´ÐС£


8.5 ¸Ä±ä pkg-* ÎļþµÄÃû×Ö

¡¡¡¡ËùÓÐ pkg-* ÎļþµÄÃû×Ö£¬ ½Ôϵ²ÉÓñäÁ¿ÓèÒÔ¶¨Ò壬 Òò´ËÔÚÐèҪʱ¿ÉÒÔÔÚÄúµÄ Makefile ÖмÓÒԸı䡣 µ±ÄúÐèÒªÔÚ¶à¸ö port Ö®¼ä¹²ÏíijЩ pkg-* Îļþ£¬ »òÐèҪдÈëijЩÎļþʱ¾Í·Ç³£ÓÐÓÃÁË¡£ (²Î¼û ÔÚ WRKDIR ÒÔÍâµÄµØ·½Ð´Îļþ£¬ ÒÔÁ˽âΪʲôֱ½Ó½«±ä¸üдÈë pkg-* ×ÓĿ¼ÊǸöÔã¸âµÄÖ÷Òâ)

¡¡¡¡ÏÂÃæÊÇÒ»×é±äÁ¿ÒÔ¼°ËüÃǵÄĬÈÏÖµ (PKGDIR ĬÈÏÇé¿öÏÂÊÇ ${MASTERDIR}¡£)

±äÁ¿ ĬÈÏÖµ
DESCR ${PKGDIR}/pkg-descr
PLIST ${PKGDIR}/pkg-plist
PKGINSTALL ${PKGDIR}/pkg-install
PKGDEINSTALL ${PKGDIR}/pkg-deinstall
PKGREQ ${PKGDIR}/pkg-req
PKGMESSAGE ${PKGDIR}/pkg-message

¡¡¡¡ÇëÐÞ¸ÄÕâЩ±äÁ¿£¬ ¶ø²»ÊÇÖ±½Ó¸²¸Ç PKG_ARGS µÄÖµ¡£ Èç¹ûÄú¸Ä±äÁË PKG_ARGS£¬ ÕâЩÎļþ½«ÎÞ·¨ÔÚ°²×° port ʱÕýÈ·µØ¸´ÖƵ½ /var/db/pkg Ŀ¼¡£


8.6 ʹÓà SUB_FILES ºÍ SUB_LIST

¡¡¡¡SUB_FILES ºÍ SUB_LIST ÕâÁ½¸ö±äÁ¿¿ÉÒÔÓÃÀ´ÔÚ port ÎļþÖÐʹÓÃijЩ¶¯Ì¬µÄÖµ£¬ ÀýÈç pkg-message ÖÐµÄ installation PREFIX¡£

¡¡¡¡Óà SUB_FILES ±äÁ¿£¬ ¿ÉÒÔÖ¸¶¨ÐèÒª×Ô¶¯½øÐÐÐ޸ĵÄÎļþÁÐ±í¡£ ÔÚ SUB_FILES ÖеÄÿһ¸ö Îļþ£¬ ÔÚ FILESDIR Ŀ¼Öж¼±ØÐëÓÐÒ»¸ö¶ÔÓ¦µÄ Îļþ.in¡£ Ð޸ĺóµÄ°æ±¾½«±£´æÔÚ WRKDIR¡£ ÔÚ USE_RC_SUBR (»òÒѾ­¹ýʱµÄ USE_RCORDER) Öж¨ÒåµÄÎļþ»á×Ô¶¯¼ÓÈëµ½ SUB_FILES ÖС£ ¶ÔÓÚ pkg-message¡¢ pkg-install¡¢ pkg-deinstall and pkg-req£¬ ¶ÔÓ¦µÄ Makefile ±äÁ¿»á±»×Ô¶¯ÉèÖ㬠ÒÔÖ¸Ïò´¦Àí¹ýµÄ°æ±¾¡£

¡¡¡¡SUB_LIST Õâ¸ö±äÁ¿µÄÄÚÈÝÊÇһϵÁÐ VAR=VALUE ¶Ô¡£ SUB_FILES ËùÁгöµÄÎļþÖÐËùÓÐµÄ %%VAR%% ¶¼½«±»Ì滻Ϊ VALUE¡£ ϵͳ×Ô¶¯¶¨ÒåÁËһЩ³£ÓõÄÌæ»»¶Ô£¬ °üÀ¨£º PREFIX¡¢ LOCALBASE¡¢ DATADIR¡¢ DOCSDIR£¬ ÒÔ¼° EXAMPLESDIR¡£ Ìæ»»½á¹ûÖÐËùÓÐÒÔ @comment ¿ªÍ·µÄÐУ¬ ¶¼½«ÔÚ±äÁ¿Ìæ»»Ö®ºó±»É¾È¥¡£

¡¡¡¡ÏÂÃæµÄÀý×ÓÖУ¬ ½«°Ñ pkg-message ÖÐµÄ %%ARCH%% Ìæ»»ÎªÏµÍ³ËùÔËÐеļܹ¹Ãû³Æ£º

SUB_FILES=     pkg-message
SUB_LIST=      ARCH=${ARCH}

¡¡¡¡×¢Ò⣬ ÔÚÉÏÊöÀý×ÓÖУ¬ FILESDIR Àï±ØÐëÓÐ pkg-message.in Õâ¸öÎļþ¡£

¡¡¡¡ÏÂÃæÊÇÒ»¸öÕýÈ·µÄ pkg-message.in Àý×Ó£º

Now it is time to configure this package.
Copy %%PREFIX%%/share/examples/putsy/%%ARCH%%.conf into your home directory
as .putsy.conf and edit it.

µÚ9Õ ¡¡²âÊÔÄúµÄ port

9.1 ÔËÐÐ make describe

¡¡¡¡Ðí¶à FreeBSD port ά»¤¹¤¾ß£¬ ÀýÈç portupgrade(1)£¬ »áÒÀÀµÓÚÒ»¸öÃûΪ /usr/ports/INDEX µÄÊý¾Ý¿âµÄÕýÈ·ÐÔ£¬ ËüÌṩÁ˹ØÓÚ port µÄÏà¹ØÐÅÏ¢£¬ ÀýÈçÒÀÀµ¹ØÏµµÈµÈ¡£ INDEX ÊÇÓɶ¥¼¶µÄ ports/Makefile ͨ¹ý make index À´½¨Á¢µÄ£¬ Õâ¸öÃüÁî»á½øÈëÿһ¸ö port µÄ×ÓĿ¼£¬ ²¢ÔÚÄÇÀïÖ´ÐÐ make describe¡£ Òò´Ë£¬ Èç¹ûij¸ö port µÄ make describe ʧ°Ü£¬ ¾ÍûÓÐÈËÄÜÉú³É INDEX£¬ ÈËÃǺܿì»á±äµÃ²»¸ßÐË¡£

×¢Òâ: ÎÞÂÛÔÚ make.conf ÖÐÉèÖÃÁËʲôѡÏ Õâ¸öÎļþ¶¼Ó¦Äܹ»ÕýÈ·µØÉú³É¡£ Òò´Ë£¬ Ó¦±ÜÃâÔÚ (ÀýÈç) ij¸öÒÀÀµ¹ØÏµÎÞ·¨Âú×ãʱʹÓà .error¡£ (²Î¼û µÚ 12.16 ½Ú¡£)

¡¡¡¡Èç¹û make describe Ö»ÊDzúÉúÒ»¸ö×Ö·û´®£¬ ¶ø²»ÊÇ´íÎóÐÅÏ¢£¬ ¿ÉÄܾÍûʲôÎÊÌâ¡£ Çë²Î¼û bsd.port.mk ÒÔÁ˽âËùÉú³ÉµÄ´®µÄÒâÒå¡£

¡¡¡¡×îºóҪ˵Ã÷µÄÊÇ£¬ а汾µÄ portlint (ÔÚÏÂÒ»½ÚÖн«½øÐнéÉÜ) ½«»á×Ô¶¯µØÔËÐÐ make describe¡£


9.2 Portlint

¡¡¡¡ÔÚÌá½»»ò commit ֮ǰ£¬ ӦʹÓà portlint À´½øÐмì²é¡£ portlint »á¶Ô³£¼ûµÄ¡¢ °üÀ¨¹¦ÄÜÉϵĺ͸ñʽÉϵĴíÎó¸ø³ö¾¯¸æ¡£ ¶ÔÓÚÐ嵀 (»òÔÚ repocopy ´úÂë¿âÖи´ÖƵÄ) port£¬ portlint -A ¿ÉÒÔÍê³ÉÈ«Ãæ¼ì²é£» ¶ÔÓÚôß´æµÄ port£¬ portlint -C Ò»°ã¾Í×ã¹»ÁË¡£

¡¡¡¡ÓÉÓÚ portlint ²ÉÓÃÆô·¢Ê½·½·¨À´¼ì²é´íÎó£¬ ÓÐʱËü»á²úÉúÎ󾯡£ ÁíÍ⣬ ÓÐʱÓÉÓÚ port ¿ò¼ÜµÄÏÞÖÆ¿ÉÄÜûÓа취ÐÞÕýËüÖ¸³öµÄÎÊÌâ¡£ Èç¹ûÄúÓÐÒÉÂÇ£¬ ÇëдÐÅѯÎÊ FreeBSD ports ÓʼþÁÐ±í¡£


9.3 ʹÓà Port Tools À´Íê³É²âÊÔ

¡¡¡¡ÔÚ Ports Ì×¼þÖУ¬ ÌṩÁËÒ»¸ö ports-mgmt/porttools ³ÌÐò¡£

¡¡¡¡port ÊÇÒ»¸öÄܹ»°ïÖúÄú¼ò»¯²âÊÔ¹¤¾ßµÄǰ¶Ë½Å±¾¡£ Èç¹ûÏ£Íû¶ÔÐÂÔöµÄ port »ò¸üРport ʱ½øÐвâÊÔ£¬ ¿ÉÒÔÓà port test À´Íê³ÉÕâЩ²âÊÔ¹¤×÷£¬ ÕâÒ²°üº¬ÁË portlint ¼ì²é¡£ Õâ¸öÃüÁî»á¼ì²â²¢ÁгöûÓÐÔÚ pkg-plist ÖÐÁгöµÄÎļþ¡£ ¾ßÌåÓ÷¨Çë²Î¼ûÏÂÃæµÄÀý×Ó£º

# port test /usr/ports/net/csup

9.4 PREFIX (°²×°Ê±µÄ¶¥¼¶Ä¿Â¼Ãû) ºÍ DESTDIR

¡¡¡¡PREFIX Äܹ»¾ö¶¨ port °²×°Ê±µÄÄ¿µÄλÖᣠһ°ãÇé¿öÏÂÕâ¸öλÖÃÊÇ /usr/local »ò /opt£¬ µ«Ò²¿ÉÒÔÉèΪÆäËüµÄÈÎÒâÖµ¡£ ÄúµÄ port Ôò±ØÐë×ñÑ­Õâ¸ö±äÁ¿¡£

¡¡¡¡³ý´ËÖ®Í⣬ Èç¹ûÓû§ÅäÖÃÁË DESTDIR£¬ Ôò±íʾϣÍû½« port °²×°µ½ÁíÒ»¸ö»·¾³£¬ ͨ³£ÊÇ jail »òÔÚ / ÒÔÍâµÄÆäËûλÖùҽӵÄϵͳÖС£ ʵ¼ÊÉÏ£¬ port »á°²×°µ½ DESTDIR/PREFIX£¬ ²¢×¢²áµ½Î»ÓÚ DESTDIR/var/db/pkg µÄÔ¤±àÒë°üÊý¾Ý¿âÖС£ ÓÉÓÚ DESTDIR ÊÇÓÉ ports ¿ò¼Ü½åÓÉ chroot(8) À´ÊµÏֵģ¬ ÄúÔÚ׫д·ûºÏ DESTDIR ¹æ·¶µÄ ports ʱ²¢²»ÐèҪʲô¶îÍâµÄ¹¤×÷¡£

¡¡¡¡Ò»°ã¶øÑÔ PREFIX »áÉèΪ LOCALBASE_REL (ĬÈÏÊÇ /usr/local)¡£ Èç¹ûÉèÖÃÁË USE_LINUX_PREFIX£¬ Ôò PREFIX »áÉèΪ LINUXBASE_REL (ĬÈÏÊÇ /compat/linux)¡£

¡¡¡¡±ÜÃ⽫ /usr/local »ò /usr/X11R6 Ó²±àÂëµ½Ô´´úÂëÖУ¬ Äܹ»´ó´óÌá¸ß port µÄÁé»îÐÔ£¬ ²¢ÊÊÓ¦²»Í¬»·¾³µÄÐèÒª¡£ ¶ÔÓÚʹÓà imake µÄ X port£¬ ÕâÒ»¹¤×÷ÊÇ×Ô¶¯Íê³ÉµÄ£» ÆäËûÇé¿öÏ£¬ ͨ³£¿ÉÒÔ¼òµ¥µØ½« port ËùÓõ½µÄ Makefile ½Å±¾ÖгöÏÖµÄ /usr/local (»ò¶ÔÓÚûÓÐʹÓà imake µÄ X port ¶øÑÔ£¬ /usr/X11R6) Ìæ»»Îª¶ÁÈ¡ ${PREFIX} ±äÁ¿¾ÍÄܴﵽĿµÄÁË£¬ ÒòΪÕâ¸ö±äÁ¿ÔÚÁª±àºÍ°²×°µÄ¹ý³ÌÖУ¬ »á×Ô¶¯ÏòÏ´«µÝ¡£

¡¡¡¡Ò»¶¨Òª±ÜÃâÈÃÄúµÄ port ÔÚ /usr/local ¶ø²»ÊÇÕýÈ·µÄ PREFIX Öа²×°Îļþ¡£ ¼òµ¥µÄ²âÊÔ·½·¨ÊÇ£º

# make clean; make package PREFIX=/var/tmp/`make -V PORTNAME`

¡¡¡¡Èç¹ûÓÐÎļþ°²×°µ½ÁË PREFIX ÒÔÍâµÄµØ·½£¬ ´ò°ü¹ý³Ì½«±§Ô¹ÕÒ²»µ½ÕâЩÎļþ¡£

¡¡¡¡ÕâÒ»²½Öè²¢²»ÄܰïÖú·¢ÏÖÄÚ²¿ÒýÓ㬠»ò¾ÀÕýÔÚÒýÓÃÆäËü port ÖеÄÎļþʱʹÓÃµÄ LOCALBASE¡£ ÄúÐèÒªÔÚ /var/tmp/`make -V PORTNAME` ÖвâÊÔ°²×°ºÃµÄÈí¼þ£¬ ²ÅÄܹ»´ïµ½ÕâÑùµÄÄ¿µÄ¡£

¡¡¡¡Äú¿ÉÒÔÔÚ×Ô¼ºµÄ Makefile Öиıä PREFIX ±äÁ¿µÄÖµ£¬ Ò²¿ÉÒÔͨ¹ýÓû§»·¾³±äÁ¿À´Ó°ÏìËü¡£ È»¶ø£¬ Ò»°ãÇé¿öϾö²»Ó¦¸ÃÔÚ Makefile ÖÐÃ÷È·ÉèÖÃËüµÄÖµ¡£

¡¡¡¡´ËÍ⣬ ÒýÓÃÆäËü port ÖеÄÎļþʱ£¬ ӦʹÓÃÇ°Ãæ½éÉܵıäÁ¿£¬ ¶ø²»ÒªÖ±½ÓÖ¸¶¨ËüÃǵÄ·¾¶Ãû¡£ ÀýÈ磬 Èç¹ûÄúµÄ port ÐèҪʹÓà PAGER Õâ¸öºêÀ´Ö¸Ã÷ less µÄÍêÕû·¾¶£¬ ӦʹÓÃÏÂÃæµÄ±àÒëÑ¡Ï

-DPAGER=\"${LOCALBASE}/bin/less\"
¶ø·Ç -DPAGER=\"/usr/local/bin/less\"¡£ ÕâÖÖ·½·¨Äܹ»Ôö¼ÓÔÚϵͳ¹ÜÀíÔ±°ÑÕû¸ö /usr/local Ŀ¼Ųµ½ÆäËüλÖÃʱ°²×°³É¹¦µÄ»ú»á¡£

9.5 Tinderbox

¡¡¡¡Èç¹ûÄúÊǷdz£ÈÈÐÄµÄ ports ²ÎÓëÕߣ¬ Ôò¿ÉÒÔ¿´¿´ Tinderbox¡£ ÕâÊÇÒ»¸öÇ¿´óµÄÓÃÓÚÁª±àºÍ²âÊÔ ports µÄϵͳ£¬ Ëü»ùÓÚ Pointyhat µÄ½Å±¾¡£ Äú¿ÉÒÔʹÓà ports-mgmt/tinderbox port À´°²×° Tinderbox¡£ ÇëÒ»¶¨×ÐϸÔĶÁËæËü°²×°µÄÎĵµ£¬ ÒòΪÅäÖò¢²»¼òµ¥¡£

¡¡¡¡Çë·ÃÎÊ Tinderbox ÍøÕ¾ ÒÔÁË½â½øÒ»²½µÄϸ½Ú¡£


µÚ10Õ ¡¡Éý¼¶Ò»¸ö port

¡¡¡¡Èç¹ûÄú·¢ÏÖij¸ö port Ïà¶ÔÔ­×÷ÕßËù·¢²¼µÄ°æ±¾ÒѾ­¹ýʱ£¬ ÔòÊ×ÏÈÐèҪȷÈϵÄÊÇÄúµÄ port ÊÇ×îеġ£ Äú¿ÉÒÔÔÚ FreeBSD FTP ¾µÏñµÄ ports/ports-current Ŀ¼ÖÐÕÒµ½ËüÃÇ¡£ µ«ÊÇ£¬ Èç¹ûÄúÕýÔÚʹÓý϶àµÄ port£¬ Ôò¿ÉÄÜʹÓà CVSup À´±£³Ö Ports Collection ×îиüΪ¼òµ¥£¬ ÕâÔÚ Ê¹ÓÃÊÖ²á ÖнøÐÐÁ˽éÉÜ¡£ ´ËÍ⣬ ÕâÑù×öÒ²ÓÐÖúÓÚ±£³Ö port ÒÀÀµ¹ØÏµµÄÕýÈ·ÐÔ¡£

¡¡¡¡ÏÂÒ»²½ÊǼì²éÊÇ·ñÒѾ­ÓÐÔڵȴýµÄ¸üС£ ÒªÍê³ÉÕâÏ×÷£¬ ¿ÉÒÔ²ÉÓÃÏÂÁÐÁ½ÖÖ·½·¨Ö®Ò»¡£ ÓÐÒ»¸öÓÃÓÚËÑË÷ FreeBSD ÎÊÌⱨ¸æ (PR) Êý¾Ý¿â (Ò²±»³Æ×÷ GNATS)¡£ ÔÚÏÂÀ­¿òÖÐÑ¡Ôñ ports£¬ È»ºóÊäÈë port µÄÃû×Ö¡£

¡¡¡¡µ«ÊÇ£¬ ÓÐЩʱºòÈËÃÇ»áÍü¼Ç½«±ÜÃâ»ìÏýµÄ port µÄÃû×ַŵ½ Synopsis ×Ö¶ÎÖС£ ÕâÖÖʱºò£¬ Äú¿ÉÒÔÊÔÊÔ¿´ FreeBSD Ports ¼àÊÓϵͳ (Ò²±»½Ð×ö portsmon)¡£ Õâ¸öϵͳ»á³¢ÊÔ°´ÕÕ port µÄÃû×ÖÀ´½øÐзÖÀà¡£ ÒªËÑË÷ºÍij¸öÌØ¶¨ port ÓÐ¹ØµÄ PR£¬ ¿ÉÒÔʹÓà port¸ÅÀÀ¡£

¡¡¡¡Èç¹ûûÓкòÉóµÄ PR£¬ ÏÂÒ»²½ÊǸø port µÄά»¤ÕßдÐÅ£¬ Õâ¿ÉÒÔͨ¹ýÖ´ÐÐ make maintainer ¿´µ½¡£ Õâ¸öÈË¿ÉÄÜÕýÔÚ½øÐÐÉý¼¶¹¤×÷£¬ »òÕßÓÉÓÚijÖÖÀíÓÉÔÝʱûÓÐÉý¼¶ (ÀýÈ磬 а汾ÓÐÎȶ¨ÐÔÎÊÌâ)£» Ò»°ãÄú²»Ï£ÍûÖØ¸´ËûÃǵŤ×÷¡£ ×¢ÒâûÓÐά»¤ÕßµÄ port µÄά»¤Õß»áÏÔʾΪ ports@FreeBSD.org£¬ ÕâÊÇÒ»°ãÐÔ port ÎÊÌâµÄÓʼþÁÐ±í£¬ Òò´Ë·¢Óʼþ¸øËüÒ»°ãûʲôÒâÒå¡£

¡¡¡¡Èç¹ûά»¤ÕßÒªÇóÄúÈ¥Íê³ÉÉý¼¶£¬ »òÕßûÓÐά»¤Õߣ¬ Äú¾ÍÓлú»áͨ¹ý×ÔÐÐÍê³ÉÉý¼¶À´°ïÖú FreeBSD ÁË£¡ ÇëʹÓûù±¾ÏµÍ³ÌṩµÄ diff(1) ÃüÁîÀ´Íê³ÉÏà¹ØµÄ¹¤×÷¡£

¡¡¡¡Èç¹ûÖ»ÐÞ¸ÄÒ»¸öÎļþ£¬ ¿ÉÒÔÖ±½ÓʹÓà diff À´Éú³É²¹¶¡£¬ ½«ÐèÒªÐ޸ĵÄÎļþ¸´ÖÆ³É something.orig£¬ ²¢½«¸Ä¶¯·Å½ø something£¬ ½Ó×ÅÉú³É²¹¶¡£º

% /usr/bin/diff something.orig something > something.diff

¡¡¡¡Èç¹û²»ÊÇÕâÑùµÄ»°£¬ ÔòÄúӦʹÓà cvs diff µÄ·½·¨ (µÚ 10.1 ½Ú)£¬ »ò½«Ä¿Â¼Õû¸ö¸´ÖƵ½ÁíÒ»¸öĿ¼£¬ ²¢Ê¹Óà diff(1) ±È½ÏÁ½¸öĿ¼ʱÔÚĿ¼Öеݹé²úÉúµÄÊä³ö½á¹û (ÀýÈ磬 Èç¹ûÄúÐ޸ĺóµÄ port Ŀ¼µÄÃû×ÖÊÇ superedit ¶øÔ­Ê¼ÎļþµÄĿ¼ÊÇ superedit.bak£¬ ÔòÓ¦±£´æ diff -ruN superedit.bak superedit µÄ½á¹û)¡£ Ò»ÖÂʽ (unified) »ò ÉÏÏÂÎÄʽ (context) diff ¶¼ÊÇ¿ÉÒԵģ¬ µ«Ò»°ãÀ´Ëµ port committer »á¸üϲ»¶Ò»ÖÂʽ diff¡£ Çë×¢ÒâÕâÀïʹÓõÄÑ¡Ïî -N£¬ ËüµÄÄ¿µÄÊÇÇ¿ÖÆ diff ÕýÈ·µØ´¦Àí³öÏÖÐÂÎļþ£¬ »òÀÏÎļþ±»É¾³ýµÄÇéÐΡ£ ÔÚ°Ñ diff ·¢¸øÎÒÃÇ֮ǰ£¬ ÇëÔٴμì²éÊä³ö£¬ ÒÔ±ãÈ·ÈÏÿһ¸öÐ޸ͼÊÇÓÐÒâÒåµÄ¡£ (ÌØ±ð×¢Ò⣬ ÔÚ¶Ô±ÈĿ¼֮ǰҪÓà make clean ÇåÀíÒ»ÏÂ)¡£

¡¡¡¡ÎªÁ˼ò»¯³£ÓõIJ¹¶¡Îļþ²Ù×÷£¬ Äú¿ÉÒÔʹÓà /usr/ports/Tools/scripts/patchtool.py¡£ ʹÓÃ֮ǰ£¬ ÇëÊ×ÏÈÔĶÁ /usr/ports/Tools/scripts/README.patchtool¡£

¡¡¡¡Èç¹û port Ŀǰ»¹ÎÞÈËά»¤£¬ ¶øÇÒÄú×Ô¼º¾­³£Ê¹ÓÃËü£¬ Ç뿼ÂÇ×Ô¼öΪËüµÄά»¤Õß¡£ FreeBSD Óг¬¹ý 4000 ¸öûÓÐά»¤ÕßµÄ port£¬ ¶øÕâÕýÊÇ×îÐèÒªÖ¾Ô¸ÈËÔ±µÄÁìÓò¡£ (ÒªÁË½â¹ØÓÚά»¤ÕßµÄÈÎÎñÃèÊö£¬ Çë²Î¼û ¿ª·¢ÊÖ²áÖеÄÏà¹Ø²¿·Ö¡£)

¡¡¡¡½« diff ·¢Ë͸øÎÒÃǵÄ×î¼Ñ·½Ê½ÊÇͨ¹ý send-pr(1) (category Ò»À¸Ð´ ports)¡£ Èç¹ûÄúÕýά»¤ÄǸö port£¬ ÇëÎñ±ØÔÚ synopsis µÄ¿ªÍ·Ð´ÉÏ [maintainer update]£¬ ²¢½«ÄúµÄ PR µÄ ¡°Class¡± ÉèÖÃΪ maintainer-update¡£ ·´Ö®£¬ ÄúµÄ PR µÄ ¡°Class¡± ¾ÍÓ¦¸ÃÊÇ change-request¡£ ÇëÔÚÐÅÖÐÖð¸öÌἰÿһ¸öɾ³ý»òÔö¼ÓµÄÎļþ£¬ ÒòΪÕâЩ¶¼±ØÐëÃ÷È·µØÔÚʹÓà cvs(1) ½øÐÐ commit ʱÃ÷È·µØÖ¸¶¨¡£ Èç¹û diff ³¬¹ýÁË 20K£¬ Ç뿼ÂÇѹËõ²¢¶ÔÆä½øÐÐ uuencode£» ·ñÔò£¬ ¼òµ¥µØ½«ÆäÔ­Ñù¼ÓÈë PR ¼´¿É¡£

¡¡¡¡ÔÚÄú send-pr(1) ֮ǰ£¬ ÇëÔÙ´ÎÔĶÁ Problem Reports Ò»ÎÄÖÐµÄ ÈçºÎ׫дÎÊÌⱨ¸æ С½Ú£» Ëü¸ø³öÁ˷ḻµÄ¹ØÓÚÈçºÎ׫д¸üºÃµÄÎÊÌⱨ¸æµÄ½éÉÜ¡£

ÖØÒª: Èç¹ûÄúµÄ¸üÐÂÊÇÓÉÓÚ°²È«¿¼ÂÇ£¬ »òÐÞ¸´ÒѾ­ commit µÄ port ÖеÄÑÏÖØÎÊÌ⣬ Çë֪ͨ Ports ¹ÜÀíÍÅ¶Ó À´ÉêÇëÁ¢¼´Öؽ¨ºÍ·Ö·¢ÄúµÄ port µÄ package¡£ ·ñÔò£¬ ²»Ô¸»³ÒɵÄʹÓà pkg_add(1) µÄÓû§£¬ ¿ÉÄÜ»áÔÚδÀ´ÊýÖÜÖ®ÄÚ¼ÌÐøÍ¨¹ýʹÓà pkg_add -r °²×°¾É°æ±¾¡£

×¢Òâ: ÔÙ´ÎÇ¿µ÷£¬ ÇëʹÓà diff(1) ¶ø·Ç shar(1) À´·¢ËÍÏÖÓÐ port µÄ¸üУ¡ Õâ¿ÉÒÔ°ïÖú ports committer Àí½âÐèÒªÐ޸ĵÄÄÚÈÝ¡£

¡¡¡¡ÏÖÔÚÄúÒѾ­Á˽âÁËËùÐèµÄËùÓвÙ×÷£¬ Äú¿ÉÄÜ»áÏñÒªÔĶÁÔÚ µÚ 14 Õ ÖйØÓÚÈçºÎ±£³Ö×îеÄÃèÊö¡£


10.1 ʹÓà CVS ÖÆ×÷²¹¶¡

¡¡¡¡Èç¹û¿ÉÄܵϰ£¬ ÇëÌá½»cvs(1) diff£» ÕâÖÖÇéÐÎÒª±ÈÖ±½Ó±È½Ï ¡°Ð¡¢¾É¡± Ŀ¼ҪÈÝÒ×´¦Àí¡£ ´ËÍ⣬ ÕâÖÖ·½·¨Ò²ÈÃÄú¸üÈÝÒ׿´³öµ½µ×¸ÄÁËʲô£¬ ²¢ÔÚÆäËûÈ˸üÐÂÁË Ports Collection ʱÈÝÒ׺ϲ¢ÕâЩ¸Ä¶¯£¬ ÔÚÌύ֮ǰ£¬ Õâ¿ÉÒÔ¼õÉÙά»¤²¹¶¡ËùÐèµÄ¹¤×÷¡£

% cd ~/my_wrkdir (1)
% cvs -d R_CVSROOT co pdnsd (2) (3)
% cd ~/my_wrkdir/pdnsd
(1)
µ±È»£¬ Õâ¿ÉÒÔÊÇÄúÖ¸¶¨µÄÈÎÒâĿ¼£» Áª±à port ²¢²»¾ÖÏÞÓÚ /usr/ports/ µÄ×ÓĿ¼¡£
(2)
R_CVSROOT ÊÇÈκÎÒ»¸ö¹«¹²µÄ cvs ¾µÏñ·þÎñÆ÷£¬ Äú¿ÉÒÔÔÚ FreeBSD ʹÓÃÊÖ²á ÖÐÌôѡһ¸ö¡£
(3)
pdnsd ÊÇ port µÄÄ£¿éÃû×Ö£» ͨ³£ËµÀ´ËüºÍ port µÄÃû×ÖÒ»Ñù£¬ ²»¹ýÒ²ÓÐЩÀýÍ⣬ ÌØ±ðÊÇÄÇЩ±¾µØ»¯Àà±ð (german/selfhtml ¶ÔÓ¦µÄÄ£¿éÃû×ÖÊÇ de-selfhtml)£» Äú¿ÉÒÔͨ¹ý cvsweb ½çÃæ ²éѯ£¬ »òÕßÒ²¿ÉÒÔÖ¸¶¨ÍêÕû·¾¶£¬ ÀýÈçÔÚÎÒÃÇÕâ¸öÀý×ÓÖÐÊÇ ports/dns/pdnsd¡£

¡¡¡¡ÔÚ¹¤×÷Ŀ¼ÖУ¬ Äú¿ÉÒÔÏñÍù³£Ò»Ñù½øÐÐÈκθü¸Ä¡£ Èç¹ûÄúÌí¼Ó»òɾ³ýÁËÎļþ£¬ ÔòÐèÒª¸æËß cvs À´×·×ÙÕâЩ¸Ä¶¯£º

% cvs add new_file
% cvs remove deleted_file

¡¡¡¡Çë·´¸´¼ì²é µÚ 3.4 ½Ú ÁгöµÄÊÂÏʹÓà µÚ 3.5 ½Ú ½øÐмì²é¡£

% cvs status
% cvs update (1)
(1)
Õâ»áºÏ²¢ CVS ÖÐÆäËûÈË×öµÄ¸Ä¶¯ºÍÄúµÄ²¹¶¡£» ÔÚÕâ¸ö¹ý³ÌÖУ¬ ÄúÐèÒª×Ðϸ¹Û²ìÊä³ö¡£ ÎļþÃûÇ°ÃæµÄÄǸö×Öĸ»áÏÔʾ×öÁËʲô£¬ Çë²ÎÔÄ ±í 10-1 Öиø³öµÄ˵Ã÷¡£

±í 10-1. cvs update ÎļþÃûǰ×Öĸǰ׺µÄº¬Òå

U Îļþ¸üÐÂÎÞÎó¡£
P Îļþ¸üÐÂÎÞÎó (ͨ³£Ö»ÓÐÔÚʹÓÃÔ¶³Ì´úÂë¿âʱ²Å»á¿´µ½)¡£
M ÎļþÓб¾µØÐ޸ģ¬ ²¢ºÏ²¢³É¹¦¶øÎ´²úÉúÈκγåÍ»¡£
C ÎļþÓб¾µØÐ޸ģ¬ ½øÐÐÁ˺ϲ¢²¢²úÉúÁ˳åÍ»¡£

¡¡¡¡Èç¹ûÄúÔÚÖ´ÐÐ cvs update ʱijЩÎļþ³öÏÖÁË C£¬ Ôò˵Ã÷ÓÐÆäËûÈËÔÚ CVS ÖÐ×öÁËÐ޸ģ¬ ¶ø cvs(1) ÎÞ·¨½«ÕâЩ¸Ä¶¯ÓëÄú±¾µØµÄ¸Ä¶¯½øÐкϲ¢¡£ ²»¹ý£¬ ÎÞÂÛÈçºÎ£¬ ×îºÃ¶¼¼ì²éһϺϲ¢µÄ½á¹û£¬ ÒòΪ cvs ²¢²»ÖªµÀ port Ó¦¸ÃÊÇʲôÑù×Ó£¬ Òò´ËËüËù×öµÄºÏ²¢ÎÞÂÛÊÇ·ñ²úÉúÁ˳åÍ»£¬ ¶¼ÓпÉÄÜ (²¢ÇÒ²¢²»º±¼û) ²úÉúûÓÐÒâÒåµÄ½á¹û¡£

¡¡¡¡×îºóÒ»²½ÊÇÒÔ CVS ÖеÄÎļþΪ»ù´¡Éú³É unified diff(1)£º

% cvs diff -uN > ../`basename ${PWD}`.diff

×¢Òâ: Ö¸¶¨ -N Ê®·ÖÖØÒª£¬ ÒòΪËüÈ·±£ÁËÌí¼Ó»òɾ³ýµÄÎļþÒ²³öÏÖÔÚ²¹¶¡ÖС£ ²¹¶¡½«°üº¬É¾³ýµÄÎļþ£¬ ÔÚ´òÉϲ¹¶¡Ê±£¬ ÕâЩÎļþ»á±»Çå¿Õ£¬ ËùÒÔ×îºÃÔÚ PR ÖÐÌáÐÑ committer ɾ³ýËüÃÇ¡£

¡¡¡¡¸ù¾Ý µÚ 10 Õ µÄÖ¸µ¼Ìá½»ÄúµÄ²¹¶¡¡£


10.2 UPDATING ºÍ MOVED Îļþ

¡¡¡¡Èç¹ûÔÚÉý¼¶ port ʱÐèÒªÀàËÆÐÞ¸ÄÅäÖÃÎļþ»òÔËÐÐÌØ¶¨µÄ³ÌÐòÕâÑùµÄÌØ±ð²½Ö裬 ÔòÓ¦ÔÚ /usr/ports/UPDATING ÎļþÖÐÓèÒÔ˵Ã÷¡£ Õâ¸öÎļþÖеÄÏîÄ¿¸ñʽÈçÏ£º

YYYYMMDD:
  AFFECTS: users of portÀà±ð/portÃû×Ö
  AUTHOR: ÄúµÄÃû×Ö <ÄúµÄµç×ÓÓʼþµØÖ·>

  ËùÐèÖ´ÐеÄÌØ±ð²½Öè

¡¡¡¡Èç¹ûÄúÐèÒªÔÚÄÚÎÄÖмÓÈë¾ßÌåµÄ portmaster »ò portupgrade µÄ˵Ã÷£¬ ÇëÈ·±£ËùÓÃµÄ shell ÃüÁîʹÓÃÁËÕýÈ·µÄתÒå×Ö·û¡£

¡¡¡¡Èç¹û port ±»É¾³ý»ò¸ÄÃû£¬ÔòÓ¦ÔÚ /usr/ports/MOVED ÖÐÌí¼ÓÏàÓ¦µÄ˵Ã÷ÏîÄ¿¡£ Õâ¸öÎļþÖеÄÏîÄ¿¸ñʽÈçÏ£º

Ô­À´µÄÃû×Ö|ÐÂÃû×Ö (Èç¹ûɾ³ýÔòÓ¦Áô¿Õ)|ɾ³ý»ò¸ÄÃûµÄÈÕÆÚ|Ô­Òò

µÚ11Õ ¡¡Ports µÄ°²È«

11.1 °²È«ÎªºÎÈç´ËÖØÒª

¡¡¡¡Èí¼þÖÐż¶û»áÒýÈë bug¡£ ÎãÓ¹ÖÃÒÉ£¬ °²È«Â©¶´ÊÇ×îΪΣÏյġ£ ´Ó¼¼Êõ½Ç¶È¿´£¬ ÕâЩ©¶´¿ÉÒÔͨ¹ýÏû³ýµ¼ÖÂËüÃÇµÄ bug À´ÐÞ¸´¡£ È»¶ø£¬ ´¦ÀíÒ»°ãµÄ bug ºÍ°²È«Â©¶´µÄ²ßÂÔÊǽØÈ»²»Í¬µÄ¡£

¡¡¡¡µäÐ͵ÄС bug ͨ³£Ö»Ó°ÏìÄÇЩÆôÓÃÁËijЩÄܹ»´¥·¢ËüµÄÑ¡Ïî×éºÏµÄÓû§¡£ ¿ª·¢ÈËÔ±×îÖÕ»áÔÚ·¢²¼Ã»ÓÐÄǸöÎÊÌâµÄаæÖ®ºó¸ø³öÒ»¸ö²¹¶¡À´ÐÞÕýËü£¬ ¶øÓû§ÖеÄÖ÷Ìå²¢²»»áÁ¢¼´Éý¼¶£¬ ÒòΪËûÃDz¢Ã»ÓÐÒò´æÔÚÎÊÌâ¶ø¸Ðµ½¿àÄÕ¡£ ÑÏÖØµÄ bug ¿ÉÄܻᵼÖÂÊý¾Ý¶ªÊ§ºÍÆäËüÎÊÌ⣬ ÎÞÂÛÈçºÎ£¬ ½÷É÷µÄÓû§ÖªµÀ£¬ ³ýÁËÈí¼þ bug Ö®Í⻹ÓкܶàÆäËüʹʿÉÄܻᵼÖÂÊý¾Ý¶ªÊ§£¬ Òò´ËËûÃǻᱸ·ÝÖØÒªÊý¾Ý£» ´ËÍ⣬ ÑÏÖØµÄ bug ͨ³£»á±»ºÜ¿ì·¢ÏÖ¡£

¡¡¡¡°²È«Â©¶´ÔòÍêÈ«²»Í¬¡£ µÚÒ»£¬ ËüÃÇ¿ÉÄÜ´æÔÚÊýÄê¶ø²»±»·¢ÏÖ£¬ ÒòΪËüÃÇ¿ÉÄܲ¢²»µ¼ÖÂÈí¼þÎÞ·¨Õý³£¹¤×÷¡£ µÚ¶þ£¬ ͨ¹ýÀûÓé¶´£¬ ¶ñÒâµÄÒ»·½¿ÉÄÜ»áµÃµ½Î´»ñÊÚȨµÄ·ÃÎÊȨÏÞ£¬ ²¢ÀûÓÃÕâЩȨÏÞ»Ùµô»òÐÞ¸ÄÃô¸ÐÊý¾Ý£» ¶ø¸üÔã¸âµÄÇé¿öÔòÊÇÓû§¿ÉÄܸù±¾×¢Òâ²»µ½Ëðº¦ÒѾ­·¢Éú¡£ µÚÈý£¬ ±©Â¶³ö°²È«Â©¶´µÄϵͳ£¬ ÍùÍùÄܹ»°ïÖú¹¥»÷Õß´³ÈëÆäËü֮ǰ²»¿ÉÄܽøÈëµÄϵͳ¡£ Òò´Ë£¬ Ö»ÊÇÐÞÕý°²È«Â©¶´ÊDz»¹»µÄ£º ±ØÐëÒÔÇåÎúºÍÈ«ÃæµÄ·½Ê½Í¨Öª¹«ÖÚ£¬ ÕâÑùËûÃǾÍÄܹ»ÆÀ¹À·çÏÕ£¬ ²¢²ÉÈ¡Êʵ±µÄ´ëÊ©¡£


11.2 ÐÞ¸´°²È«Â©¶´

¡¡¡¡µ±ËµÆð port »ò package ʱ£¬ °²È«Â©¶´ÍùÍùÊdzöÏÖÔÚÔ­×÷Õߵķ¢Ðаü£¬ »òÒÆÖ²¹ý³ÌÖмÓÈëµÄÎļþÀï¡£ ¶ÔÓÚǰһÖÖÇé¿ö£¬ Èí¼þµÄÔ­×÷Õßͨ³£»áÁ¢¿Ì·¢²¼Ò»¸ö²¹¶¡ÉõÖÁа棬 ÄúÖ»ÐèÒª°´ÕÕÔ­×÷ÕßµÄÐÞÕýÈ¥¸üРport ¾Í¿ÉÒÔÁË¡£ Èç¹ûÓÉÓÚijÖÖÔ­ÒòÐÞÕý±»ÑÓÎó£¬ ÔòҪô ½« port ±ê¼ÇΪ FORBIDDEN£¬ ҪôÔÚ port ÖмÓÈëÒ»¸ö×Ô¼ºµÄ²¹¶¡¡£ Èç¹ûÓдæÔÚ©¶´µÄ port£¬ ¾¡¿ÉÄܾ¡¿ìÐÞ¸´Æä©¶´¾ÍÊÇ¡£ ÎÞÂÛÊÇÄÄÖÖÇé¿ö£¬ Äú»¹ÊÇÐèÒª°´ÕÕ ±ê×¼µÄÌá½»Á÷³Ì Ìá½»£¬ ³ý·ÇÄúÓÐÖ±½ÓÔÚ ports tree ÉÏ commit µÄȨÏÞ¡£

ÖØÒª: ×÷Ϊ ports committer ²¢²»Äܹ»Ëæ±ã commit ËùÓÐ port¡£ Çë×¢Òâͨ³£ port ¶¼ÓÐά»¤Õߣ¬ ¶øËûÃÇÓ¦µÃµ½ÄúµÄ×ðÖØ¡£

¡¡¡¡ÔÚ©¶´±»ÐÞÕýÖ®ºó£¬ Ò»¶¨ÒªÍ¬Ê±Ôö¼Ó port µÄÐÞ¶©°æ±¾ºÅ¡£ ÕâÑù£¬ ¹æÂÉÐÔµØÉý¼¶°²×°µÄ package µÄÓû§¾ÍÄܹ»¿´µ½ËûÃÇÐèÒª½øÐÐÉý¼¶¡£ ÁíÍ⣬ »¹Ó¦Áª±àÔ¤±àÒëµÄ°²×°°ü£¬ ²¢Í¨¹ý FTP ºÍ WWW ¾µÏñ·¢²¼£¬ ÒÔÈ¡´úÓЩ¶´µÄ°æ±¾¡£ ×¢ÒâÒªÔö¼Ó PORTREVISION Êý×Ö£¬ ³ý·ÇÔÚÐÞÕýÎÊÌâʱ PORTVERSION ·¢ÉúÁ˱仯¡£ Ò»°ãÀ´Ëµ£¬ Èç¹ûÔÚ port ÖÐÔö¼ÓÁ˲¹¶¡Îļþ£¬ ¾ÍÓ¦¸ÃÔö¼Ó PORTREVISION£¬ µ«ÀýÍâµÄÀý×ÓÊÇÄúÒѾ­½«Èí¼þÉý¼¶µ½ÁË×îа棬 ÒòΪÕâʱÒѾ­¸Äµô PORTVERSION ÁË¡£ Çë²Î¼û Ïà¹ØÐ¡½Ú ÒÔÁË½â½øÒ»²½µÄÐÅÏ¢¡£


11.3 ֪ͨÕû¸öÓû§ÈºÌå

11.3.1 VuXML Êý¾Ý¿â

¡¡¡¡µ±·¢ÏÖÁ˰²È«Â©¶´Ê±µÄÒ»ÏîÖØÒª¶ø½ôÆÈµÄ²½Ö裬 ¾ÍÊÇÈÃʹÓà port µÄÓû§ÈºÁ˽âÆäΣÏÕ¡£ ÕâÀà֪ͨÓÐÁ½ÖØÄ¿µÄ¡£ Ê×ÏÈ£¬ Èç¹ûΣº¦ÕæµÄºÜÑÏÖØ£¬ ¿ÉÄÜÀíÐԵİ취¾ÍÊÇÁ¢¼´Ó¦ÓÃÒ»Ï½â´ëÊ©£¬ ÀýÈ磬 Í£Ö¹Êܵ½Ó°ÏìµÄ·þÎñ£¬ ÉõÖÁÍêȫɾ³ý port£¬ Ö±µ½ÎÊÌâ±»ÐÞÕýΪֹ¡£ Æä´Î£¬ Ðí¶àÓû§Ö»ÊÇż¶ûÉý¼¶Ëù°²×°µÄÈí¼þ°ü£¬ ͨ¹ý֪ͨ£¬ ËûÃÇÄܹ»ÖªµÀÒѾ­µ½ÁË ±ØÐë ¸üÐÂÈí¼þµÄʱºò£¬ ÒòΪÒѾ­ÓÐÁËÐÞÕýÕâЩÎÊÌâµÄ°æ±¾ÁË¡£

¡¡¡¡ÓÉÓÚÏÖÓÐµÄ port ÊýÁ¿¼«ÆäÅÓ´ó£¬ ÎªÃ¿Ò»¸öÎÊÌâ¶¼·¢²¼°²È«¹«¸æ£¬ ºÁÎÞÒÉÎʵػᷢ±íºÍÀÇÀ´ÁËÒ»Ñù¶àµÄ°²È«¹«¸æ£¬ ²¢Ôö´óÊÜÖÚÔÚÕæµÄ·¢ÉúÑÏÖØµÄÎÊÌâʱºöÂÔÎÊÌâµÄ¿ÉÄÜ¡£ Òò´Ë£¬ ÔÚ port Öз¢Ïֵݲȫ©¶´£¬ »áÔÚ FreeBSD VuXML Êý¾Ý¿â ÖмǼ¡£ °²È«¹ÙÍŶӳÉÔ±»á³ÖÐøµØ×·×ÙÕâ¸öÊý¾Ý¿âµÄÐ޸ģ¬ ÒÔÁ˽âÐèÒªËûÃÇ×¢ÒâµÄÄÚÈÝ¡£

¡¡¡¡Èç¹ûÄúÊÇ committer£¬ Ôò¿ÉÒÔ×ÔÐиüРVuXML Êý¾Ý¿â¡£ ÕâÑù£¬ Äú¾ÍÄܹ»Í¬Ê±°ïÖú°²È«¹ÙÍŶӣ¬ ²¢¾¡Ô罫ÖÁ¹ØÖØÒªµÄÐÅÏ¢´«´ï¸øÓû§ÈºÌå¡£ È»¶ø£¬ Èç¹ûÄú²»ÊÇ committer£¬ »òÕßÄúÏàÐÅ×Ô¼º·¢ÏÖÁËÒ»¸öÒì³£ÑÏÖØµÄ©¶´£¬ Çë²»ÒªÓÌÔ¥£¬ °´ÕÕ FreeBSD °²È«ÐÅÏ¢ Ò³ÃæÉϵķ½·¨ÁªÏµ°²È«¹ÙÍŶӡ£

¡¡¡¡ÕýÈçÆäÃû³ÆËù°µÊ¾µÄÄÇÑù£¬ VuXML Êý¾Ý¿âÊÇÒ»¸ö XML Îĵµ¡£ ÆäÔ´Îļþ vuln.xml ±»±£´æÔÚ security/vuxml port µÄĿ¼ÖС£ ËùÒÔ£¬ ËüµÄÈ«ÃûÊÇ PORTSDIR/security/vuxml/vuln.xml¡£ ÿµ±Äú·¢ÏÖ port Öеݲȫ©¶´Ê±£¬ Çë°Ñеļͼ¼ÓÈëµ½ÄǸöÎļþÖС£ ÔÚÊìϤ VuXML ֮ǰ£¬ Äú×îºÃÏÈ¿´¿´ÊÇ·ñÓÐÀàËÆµÄÄú·¢ÏÖµÄÎÊÌâµÄÆäËü¼Ç¼£¬ ²¢¸´ÖÆËü×÷Ϊģ°å¡£


11.3.2 VuXML ¼ò½é

¡¡¡¡XML ÊÇÒ»¸ö¸´ÔÓµÄÓïÑÔ£¬ ËüÔ¶Ô¶³¬Ô½ÁËÕâ±¾ÊéµÄ·¶Î§¡£ ²»¹ý£¬ Ö»ÐèÁ˽â±ê¼ÇµÄÃüÃû¹æÔò£¬ ¾ÍÄÜ VuXML ¼Ç¼µÄ½á¹¹ÓÐÒ»¸ö´óÌåµÄÁ˽âÁË¡£ XML ±ê¼ÇµÄÃû×ÖÓ¦³öÏÖÔÚÒ»¶Ô¼âÀ¨ºÅÖ®¼ä¡£ ÿһ¸ö <tag> ±ØÐëÓÐÒ»¸ö¶ÔÓ¦µÄ </tag>¡£ ±ê¼Ç¿ÉÒÔǶÌ×£¬ Èç¹ûǶÌ׵ϰ£¬ ÄÚ²ãµÄ±ê¼Ç±ØÐëÔÚÍâ²ã±ê¼Ç֮ǰ½áÊø¡£ Õâ¾ÍÐγÉÁËÒ»¸ö±ê¼ÇµÄ²ã´Î½á¹¹£¬ Ò²¾ÍÊǹØÓÚËüÃÇÖ®¼äÈçºÎǶÌ׵ĹæÔò¡£ ÌýÆðÀ´ºÜÏñ HTML£¬ ÊDz»ÊÇ£¿ ×îÖ÷ÒªµÄÇø±ðÔÚÓÚ£¬ XML ÊÇ¿ÉÀ©Õ¹µÄ (eXtensible)£¬ ÀýÈçͨ¹ý¶¨Òåеıê¼ÇµÈµÈ¡£ ÓÉÓÚÆä½á¹¹µÄÄÚÔÚÐÔÖÊ£¬ XML Äܹ»¸³ÓèÎÞ×éÖ¯µÄÊý¾ÝеÄÐÎ̬¡£ VuXML ÊÇרÃÅΪÃèÊö°²È«Â©¶´Éè¼ÆµÄÓïÑÔ¡£

¡¡¡¡ÏÖÔÚÈÃÎÒÃÇÀ´¹Û²ìÒ»¸öʵ¼ÊµÄ VuXML ¼Ç¼£º

<vuln vid="f4bc80f4-da62-11d8-90ea-0004ac98a7b9"> (1)
  <topic>Several vulnerabilities found in Foo</topic> (2)
  <affects>
    <package>
      <name>foo</name> (3)
      <name>foo-devel</name>
      <name>ja-foo</name>
      <range><ge>1.6</ge><lt>1.9</lt></range> (4)
      <range><ge>2.*</ge><lt>2.4_1</lt></range>
      <range><eq>3.0b1</eq></range>
    </package>
    <package>
      <name>openfoo</name> (5)
      <range><lt>1.10_7</lt></range> (6)
      <range><ge>1.2,1</ge><lt>1.3_1,1</lt></range>
    </package>
  </affects>
  <description>
    <body xmlns="http://www.w3.org/1999/xhtml">
      <p>J. Random Hacker reports:</p> (7)
      <blockquote
        cite="http://j.r.hacker.com/advisories/1">
        <p>Several issues in the Foo software may be exploited
          via carefully crafted QUUX requests.  These requests will
          permit the injection of Bar code, mumble theft, and the
          readability of the Foo administrator account.</p>
      </blockquote>
    </body>
  </description>
  <references> (8)
    <freebsdsa>SA-10:75.foo</freebsdsa> (9)
    <freebsdpr>ports/987654</freebsdpr> (10)
    <cvename>CAN-2010-0201</cvename> (11)
    <cvename>CAN-2010-0466</cvename>
    <bid>96298</bid> (12)
    <certsa>CA-2010-99</certsa> (13)
    <certvu>740169</certvu> (14)
    <uscertsa>SA10-99A</uscertsa> (15)
    <uscertta>SA10-99A</uscertta> (16)
    <mlist msgid="201075606@hacker.com">http://marc.theaimsgroup.com/?l=bugtraq&amp;m=203886607825605</mlist> (17)
    <url>http://j.r.hacker.com/advisories/1</url> (18)
  </references>
  <dates>
    <discovery>2010-05-25</discovery> (19)
    <entry>2010-07-13</entry> (20)
    <modified>2010-09-17</modified> (21)
  </dates>
</vuln>

¡¡¡¡±ê¼ÇµÄÃû×Ö¶¼ÊǼòµ¥Ã÷Á˵ģ¬ ÏÂÃæÎÒÃÇÀ´½éÉÜÒ»ÏÂÐèÒªÓÉÄúÌîдµÄ×ֶΣº

(1)
ÕâÊÇ VuXML ¼Ç¼µÄ¶¥¼¶ tag¡£ ËüÓÐÒ»¸öÇ¿ÖÆÐÔµÄ×ֶΣ¬ vid£¬ ÓÃÓÚΪ´Ë¼Ç¼ (Ëü°üº¬µÄ²¿·Ö) Ö¸¶¨Ò»¸öÈ«¾ÖΨһ±êʶ·û (UUID)¡£ ÄúӦΪÿһ¸öÐ嵀 vuXML Éú³ÉÐ嵀 UUID (¶øÇÒ±ðÍüÁËÒª°ÑÄ£°åÖÐµÄ UUID »»³ÉÐµģ¬ Èç¹ûÄú²»ÊÇ´ÓÍ·¿ªÊ¼µÄ»°)¡£ Äú¿ÉÒÔʹÓà uuidgen(1) À´Éú³É VuXML UUID¡£
(2)
¹ØÓÚÎÊÌâµÄÒ»¾ä»°ÃèÊö¡£
(3)
´Ë´¦¸ø³öÊܵ½Ó°ÏìµÄ package µÄÃû×Ö¡£ ¿ÉÒÔ¸ø³ö¶à¸öÃû×Ö£¬ ÒòΪ¿ÉÄÜÓжà¸öÈí¼þ°ü»ùÓÚͬһ¸ö master port »òÈí¼þ²úÆ·¡£ Õâ¿ÉÄܰüÀ¨Îȶ¨ºÍ¿ª·¢·ÖÖ§¡¢ ±¾µØ»¯°æ±¾£¬ ÒÔ¼°ÌṩÁ˲»Í¬µÄ±àÒëʱѡÏîµÄ slave port¡£

ÖØÒª: ׫д VuXML ¼Ç¼ʱ£¬ ÄúÓÐÔðÈÎÕÒµ½ËùÓÐÏà¹ØµÄ°ü¡£ ºÜ¶àʱºò make search name=foo ÊÇÄúµÄÅóÓÑ¡£ ÐèÒªÁôÒâµÄͨ³£°üÀ¨£º

  • foo port µÄ foo-devel ±äÌ壻

  • °üº¬²»Í¬ºó׺µÄÆäËü±äÌ壬 ÀýÈç -a4 (¶ÔÓںʹòÓ¡ÓйصÄÈí¼þ°ü)£¬ -without-gui (Ìṩµ«½ûÓÃÁË X Ö§³ÖµÄÈí¼þ°ü)£¬ ÒÔ¼°ÀàËÆµÄÆäËüÇé¿ö£»

  • jp-£¬ ru-¡¢ zh-£¬ ÒÔ¼°ÆäËü¿ÉÄܵı¾µØ»¯±äÌ壬 ËüÃÇͨ³£¿ÉÒÔÔÚ Ports Collection ÖÐÏàÓ¦µÄ¹ú¼Ò·ÖÀàÖÐÕÒµ½¡£

(4)
ÊÜÓ°ÏìµÄ package °æ±¾£¬ ¿ÉÒÔʹÓà <lt>, <le>, <eq>, <ge>, ºÍ <gt> ±í´ï³ÉÒ»¸ö»ò¶à¸ö°æ±¾¼°Æä·¶Î§¡£ ×¢Òâ¸ø³öµÄ°æ±¾·¶Î§²»Ó¦´æÔÚÖØµþ¡£

ÔÚÃèÊö·¶Î§µÄʱºò£¬ * (ÐǺÅ) ±í´ï×îСµÄ°æ±¾¡£ ¸ü¾ßÌåµØËµ£¬ 2.* СÓÚ 2.a¡£ Òò´Ë£¬ ÐǺſÉÒÔÓÃÀ´Æ¥ÅäËùÓпÉÄÜµÄ alpha¡¢ beta£¬ ÒÔ¼° RC °æ±¾¡£ ÀýÈ磬 <ge>2.*</ge><lt>3.*</lt> ¿ÉÒÔÑ¡ÔñÐÔµØÆ¥Åäÿһ¸ö 2.x µÄ°æ±¾£¬ ¶ø <ge>2.0</ge><lt>3.0</lt> ÏÔÈ»²»ÄÜ£¬ ÒòΪËü»á©µô 2.r3 ¶øÆ¥Åä 3.b¡£

ÉÏÃæµÄÀý×ÓÖ¸¶¨ÁËÊÜÓ°ÏìµÄ°æ±¾£¬ ÊǰüÀ¨ 1.6 µ½ 1.9 ÉÏϽçµÄËùÓа汾£¬ ÒÔ¼° 2.x ÔÚ 2.4_1 ֮ǰµÄ°æ±¾£¬ ºÍ 3.0b1 °æ¡£

(5)
Êܵ½Ó°ÏìµÄÒ»×é package (±¾ÖÊÉÏÊÇ ports) ¿ÉÒÔÁÐÔÚ <affected> С½ÚÖС£ Èç¹û¶à¸öÈí¼þ²úÆ·¶¼²ÉÓÃÁËͬÑùµÄ»ù´¡´úÂ룬 (±ÈÈç˵ FooBar¡¢ FreeBar ºÍ OpenBar) ¶øÇÒ°üº¬Í¬ÑùµÄ bug »ò©¶´¡£ Çë×¢ÒâÁгö¶à¸öÃû×Öʱ£¬ Ó¦¸ÃÔÚÒ»¸ö <package> С½ÚÖÐÍê³É¡£
(6)
Èç¹û¿ÉÄÜ£¬ °æ±¾µÄ·¶Î§Ó¦°üÀ¨ PORTEPOCH ºÍ PORTREVISION¡£ Îñ±Ø×¢Ò⣬ ¸ù¾Ý¼ÓȨ¹æÔò£¬ ´øÓзÇÁã PORTEPOCH µÄ°æ±¾£¬ ϵͳ»áÈÏΪ±ÈûÓÐ PORTEPOCH µÄ°æ±¾¸ß£¬ ÀýÈç 3.0,1 ¸ßÓÚ 3.1 ÉõÖÁ 8.9¡£
(7)
¹ØÓÚÎÊÌâµÄÕªÒªÐÔÐÅÏ¢¡£ ´Ë´¦Ê¹Óà XHTML¡£ Îñ±ØÒª³É¶ÔʹÓà <p> ºÍ </p>¡£ ¿ÉÒÔʹÓýÏΪ¸´Ôӵıê¼Ç£¬ µ«½öÏÞÓÚÓÐÖúÓÚÈÃÐÅÏ¢¸ü׼ȷºÍÃ÷Á˵ÄÐÞÊΣº Çë²»Òª¹ý·ÖµØÃÀ»¯¡£
(8)
Õⲿ·Ö°üº¬ÁËÏà¹ØµÄ¿É¹©²Î¿¼µÄÎĵµ¡£ Ç뾡¿ÉÄܶàÌṩ²Î¿¼ÎÄÏס£
(9)
Ö¸¶¨ FreeBSD °²È«¹«¸æ¡£
(10)
Ö¸¶¨ FreeBSD ÎÊÌⱨ¸æ¡£
(11)
Ö¸¶¨ Mitre CVE ID¡£
(12)
Ö¸¶¨ SecurityFocus Bug ID¡£
(13)
Ö¸¶¨ US-CERT °²È«¹«¸æ¡£
(14)
Ö¸¶¨ US-CERT ©¶´ËµÃ÷¡£
(15)
Ö¸¶¨ US-CERT ¼ÆËã»ú°²È«¾¯±¨¡£
(16)
Ö¸¶¨ US-CERT ¼¼ÊõÐÔ¼ÆËã»ú°²È«¾¯±¨¡£
(17)
Ö¸ÏòÓʼþÁÐ±í´æµµµÄ URL¡£ ÊôÐÔ msgid ÊÇ¿ÉÑ¡Ï ÓÃÒÔÖ¸¶¨Ä³Ò»·âÐÅµÄ message ID¡£
(18)
Ò»°ãµÄ URL¡£ Ö»ÓÐÔÚûÓÐÆäËü¸üÊʺϵIJο¼ÎÄÏ×ʱ£¬ ²ÅӦʹÓÃËü¡£
(19)
ÎÊÌâ±»È«ÃæÅû¶µÄÈÕÆÚ (YYYY-MM-DD)¡£
(20)
¼Ç¼¼ÓÈëµ½Êý¾Ý¿âÖеÄÈÕÆÚ (YYYY-MM-DD)¡£
(21)
¼Ç¼×îºóÒ»´Î±»Ð޸ĵÄÈÕÆÚ (YYYY-MM-DD)¡£ мǼ²»Ó¦°üÀ¨Õâ¸ö×ֶΡ£ Ö»ÓÐÔÚÐ޸ļǼʱ²ÅÓ¦¼ÓÈëËü¡£

11.3.3 ²âÊÔÄú¶Ô VuXML Êý¾Ý¿âËù×÷µÄÐÞ¸Ä

¡¡¡¡¼Ù¶¨Äú´òËã׫д£¬ »òÒѾ­Ð´ºÃÁËÒ»¸ö¹ØÓÚ package clamav µÄÎÊÌâÃèÊö£¬ ²¢ÇÒ£¬ ÒѾ­ÖªµÀ 0.65_7 °æ±¾ÐÞÕýÁËÕâ¸öÎÊÌâ¡£

¡¡¡¡ÄúÐèÒª×öµÄ×¼±¸¹¤×÷£¬ ÊÇ °²×° Ò»¸öа汾µÄ ports ports-mgmt/portaudit ³ÌÐò¡¢ ports-mgmt/portaudit-db£¬ ÒÔ¼° security/vuxml¡£

×¢Òâ: ÒªÔËÐÐ packaudit£¬ Äú±ØÐëÓµÓÐÆä DATABASEDIR£¬ ͨ³£ÊÇ /var/db/portaudit µÄдÈëȨÏÞ¡£

Äú¿ÉÒÔͨ¹ý DATABASEDIR »·¾³±äÁ¿À´Ö¸¶¨Ò»¸ö²»Í¬µÄλÖá£

Èç¹ûÄúµÄ¹¤×÷Ŀ¼ÊÇ ${PORTSDIR}/security/vuxml ÒÔÍâµÄÆäËüµØ·½£¬ ÔòӦʹÓû·¾³±äÁ¿ VUXMLDIR À´Ö¸Ã÷ vuln.xml µÄλÖá£

¡¡¡¡Ê×ÏÈ£¬ ¼ì²éÒ»ÏÂÊÇ·ñÒѾ­ÓÐÁ˹ØÓÚÕâ¸ö©¶´µÄÃèÊö¡£ Èç¹ûÒѾ­ÓйýÕâÑùµÄ¼Ç¼£¬ ÄÇôËü½«Æ¥Åä½ÏÔç°æ±¾µÄ package£¬ 0.65_6£º

% packaudit
% portaudit clamav-0.65_6

¡¡¡¡Èç¹ûʲô¶¼Ã»Óз¢ÏÖ£¬ Äú¾Í¿ÉÒÔ¿¼ÂÇдһ¸öеļǼÀ´ÃèÊöÕâ¸ö©¶´ÁË¡£ ÏÖÔÚ¿ÉÒÔÉú³ÉÒ»¸öÐ嵀 UUID (¼ÙÉèËüÊÇ 74a9541d-5d6c-11d8-80e3-0020ed76ef5a)£¬ È»ºó½«ÄúµÄмǼ¼ÓÈëµ½ VuXML Êý¾Ý¿âÖС£ ½ÓÏÂÀ´£¬ ÓÃÏÂÃæµÄÃüÁîÀ´¼ì²éËüÊÇ·ñ·ûºÏÓï·¨£º

% cd ${PORTSDIR}/security/vuxml && make validate

×¢Òâ: ÄúÐèÒª°²×°ÏÂÁÐ package ÖеÄÖÁÉÙÒ»¸ö£º textproc/libxml2¡¢ textproc/jade¡£

¡¡¡¡½ÓÏÂÀ´´Ó VuXML ÎļþÖØ¹¹ portaudit Êý¾Ý¿â£º

% packaudit

¡¡¡¡ÒªÑéÖ¤ÄúмÓÈëµÄÏîµÄ <affected> С½ÚÄܹ»ÕýÈ·µØÆ¥ÅäÏ£ÍûµÄ package£¬ ¿ÉÒÔʹÓÃÏÂÃæµÄÃüÁ

% portaudit -f /usr/ports/INDEX -r 74a9541d-5d6c-11d8-80e3-0020ed76ef5a

×¢Òâ: Çë²Î¼û portaudit(1) ÒÔÁË½â¹ØÓÚÕâ¸öÃüÁîÓï·¨µÄ¸ü¶àϸ½Ú¡£

¡¡¡¡ÇëÈ·ÐÅÐÂÌí¼ÓµÄ¼Ç¼²»»áÔÚÊä³öÖÐÆ¥Å䲻ӦƥÅäµÄÏî¡£

¡¡¡¡ÏÖÔÚ¼ì²éÄúÌí¼ÓµÄ¼Ç¼ËùÆ¥ÅäµÄ°æ±¾ÊÇ·ñÕýÈ·£º

% portaudit clamav-0.65_6 clamav-0.65_7
Affected package: clamav-0.65_6 (matched by clamav<0.65_7)
Type of problem: clamav remote denial-of-service.
Reference: <http://www.freebsd.org/ports/portaudit/74a9541d-5d6c-11d8-80e3-0020ed76ef5a.html>

1 problem(s) found.

¡¡¡¡ÏÔÈ»£¬ ǰһ¸ö°æ±¾»áÆ¥Å䣬 ¶øºóÒ»¸ö²»»á¡£

¡¡¡¡×îºó£¬ ÑéÖ¤Äú´Ó VuXML Êý¾Ý¿âÖÐÄܹ»ÕýÈ·µØµÃµ½Ô¤ÆÚµÄÍøÒ³Ð§¹û£º

% mkdir -p ~/public_html/portaudit
% packaudit
% lynx ~/public_html/portaudit/74a9541d-5d6c-11d8-80e3-0020ed76ef5a.html

µÚ12Õ ¡¡¸Ã×öʲôºÍ²»¸Ã×öʲô

12.1 ½éÉÜ

¡¡¡¡ÕâÀïÊÇһЩÔÚÒÆÖ²Èí¼þʱ¿ÉÄÜ»áÓöµ½µÄ³£¼ûÎÊÌâ¡£ ÄúÓ¦°´ÕÕÕâ¸öÁбí¼ì²é×Ô¼ºµÄ port£¬ ͬÑùµØ£¬ ÄúÒ²¿ÉÒÔ°ïÖú¼ì²é PR Êý¾Ý¿â ÖÐÓÉÆäËüÈËÌá½»µÄ port¡£ Çë°´ÕÕÔÚ ÎÊÌⱨ¸æºÍÒ»°ãÐÔ×¢ÊÍ ÖнéÉܵķ½·¨Ìá½»ÄúµÄ¿´·¨¡£ °ïÖú¼ì²é PR Êý¾Ý¿âÖÐµÄ ports ¼´Äܹ»°ïÖúÎÒÃǸü¿ìµØ commit ËüÃÇ£¬ Ò²ÄÜÖ¤Ã÷ÄúÇå³þµØÁ˽âÈçºÎÍê³ÉÕâЩ¹¤×÷¡£


12.2 WRKDIR (Áª±àʱʹÓõÄÁÙʱĿ¼)

¡¡¡¡ÈκÎʱºò¶¼²»ÒªÔÚ WRKDIR ÒÔÍâµÄλÖÃдÎļþ¡£ WRKDIR ÊÇÔÚ port Áª±à¹ý³ÌÖÐΨһµÄÒ»´¦Ò»¶¨¿ÉдµÄµØ·½ (²Î¼û ÈçºÎ´Ó CDROM °²×° port ÒÔÁ˽â´ÓÖ»¶ÁµÄĿ¼ÖÐÁª±àºÍ°²×° port µÄÀý×Ó)¡£ Èç¹ûÄúÐèÒª¸Ä±ä pkg-* Îļþ£¬ Çë°´ÕÕ ÖØÐ¶¨Òåij¸ö±äÁ¿ ½éÉܵķ½·¨£¬ ¶ø²»ÊǸ²¸ÇËüÃÇÀ´ÊµÏÖ¡£


12.3 WRKDIRPREFIX (ÓÃÓÚÁª±àµÄÁÙʱĿ¼µÄ¸¸Ä¿Â¼Ãû)

¡¡¡¡Ò»¶¨ÒªÈ·±£ÄúµÄ port ×ðÖØ WRKDIRPREFIX µÄÉèÖᣠ¾ø´ó¶àÊý port ²¢²»ÐèÒªµ£ÐÄÕâ¸ö¡£ ¾ßÌå˵À´£¬ µ±ÒýÓÃÆäËü port µÄ WRKDIR ʱ£¬ ÐèҪעÒâÕýÈ·µÄλÖÃÓ¦¸ÃÊÇ WRKDIRPREFIXPORTSDIR/subdir/name/work ¶ø²»ÊÇ PORTSDIR/subdir/name/work »ò .CURDIR/../../subdir/name/work£¬ »ò±ðµÄʲô¡£

¡¡¡¡ÁíÍ⣬ Èç¹ûÄú×ÔÐж¨ÒåÁË WRKDIR£¬ Ò²Òª°Ñ ${WRKDIRPREFIX}${.CURDIR} ·Åµ½Ç°Ãæ¡£


12.4 Çø·Ö²»Í¬µÄ²Ù×÷ϵͳ£¬ ÒÔ¼° OS µÄ°æ±¾

¡¡¡¡ÔÚ²»Í¬°æ±¾µÄ Unix Ï¿ÉÄÜÐèÒª¶Ô´úÂë½øÐÐһЩÐ޸ĻòÔö¼ÓÉÙÐí±àÒëÑ¡Ï ²ÅÄܹ»ÕýÈ·µØ±àÒëºÍÔËÐС£ Èç¹ûÄúÐèÒª¸ù¾ÝһЩÌõ¼þÀ´¶Ô´úÂë½øÐÐÐ޸ģ¬ Ç뾡¿ÉÄÜÈÃÕâЩÐÞ¸ÄͨÓ㬠ÕâÑù£¬ ÎÒÃǾÍÄܹ»½«ÕâЩ´úÂëÒÆÖ²»Ø¸üÔçµÄ FreeBSD ϵͳ£¬ ²¢½»²æÒÆÖ²µ½ÆäËü BSD ϵͳ£¬ ÀýÈçÀ´×Ô CSRG µÄ 4.4BSD£¬ BSD/386£¬ 386BSD£¬ NetBSD ºÍ OpenBSD¡£

¡¡¡¡ÍƼöµÄ»ñµÃ 4.3BSD/Reno (1990) ÒÔ¼°¸üа汾 BSD ´úÂë°æ±¾ºÅµÄ·½Ê½£¬ ÊÇʹÓà sys/param.h ÖÐËù¶¨ÒåµÄ BSD ºêµÄÖµ¡£ Ò»°ãÀ´ËµÕâ¸öÎļþÒѾ­±»ÒýÓÃÁË£» Èç¹ûûÓеϰ£¬ Ôö¼ÓÏÂÊö´úÂ룺

#if (defined(__unix__) || defined(unix)) && !defined(USG)
#include <sys/param.h>
#endif

¡¡¡¡µ½ .c ÎļþÖкÏÊʵĵط½¡£ ÎÒÃÇÏàÐÅËùÓж¨ÒåÁËÕâÁ½¸ö·ûºÅµÄϵͳÖУ¬ ¶¼ÌṩÁË sys/param.h¡£ Èç¹ûÄú·¢ÏÖÓв»ÕâÑù×öµÄϵͳ£¬ Çëͨ¹ýÖÂÐÅ FreeBSD ports ÓʼþÁбí ÈÃÎÒÃÇÁ˽âÕâÒ»Çé¿ö¡£

¡¡¡¡ÁíÒ»ÖÖ·½·¨ÊÇʹÓà GNU Autoconf ·ç¸ñµÄ·½Ê½£º

#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif

¡¡¡¡²ÉÓÃÕâÖÖ·½·¨Ê±£¬ ²»ÒªÍüÁ衄 -DHAVE_SYS_PARAM_H ¼Óµ½ Makefile ÖÐµÄ CFLAGS Àï¡£

¡¡¡¡Ò»µ©ÒýÓÃÁË sys/param.h£¬ Äú¾Í¿ÉÒÔʹÓãº

#if (defined(BSD) && (BSD >= 199103))

¡¡¡¡À´¼ì²â´úÂëÊÇ·ñÕýÔÚ 4.3 Net2 ´úÂë»ù´¡£¬ »ò¸üеÄϵͳÉϱàÒë (ÀýÈç FreeBSD 1.x£¬ 4.3/Reno£¬ NetBSD 0.9£¬ 386BSD£¬ BSD/386 1.1 ÒÔ¼°¸ü¸ß°æ±¾)¡£

¡¡¡¡Ê¹Óãº

#if (defined(BSD) && (BSD >= 199306))

¡¡¡¡À´¼ì²â´úÂëÊÇ·ñÕýÔÚ 4.4 »ò¸üеÄϵͳ (ÀýÈç FreeBSD 2.x£¬ 4.4£¬ NetBSD 1.0¡¢ BSD/386 2.0 »ò¸ü¸ß°æ±¾)¡£

¡¡¡¡¶ÔÓÚ 4.4BSD-Lite2 ´úÂëϵÀ´Ëµ£¬ BSD ºêµÄÖµÓ¦¸ÃÊÇ 199506¡£ ÕâÀïÖ»ÊÇ×÷ΪÐÅÏ¢Ìṩ£¬ Äú²»Ó¦Ê¹ÓÃËüÀ´Çø·Ö»ùÓÚ 4.4-Lite µÄ FreeBSD ºÍ»ùÓÚ 4.4-Lite2 µÄ°æ±¾¡£ ÕâЩÇé¿öÏ£¬ ÄúӦʹÓà __FreeBSD__ ºê¡£

¡¡¡¡±£ÊصØÊ¹Óãº

  • __FreeBSD__ ÔÚËùÓа汾µÄ FreeBSD ÖнÔÓж¨Òå¡£ Èç¹ûÄúÕý½øÐеÄÐÞ¸Ä Ö» Ó°Ïì FreeBSD£¬ ÔòӦʹÓÃÕâ¸öºê¡£ ÀàËÆ sys_errlist[] Ö®ÓÚ strerror() ÕâÑùµÄÒÆÖ²ÎÊÌâÊDz®¿ËÀû´úÂëϵ¹«Óõģ¬ ¶ø²¢·Ç FreeBSD ËùרÓС£

  • ÔÚ FreeBSD 2.x ÖУ¬ __FreeBSD__ ¶¨ÒåΪ 2¡£ ¸üÔç°æ±¾ÖУ¬ ËüÔø¾­ÊÇ 1¡£ еİ汾¶¼»áÔÚÖ÷ÒªµÄ°æ±¾ºÅ±ä»¯Ê±±ä¸üËü¡£

  • Èç¹ûÄúÐè񻂿·Ö FreeBSD 1.x ϵͳºÍ FreeBSD 2.x ¼°¸ü¸ß°æ±¾µÄÇø±ð£¬ ͨ³£Ó¦Ê¹ÓÃǰÊöµÄ BSD ºêÀ´½øÐС£ Èç¹ûÊÂʵÉÏÐèÒªÒ»¸ö FreeBSD רÓеÄÐÞ¸Ä (ÀýÈ磬 ÔÚʹÓà ld ʱÐèÒªÌØÊâµÄ¹²Ïí¿âÑ¡Ïî)£¬ Ôò¿ÉÒÔÓà __FreeBSD__ ºÍ #if __FreeBSD__ > 1 À´¼ì²â FreeBSD 2.x ºÍÐÂϵͳÉϵı仯¡£ Èç¹ûÐèÒª¸üϸÁ£¶ÈµØ¼ì²â FreeBSD 2.0-RELEASE Ö®ºó°æ±¾µÄ±ä»¯£¬ Ôò¿ÉÒÔʹÓãº

    #if __FreeBSD__ >= 2
    #include <osreldate.h>
    #    if __FreeBSD_version >= 199504
    	 /* ÊÊÓÃÓÚ 2.0.5+ °æ±¾µÄ´úÂë */
    #    endif
    #endif
    

¡¡¡¡ÔÚÒÑÓеÄÊý°Ù¸ö port ÖУ¬ Ö»ÓÐÒ»Á½¸öÓ¦¸ÃʹÓà __FreeBSD__¡£ ÔçÆÚµÄ port ÔÚ²»Êʵ±µÄµØ·½Ê¹ÓÃÁËËü²¢Òý·¢ÎÊÌ⣬ ²¢²»Òâζ×ÅÄúÒ²±Ø¶¨Èç´Ë¡£


12.5 __FreeBSD_version Öµ

¡¡¡¡ÏÂÃæÊÇÔÚ sys/param.h __FreeBSD_version Öж¨ÒåµÄÖµ¼°ÆäÒâÒåµÄÁÐ±í£¬ ÕâÀï¸ø³öÒÔ·½±ãÄú²éÔÄ£º

±í 12-1. __FreeBSD_version Öµ

Öµ ÈÕÆÚ °æ±¾
119411   2.0-RELEASE
199501, 199503 March 19, 1995 2.1-CURRENT
199504 April 9, 1995 2.0.5-RELEASE
199508 August 26, 1995 2.1 ֮ǰµÄ 2.2-CURRENT
199511 November 10, 1995 2.1.0-RELEASE
199512 November 10, 1995 2.1.5 ֮ǰµÄ 2.2-CURRENT
199607 July 10, 1996 2.1.5-RELEASE
199608 July 12, 1996 2.1.6 ֮ǰµÄ 2.2-CURRENT
199612 November 15, 1996 2.1.6-RELEASE
199612   2.1.7-RELEASE
220000 February 19, 1997 2.2-RELEASE
(not changed)   2.2.1-RELEASE
(Îޱ仯)   ÔÚ 2.2.1-RELEASE Ö®ºóµÄ 2.2-STABLE
221001 April 15, 1997 texinfo-3.9 Ö®ºóµÄ 2.2-STABLE
221002 April 30, 1997 top Ö®ºóµÄ 2.2-STABLE
222000 May 16, 1997 2.2.2-RELEASE
222001 May 19, 1997 2.2.2-RELEASE Ö®ºóµÄ 2.2-STABLE
225000 October 2, 1997 2.2.5-RELEASE
225001 November 20, 1997 2.2.5-RELEASE Ö®ºóµÄ 2.2-STABLE
225002 December 27, 1997 ºÏ²¢ ldconfig -R Ö®ºóµÄ 2.2-STABLE
226000 March 24, 1998 2.2.6-RELEASE
227000 July 21, 1998 2.2.7-RELEASE
227001 July 21, 1998 2.2.7-RELEASE Ö®ºóµÄ 2.2-STABLE
227002 September 19, 1998 semctl(2) ÐÞ¸ÄÖ®ºóµÄ 2.2-STABLE
228000 November 29, 1998 2.2.8-RELEASE
228001 November 29, 1998 2.2.8-RELEASE Ö®ºóµÄ 2.2-STABLE
300000 February 19, 1996 mount(2) ÐÞ¸Ä֮ǰµÄ 3.0-CURRENT
300001 September 24, 1997 mount(2) ÐÞ¸ÄÖ®ºóµÄ 3.0-CURRENT
300002 June 2, 1998 semctl(2) ÐÞ¸ÄÖ®ºóµÄ 3.0-CURRENT
300003 June 7, 1998 ioctl ²ÎÊý±ä»¯Ö®ºóµÄ 3.0-CURRENT
300004 September 3, 1998 ELF ±ä»»Ö®ºóµÄ 3.0-CURRENT
300005 October 16, 1998 3.0-RELEASE
300006 October 16, 1998 3.0-RELEASE Ö®ºóµÄ 3.0-CURRENT
300007 January 22, 1999 3/4ÇзÖÖ®ºóµÄ 3.0-STABLE
310000 February 9, 1999 3.1-RELEASE
310001 March 27, 1999 3.1-RELEASE Ö®ºóµÄ 3.1-STABLE
310002 April 14, 1999 C++ ¹¹½¨/Îö¹¹º¯Êý˳Ðò±ä»¯Ö®ºóµÄ 3.1-STABLE
320000   3.2-RELEASE
320001 May 8, 1999 3.2-STABLE
320002 August 29, 1999 ¶þ½øÖƲ»¼æÈÝµÄ IPFW ºÍ socket ±ä»¯Ö®ºóµÄ 3.2-STABLE
330000 September 2, 1999 3.3-RELEASE
330001 September 16, 1999 3.3-STABLE
330002 November 24, 1999 libc ÖмÓÈë mkstemp(3) Ö®ºóµÄ 3.3-STABLE
340000 December 5, 1999 3.4-RELEASE
340001 December 17, 1999 3.4-STABLE
350000 June 20, 2000 3.5-RELEASE
350001 July 12, 2000 3.5-STABLE
400000 January 22, 1999 3/4ÇзÖÖ®ºóµÄ 4.0-CURRENT
400001 February 20, 1999 Ð޸Ķ¯Ì¬Á¬½ÓÆ÷´¦Àí·½Ê½Ö®ºóµÄ 4.0-CURRENT
400002 March 13, 1999 C++ ¹¹½¨/Îö¹¹º¯Êý˳Ðò±ä»¯Ö®ºóµÄ
400003 March 27, 1999 Ìṩ dladdr(3) Ö®ºóµÄ 4.0-CURRENT
400004 April 5, 1999 ÐÞÕýÁË __deregister_frame_info µÄ 4.0-CURRENT (Ò²±íʾÔÚ EGCS 1.1.2 ¼¯³ÉÖ®ºóµÄ 4.0-CURRENT)
400005 April 27, 1999 suser(9) API ±ä»¯Ö®ºóµÄ 4.0-CURRENT (Ò²±íʾ newbus Ö®ºóµÄ 4.0-CURRENT)
400006 May 31, 1999 cdevsw ×¢²á»úÖÆ¸Ä±äÖ®ºóµÄ 4.0-CURRENT
400007 June 17, 1999 ¼ÓÈëÁË socket ¼¶Æ¾¾ÝµÄ so_cred Ö®ºóµÄ 4.0-CURRENT
400008 June 20, 1999 ÔÚ libc_r ÖмÓÈë poll ϵͳµ÷ÓýӿÚÖ®ºóµÄ 4.0-CURRENT
400009 July 20, 1999 ½«ÄÚºËÖÐ dev_t ÀàÐ͸ÄΪ struct specinfo Ö¸ÕëÖ®ºóµÄ 4.0-CURRENT
400010 September 25, 1999 ÐÞÕýÁËÒ»´¦ jail(2) ©¶´Ö®ºóµÄ 4.0-CURRENT
400011 September 29, 1999 sigset_t Êý¾ÝÀàÐ͸ıäÖ®ºóµÄ 4.0-CURRENT
400012 November 15, 1999 Çл»µ½ GCC 2.95.2 ±àÒëÆ÷Ö®ºóµÄ 4.0-CURRENT
400013 December 4, 1999 ¼ÓÈëÁ˿ɲåµÄ linuxģʽ ioctl ´¦Àí³ÌÐòºóµÄ 4.0-CURRENT
400014 January 18, 2000 ÒýÈë OpenSSL Ö®ºóµÄ 4.0-CURRENT
400015 January 27, 2000 GCC 2.95.2 ÖÐ ABI ĬÈÏÖµ´Ó -fvtable-thunks ¸ÄΪ -fno-vtable-thunks Ö®ºóµÄ 4.0-CURRENT
400016 February 27, 2000 ÒýÈë OpenSSH Ö®ºóµÄ 4.0-CURRENT
400017 March 13, 2000 4.0-RELEASE
400018 March 17, 2000 4.0-RELEASE Ö®ºóµÄ 4.0-STABLE
400019 May 5, 2000 ÒýÈëÑÓ³ÙУÑéºÍÖ®ºóµÄ 4.0-STABLE
400020 June 4, 2000 ½« libxpg4 µÄ´úÂë²¢Èë libc Ö®ºóµÄ 4.0-STABLE
400021 July 8, 2000 Binutils Éý¼¶µ½ 2.10.0 Ö®ºóµÄ 4.0-STABLE£¬ ELF ±êÖ¾±ä»¯£¬ ÒÔ¼°½« tcsh ÒýÈë»ù±¾ÏµÍ³
410000 July 14, 2000 4.1-RELEASE
410001 July 29, 2000 4.1-RELEASE Ö®ºóµÄ 4.1-STABLE
410002 September 16, 2000 setproctitle(3) ´Ó libutil ÒÆÈë libc Ö®ºóµÄ 4.1-STABLE
411000 September 25, 2000 4.1.1-RELEASE
411001   4.1.1-RELEASE Ö®ºóµÄ 4.1.1-STABLE
420000 October 31, 2000 4.2-RELEASE
420001 January 10, 2001 ºÏ²¢ libgcc.a ºÍ libgcc_r.a£¬ ²¢ÐÞ¸ÄÁËÏà¹ØµÄ GCC Á¬½Ó·½Ê½Ö®ºóµÄ 4.2-STABLE
430000 March 6, 2001 4.3-RELEASE
430001 May 18, 2001 ÒýÈë wint_t Ö®ºóµÄ 4.3-STABLE
430002 July 22, 2001 PCI µçԴ״̬ API ºÏ²¢Ö®ºóµÄ 4.3-STABLE
440000 August 1, 2001 4.4-RELEASE
440001 October 23, 2001 ÒýÈë d_thread_t Ö®ºóµÄ 4.4-STABLE
440002 November 4, 2001 mount ½á¹¹¸Ä±äÖ®ºóµÄ 4.4-STABLE (Ó°ÏìÎļþϵͳ kld)
440003 December 18, 2001 Óû§Ì¬²¿·ÖµÄ smbfs ±»ÒýÈëÖ®ºóµÄ 4.4-STABLE
450000 December 20, 2001 4.5-RELEASE
450001 February 24, 2002 usb ½á¹¹ÔªËظÄÃûÖ®ºóµÄ 4.5-STABLE
450004 April 16, 2002 ÔÚ rc.conf(5) ±äÁ¿ sendmail_enable ĬÈÏÖµ¸ÄΪ NONE Ö®ºóµÄ 4.5-STABLE
450005 April 27, 2002 ĬÈϽ« XFree86 4 ÓÃÓÚÔ¤±àÒë°üÁª±àÖ®ºóµÄ 4.5-STABLE
450006 May 1, 2002 accept ¹ýÂËÆ÷ÐÞÕýÁ˰²È«ÎÊÌâ²¢ÇÒ²»ÔÙ»áÇáÒ×±» DoS Ö®ºóµÄ 4.5-STABLE
460000 June 21, 2002 4.6-RELEASE
460001 June 21, 2002 ÐÞÕýÁË sendfile(2) ÒÔÎǺÏÎĵµ£¬ ¶ø²»ÔÙ¸ù¾Ý·¢³öµÄÍ·¼ÆËã·¢³öÊý¾ÝÁ¿Ö®ºóµÄ 4.6-STABLE
460002 July 19, 2002 4.6.2-RELEASE
460100 June 26, 2002 4.6-STABLE
460101 June 26, 2002 MFC `sed -i' Ö®ºóµÄ 4.6-STABLE
460102 September 1, 2002 MFC Ðí¶à pkg_install ÐÂÌØÐÔÖ®ºóµÄ 4.6-STABLE
470000 October 8, 2002 4.7-RELEASE
470100 October 9, 2002 4.7-STABLE
470101 November 10, 2002 ¿ªÊ¼Éú³É __std{in,out,err}p ÒýÓ㬠¶ø²»ÊÇ __sF¡£ Õ⽫ std{in,out,err} ´Ó±àÒëʱ±í´ïʽ±ä³ÉÁËÔËÐÐʱֵ¡£
470102 January 23, 2003 MFC mbuf Ïà¹ØµÄ½« m_aux mbuf ¸ÄΪ m_tag µÄÐÞ¸ÄÖ®ºóµÄ 4.7-STABLE
470103 February 14, 2003 OpenSSL Éý¼¶µ½ 0.9.7 Ö®ºóµÄ 4.7-STABLE
480000 March 30, 2003 4.8-RELEASE
480100 April 5, 2003 4.8-STABLE
480101 May 22, 2003 realpath(3) ±äΪḬ̈߳²È«µÄÖ®ºóµÄ 4.8-STABLE
480102 August 10, 2003 ¶Ô twe µÄ 3ware API ÐÞ¸ÄÖ®ºóµÄ 4.8-STABLE
490000 October 27, 2003 4.9-RELEASE
490100 October 27, 2003 4.9-STABLE
490101 January 8, 2004 kinfo_eproc ÖмÓÈë e_sid Ö®ºóµÄ 4.9-STABLE
490102 February 4, 2004 MFC rtld µÄ libmap ¹¦ÄÜÖ®ºóµÄ 4.9-STABLE
491000 May 25, 2004 4.10-RELEASE
491100 June 1, 2004 4.10-STABLE
491101 August 11, 2004 MFC 20040629 °æ±¾µÄ°üά»¤¹¤¾ßÖ®ºóµÄ 4.10-STABLE
491102 November 16, 2004 ÐÞÕýÁË VM µ±½â³ý wire ²»´æÔÚÒ³ÃæÊ±µÄÎÊÌâÖ®ºóµÄ 4.10-STABLE
492000 December 17, 2004 4.11-RELEASE
492100 December 17, 2004 4.11-STABLE
492101 April 18, 2006 ½« libdata/ldconfig Ŀ¼¼ÓÈë mtree ÎļþÖ®ºóµÄ 4.11-STABLE¡£
500000 March 13, 2000 5.0-CURRENT
500001 April 18, 2000 ¼ÓÈë ELF Í·×ֶΣ¬ ²¢¸Ä±äÎÒÃÇµÄ ELF Ö´ÐÐÎļþ±ê¼Ç·½Ê½Ö®ºóµÄ 5.0-CURRENT
500002 May 2, 2000 kld ÔªÊý¾ÝÐÞ¸ÄÖ®ºóµÄ 5.0-CURRENT
500003 May 18, 2000 buf/bio ÐÞ¸ÄÖ®ºóµÄ 5.0-CURRENT
500004 May 26, 2000 binutils Éý¼¶ºóµÄ 5.0-CURRENT
500005 June 3, 2000 ½« libxpg4 ²¢Èë libc£¬ ÒÔ¼°ÒýÈë TASKQ Ö®ºóµÄ 5.0-CURRENT
500006 June 10, 2000 ¼ÓÈë AGP ½Ó¿ÚÖ®ºóµÄ 5.0-CURRENT
500007 June 29, 2000 Perl Éý¼¶µ½ 5.6.0 Ö®ºóµÄ 5.0-CURRENT
500008 July 7, 2000 KAME ´úÂëÉý¼¶µ½ 2000/07 Ö®ºóµÄ 5.0-CURRENT
500009 July 14, 2000 ether_ifattach() ºÍ ether_detach() ÐÞ¸ÄÖ®ºóµÄ 5.0-CURRENT
500010 July 16, 2000 ½« mtree ¸ÄΪԭÏȵÄĬÈÏÖµ£¬ ²¢Ê¹Óà -L À´¸úËæ·ûºÅÁ¬½ÓÖ®ºóµÄ 5.0-CURRENT
500011 July 18, 2000 kqueue API ÐÞ¸ÄÖ®ºóµÄ 5.0-CURRENT
500012 September 2, 2000 setproctitle(3) ´Ó libutil Ųµ½ libc Ö®ºóµÄ 5.0-CURRENT
500013 September 10, 2000 Ê׸ö SMPng commit Ö®ºóµÄ 5.0-CURRENT
500014 January 4, 2001 <sys/select.h> ¸ÄΪ <sys/selinfo.h> Ö®ºóµÄ 5.0-CURRENT
500015 January 10, 2001 libgcc.a ºÍ libgcc_r.a ÒÔ¼° GCC Á¬½Ó·½Ê½±ä¶¯Ö®ºóµÄ 5.0-CURRENT
500016 January 24, 2001 ÐÞ¸ÄÒÔÔÊÐí libc ºÍ libc_r Á¬½Óµ½Ò»Æð£¬ ²»ÔÙ¹ÄÀøÊ¹Óà -pthread Ö®ºóµÄ 5.0-CURRENT
500017 February 18, 2001 ´Ó struct ucred Çл»µ½ struct xucred ÒÔ±ãʹÄÚºËΪ mountd µÈ³ÌÐòµ¼³öµÄ API Îȶ¨ÏÂÀ´Ö®ºóµÄ 5.0-CURRENT
500018 February 24, 2001 ¼ÓÈë CPUTYPE ÓÃÓÚ CPU רÓõÄÓÅ»¯µÄ make ±äÁ¿Ö®ºóµÄ 5.0-CURRENT
500019 June 9, 2001 machine/ioctl_fd.h ¸ÄΪ sys/fdcio.h Ö®ºóµÄ 5.0-CURRENT
500020 June 15, 2001 locale Ãû³Æ¸Ä±äÖ®ºóµÄ 5.0-CURRENT
500021 June 22, 2001 ÒýÈë bzip2 Ö®ºóµÄ 5.0-CURRENT£¬ ͬʱҲ´ú±íɾȥÁË S/Key
500022 July 12, 2001 ¼ÓÈë SSE Ö§³ÖÖ®ºóµÄ 5.0-CURRENT
500023 September 14, 2001 KSE µÚ2¸öÀï³Ì±®Ö®ºóµÄ 5.0-CURRENT
500024 October 1, 2001 d_thread_t Ö®ºóµÄ 5.0-CURRENT£¬ ͬʱ UUCP ±»ÒÆÈë ports
500025 October 4, 2001 64-λƽ̨ÉϵÄÃèÊö·ûºÍ creds API ±ä»¯Ö®ºóµÄ 5.0-CURRENT
500026 October 9, 2001 ²ÉÓà XFree86 4 ×÷ΪĬÈϵÄÔ¤±àÒë°ü£¬ ÒÔ¼°¼ÓÈë strnstr() libc º¯ÊýÖ®ºóµÄ 5.0-CURRENT
500027 October 10, 2001 ¼ÓÈë strcasestr() libc º¯ÊýÖ®ºóµÄ 5.0-CURRENT
500028 December 14, 2001 ÒýÈëÁËÓû§Ì¬µÄ smbfs ×é¼þÖ®ºóµÄ 5.0-CURRENT
(δÓèÔö¼Ó)   ¼ÓÈëÁËÐ嵀 C99 Ö¸¶¨Î»¿íÕûÐαäÁ¿Ö®ºóµÄ 5.0-CURRENT
500029 January 29, 2002 ÐÞ¸ÄÁË sendfile(2) µÄ·µ»ØÖµÖ®ºóµÄ 5.0-CURRENT
500030 February 15, 2002 ÒýÈëÊʺϱí´ïÎļþ±êÖ¾µÄ fflags_t ÀàÐÍÖ®ºóµÄ 5.0-
500031 February 24, 2002 usb ½á¹¹ÔªËظÄÃûÖ®ºóµÄ 5.0-CURRENT
500032 March 16, 2002 ÒýÈë Perl 5.6.1 Ö®ºóµÄ 5.0-CURRENT
500033 April 3, 2002 rc.conf(5) ±äÁ¿ sendmail_enable ĬÈÏÖµ¸ÄΪ NONE Ö®ºóµÄ 5.0-CURRENT
500034 April 30, 2002 mtx_init() Ôö¼ÓÁ˵ÚÈý¸ö²ÎÊýÖ®ºóµÄ 5.0-CURRENT
500035 May 13, 2002 °üº¬ Gcc 3.1 µÄ 5.0-CURRENT
500036 May 17, 2002 ÔÚ /usr/src ÖÐɾȥÁË Perl µÄ 5.0-CURRENT
500037 May 29, 2002 ¼ÓÈë dlfunc(3) Ö®ºóµÄ 5.0-CURRENT
500038 July 24, 2002 һЩ struct sockbuf µÄ³ÉÔ±±äΪ½á¹¹£¬ ²¢ÖØÐÂÅÅÁÐ˳ÐòÖ®ºóµÄ 5.0-CURRENT
500039 September 1, 2002 ÒýÈë GCC 3.2.1 Ö®ºóµÄ 5.0-CURRENT¡£ Í·ÎļþÒ²²»ÔÙʹÓà _BSD_FOO_T_ ¶ø¿ªÊ¼Ê¹Óà _FOO_T_DECLARED¡£ Õâ¸öÖµ»¹¿ÉÒÔÓÃÓÚ×÷Ϊһ¸ö°üº¬Ê¹Óà bzip2(1) µÄÔ¤±àÒë°üÖ§³ÖµÄÔ¤ÆÚµã¡£
500040 September 20, 2002 ÒÔÈ¥µô¶Ô disklabel ½á¹¹ÄÚÈݵÄÒÀÀµµÄÃûÒ壬 ¶Ô´ÅÅÌÏà¹ØµÄº¯Êý½øÐÐÁËÐí¶àÐÞ¸ÄÖ®ºóµÄ 5.0-CURRENT
500041 October 1, 2002 libc ÖмÓÈë getopt_long(3) Ö®ºóµÄ 5.0-CURRENT
500042 October 15, 2002 Binutils 2.13 Éý¼¶£¬ °üº¬ÁËÐ嵀 FreeBSD Ä£Ä⣬ vec ÒÔ¼°Êä³ö¸ñʽ֮ºóµÄ 5.0-CURRENT
500043 November 1, 2002 libc ÖмÓÈëÁËÈõ pthread_XXX ·ûºÅÖ®ºóµÄ 5.0-CURRENT£¬ ´Ó¶øÌÔÌ­ÁË libXThrStub.so¡£ 5.0-RELEASE¡£
500100 January 17, 2003 ´´½¨ RELENG_5_0 ·ÖÖ§Ö®ºóµÄ 5.0-CURRENT
500101 February 19, 2003 <sys/dkstat.h> ±ä³ÉÁËÒ»¸ö¿ÕÎļþ£¬ ²»Ó¦ÔÙ±»ÒýÓÃ
500102 February 25, 2003 ÐÞ¸Ä d_mmap_t ½Ó¿ÚÖ®ºóµÄ 5.0-CURRENT
500103 February 26, 2003 taskqueue_swi ÒÔÎÞÈ«¾ÖËøµÄ·½Ê½ÔËÐÐÖ®ºóµÄ 5.0-CURRENT£¬ ͬʱ»¹¼ÓÈëÁËʹÓÃÈ«¾ÖËøµÄ taskqueue_swi_giant
500104 February 27, 2003 È¥µôÁË cdevsw_add() ºÍ cdevsw_remove() ³öÏÖ MAJOR_AUTO ·ÖÅä»úÖÆ
500105 March 4, 2003 ²ÉÓÃÐ嵀 cdevsw ³õʼ»¯·½·¨Ö®ºóµÄ 5.0-CURRENT
500106 March 8, 2003 devstat_add_entry() ±» devstat_new_entry() È¡´ú
500107 March 15, 2003 ÐÞ¸Ä devstat ½Ó¿Ú£» Çë²Î¼û sys/sys/param.h 1.149
500108 March 15, 2003 ¸Ä±äÁË Token-Ring ½Ó¿Ú
500109 March 25, 2003 ¼ÓÈë vm_paddr_t
500110 March 28, 2003 ½« realpath(3) ¸ÄΪḬ̈߳²È«Ö®ºóµÄ 5.0-CURRENT
500111 April 9, 2003 usbhid(3) Óë NetBSD ͬ²½Ö®ºóµÄ 5.0-CURRENT
500112 April 17, 2003 ¼ÓÈëÐ嵀 NSS ʵÏÖ£¬ ÒÔ¼° POSIX.1 getpw*_r, getgr*_r º¯ÊýÖ®ºóµÄ 5.0-CURRENT
500113 May 2, 2003 ɾȥ¾Éʽ rc ϵͳ֮ºóµÄ 5.0-CURRENT
501000 June 4, 2003 5.1-RELEASE.
501100 June 2, 2003 ´´½¨ RELENG_5_1 ·ÖÖ§Ö®ºóµÄ 5.1-CURRENT
501101 June 29, 2003 ¸ÄÕý sigtimedwait(2) ºÍ sigwaitinfo(2) ÓïÒåÖ®ºóµÄ 5.1-CURRENT
501102 July 3, 2003 ÔÚ bus_dma_tag_create(9) ÖмÓÈëÁË lockfunc ºÍ lockfuncarg ×Ö¶ÎÖ®ºóµÄ 5.1-CURRENT
501103 July 31, 2003 ¼¯³ÉÁË GCC 3.3.1-pre 20030711 Ö®ºóµÄ 5.1-CURRENT
501104 August 5, 2003 twe ÖÐ 3ware API ±ä»¯Ö®ºóµÄ 5.1-CURRENT
501105 August 17, 2003 ÔÊÐí¶¯Ì¬Á¬½Ó /bin ºÍ /sbin£¬ ÒÔ¼°½«Ä³Ð©¿âÒÆ¶¯µ½ /lib Ö®ºóµÄ 5.1-CURRENT
501106 September 8, 2003 Ôö¼ÓÄں˼¶ Coda 6.x Ö§³ÖÖ®ºóµÄ 5.1-CURRENT
501107 September 17, 2003 ½« 16550 UART ³£Á¿´Ó <dev/sio/sioreg.h> Ųµ½ <dev/ic/ns16550.h> Ö®ºóµÄ 5.1-CURRENT¡£ ´ËÍ⣬ rtld Ò²´Ó´ËÎÞÌõ¼þÖ§³Ö libmap ¹¦ÄÜ
501108 September 23, 2003 ¸üРPFIL_HOOKS API Ö®ºóµÄ 5.1-CURRENT
501109 September 27, 2003 Ôö¼Ó kiconv(3) Ö®ºóµÄ 5.1-CURRENT
501110 September 28, 2003 ĬÈ쵀 cdevsw open ºÍ close ²Ù×÷±ä»¯Ö®ºóµÄ 5.1-CURRENT
501111 October 16, 2003 cdevsw µÄ²¼¾Ö±ä»¯Ö®ºóµÄ 5.1-CURRENT
501112 October 16, 2003 Ôö¼Ó kobj ¶à¼Ì³ÐÖ®ºóµÄ 5.1-CURRENT
501113 October 31, 2003 ÐÞ¸Ä struct ifnet ÖÐµÄ if_xname Ö®ºóµÄ 5.1-CURRENT
501114 November 16, 2003 ½« /bin ºÍ /sbin ¸ÄΪ¶¯Ì¬Á¬½ÓÖ®ºóµÄ 5.1-CURRENT
502000 December 7, 2003 5.2-RELEASE
502010 February 23, 2004 5.2.1-RELEASE
502100 December 7, 2003 ´´½¨ RELENG_5_2 ·ÖÖ§Ö®ºóµÄ 5.2-CURRENT
502101 December 19, 2003 libc ÖмÓÈëÁË __cxa_atexit/__cxa_finalize Á½¸öº¯ÊýÖ®ºóµÄ 5.2-CURRENT
502102 January 30, 2004 ĬÈÏÏ߳̿â´Ó libc_r ¸ÄΪ libpthread Ö®ºóµÄ 5.2-CURRENT
502103 February 21, 2004 É豸Çý¶¯ API ´ó¹æÄ£·­ÐÞÖ®ºóµÄ 5.2-CURRENT
502104 February 25, 2004 Ôö¼Ó getopt_long_only() Ö®ºóµÄ 5.2-CURRENT
502105 March 5, 2004 C µÄ NULL ¶¨Òå¸ÄΪ ((void *)0) Ö®ºóµÄ 5.2-CURRENT£¬ Õâ»á²úÉú¸ü¶àµÄ±àÒ뾯¸æ
502106 March 8, 2004 pf Á¬ÈëÁª±àºÍ°²×°¹ý³ÌÖ®ºóµÄ 5.2-CURRENT
502107 March 10, 2004 ÔÚ sparc64 ÉϽ« time_t ¸ÄΪ 64-λ ÖµÖ®ºóµÄ 5.2-CURRENT
502108 March 12, 2004 ÔÚһЩͷÎļþÐÞ¸ÄÒÔÖ§³Ö Intel C/C++ ±àÒëÆ÷£¬ ÒÔ¼°Èà execve(2) ¸üÑϸñµØ·ûºÏ POSIX Ö®ºóµÄ 5.2-CURRENT
502109 March 22, 2004 ÒýÈë bus_alloc_resource_any API Ö®ºóµÄ 5.2-CURRENT
502110 March 27, 2004 ¼ÓÈë UTF-8 locale Ö®ºóµÄ 5.2-CURRENT
502111 April 11, 2004 ɾȥ getvfsent(3) API Ö®ºóµÄ 5.2-CURRENT
502112 April 13, 2004 Ϊ make(1) Ôö¼Ó .warning Óï¾äÖ®ºóµÄ 5.2-CURRENT
502113 June 4, 2004 ËùÓд®¿ÚÉ豸¶¼Ç¿ÖÆÊ¹Óà ttyioctl() Ö®ºóµÄ 5.2-CURRENT
502114 June 13, 2004 ÒýÈë ALTQ ¿ò¼ÜÖ®ºóµÄ 5.2-CURRENT
502115 June 14, 2004 ÐÞ¸Ä sema_timedwait(9) ʹÆä³É¹¦Ê±·µ»Ø 0£¬ ʧ°Üʱ·µ»Ø·Ç 0 µÄ´íÎó´úÂëÖ®ºóµÄ 5.2-CURRENT
502116 June 16, 2004 ½«ÄÚºË dev_t ¸ÄΪָÏò struct cdev * µÄÖ¸ÕëÖ®ºóµÄ 5.2-CURRENT
502117 June 17, 2004 ½«ÄÚºË udev_t ¸ÄΪ dev_t Ö®ºóµÄ 5.2-CURRENT
502118 June 17, 2004 Ϊ clock_gettime(2) ºÍ clock_getres(2) Ôö¼Ó CLOCK_VIRTUAL ºÍ CLOCK_PROF Ö§³ÖÖ®ºóµÄ 5.2-CURRENT
502119 June 22, 2004 ¶ÔÍøÂç½Ó¿Ú¸´ÖƽøÐÐÈ«ÃæÐÞ¸ÄÖ®ºóµÄ 5.2-CURRENT
502120 July 2, 2004 package ¹¤¾ßÉý¼¶Îª 20040629 Ö®ºóµÄ 5.2-CURRENT
502121 July 9, 2004 ²»ÔÙ½«À¶ÑÀ´úÂë±ê¼ÇΪ i386 רÓÃÖ®ºóµÄ 5.2-CURRENT
502122 July 11, 2004 ÒýÈë KDB µ÷ÊÔÆ÷¿ò¼ÜÖ®ºóµÄ 5.2-CURRENT¡£ ͬʱ»¹ÒýÈëÁË DDB ×÷Ϊºǫ́£¬ ÒÔ¼° GDB ºǫ́¡£
502123 July 12, 2004 ÐÞ¸Ä VFS_ROOT ºÍ vflush ʹÆäʹÓÃÒ»¸ö struct thread ²ÎÊýÖ®ºóµÄ 5.2-CURRENT¡£ struct kinfo_proc Ôö¼ÓÁËÒ»¸öÓû§Êý¾ÝÖ¸Õë¡£ ͬʱ£¬ ĬÈ쵀 X ʵÏÖÇл»Îª xorg
502124 July 24, 2004 ½«Ê¹Óà rc.d ºÍ´«Í³½Å±¾µÄ port ·Ö±ðÆô¶¯Ö®ºóµÄ 5.2-CURRENT
502125 July 28, 2004 È¡ÏûǰһÐÞ¸ÄÖ®ºóµÄ 5.2-CURRENT
502126 July 31, 2004 ɾ³ý kmem_alloc_pageable() ²¢ÒýÈë gcc 3.4.2 µÄ 5.2-CURRENT
502127 August 2, 2004 ÐÞ¸Ä UMA ÄÚºË API ÔÊÐí¹¹½¨º¯ÊýºÍ³õʼ»¯Ê§°ÜÖ®ºóµÄ 5.2-CURRENT
502128 August 8, 2004 vfs_mount Ç©ÃûºÍÈ«¾ÖÌæ»» suser(9) API µÄ PRISON_ROOT Ϊ SUSER_ALLOWJAIL Ö®ºóµÄ 5.2-CURRENT
503000 August 23, 2004 pfil API ÐÞ¸Ä֮ǰµÄ 5.3-BETA/RC
503001 September 22, 2004 5.3-RELEASE
503100 October 16, 2004 ´´½¨ RELENG_5_3 ·ÖÖ§Ö®ºóµÄ 5.3-STABLE
503101 December 3, 2004 ¼ÓÈëÁË glibc ·ç¸ñµÄ strftime(3) Ìî³äÑ¡ÏîµÄ 5.3-STABLE
503102 February 13, 2005 MFC OpenBSD µÄ nc(1) Ö®ºóµÄ 5.3-STABLE
503103 February 27, 2005 ÔÚ MFC ÁË <src/include/stdbool.h> ºÍ <src/sys/i386/include/_types.h> ÓÃÓÚ¼æÈÝ GCC ºÍ Intel C/C++ ±àÒëÆ÷µÄÐÞÕýÖ®ºóµÄ 5.4-PRERELEASE
503104 February 28, 2005 MFC Á˽« ifi_epoch ÓÉ wall ʱÖÓʱ¼ä¸ÄΪ uptime Ö®ºóµÄ 5.4-PRERELEASE
503105 March 2, 2005 MFC ÁË vswprintf(3) ÖÐµÄ EOVERFLOW ¼ì²éµÄ 5.4-PRERELEASE
504000 April 3, 2005 5.4-RELEASE.
504100 April 3, 2005 ´´½¨ RELENG_5_4 ·ÖÖ§Ö®ºóµÄ 5.4-STABLE
504101 May 11, 2005 ¼Ó´óĬÈÏÏ̶߳ÑÕ»³ß´çÖ®ºóµÄ 5.4-STABLE
504102 June 24, 2005 ¼ÓÈë sha256 Ö®ºóµÄ 5.4-STABLE
504103 October 3, 2005 MFC if_bridge Ö®ºóµÄ 5.4-STABLE
504104 November 13, 2005 bsdiff ºÍ portsnap MFC Ö®ºóµÄ 5.4-STABLE
504105 January 17, 2006 ÔÚ MFC ÁË ldconfig_local_dirs ÐÞ¸ÄÖ®ºóµÄ 5.4-STABLE¡£
505000 May 12, 2006 5.5-RELEASE.
505100 May 12, 2006 ÔÚ´´½¨ RELENG_5_5 ·ÖÖ§Ö®ºóµÄ 5.5-STABLE
600000 August 18, 2004 6.0-CURRENT
600001 August 27, 2004 ÄÚºËÖÐÓÀ¾ÃÐÔÆôÓà PFIL_HOOKS Ö®ºóµÄ 6.0-CURRENT
600002 August 30, 2004 ×î³õ½« ifi_epoch ¼ÓÈë if_data ½á¹¹Ö®ºóµÄ 6.0-CURRENT¡£ ´Ëºó²»¾Ã¼´±»³·Ïú¡£ Ç벻ҪʹÓÃÕâ¸öÖµ¡£
600003 September 8, 2004 if_data ÖÐÔٴμÓÈë ifi_epoch ³ÉÔ±Ö®ºóµÄ 6.0-CURRENT
600004 September 29, 2004 ½« struct inpcb ²ÎÊý¼ÓÈë pfil API Ö®ºóµÄ 6.0-CURRENT
600005 October 5, 2004 newsyslog ¼ÓÈëÁË "-d DESTDIR" ²ÎÊýÖ®ºóµÄ 6.0-CURRENT
600006 November 4, 2004 ¼ÓÈëÁË glibc ·ç¸ñµÄ strftime(3) Ìî³äÑ¡ÏîÖ®ºóµÄ 6.0-CURRENT
600007 December 12, 2004 ¼ÓÈëÁË 802.11 ¿ò¼Ü¸üÐÂÖ®ºóµÄ 6.0-CURRENT
600008 January 25, 2005 ÐÞ¸Ä VOP_*VOBJECT() ²¢ÎªÎÞÈ«¾ÖËøµÄÎļþϵͳÒýÈë MNTK_MPSAFE ±êÖ¾Ö®ºóµÄ 6.0-CURRENT
600009 February 4, 2005 ¼ÓÈë cpufreq ¿ò¼ÜºÍÇý¶¯Ö®ºóµÄ 6.0-CURRENT
600010 February 6, 2005 ÒýÈë OpenBSD µÄ nc(1) Ö®ºóµÄ 6.0-CURRENT
600011 February 12, 2005 ɾȥ²¢²»´æÔÚµÄ SVID2 matherr() Ö§³ÖÖ®ºóµÄ 6.0-CURRENT
600012 February 15, 2005 Ôö´óĬÈÏÏ̶߳ÑÕ»³ß´çÖ®ºóµÄ 6.0-CURRENT
600013 February 19, 2005 Ôö¼ÓÁËÕë¶Ô <src/include/stdbool.h> ºÍ <src/sys/i386/include/_types.h> µÄÓÃÓÚ Intel C/C++ ±àÒëÆ÷µÄ GCC-¼æÈÝÐÔÐÞÕý¡£
600014 February 21, 2005 ÐÞÕýÁË vswprintf(3) µÄ EOVERFLOW ¼ì²éÖ®ºóµÄ 6.0-CURRENT
600015 February 25, 2005 ½« struct if_data ³ÉÔ± ifi_epoch ´Ó wall ʱÖÓʱ¼ä¸ÄΪ uptime Ö®ºóµÄ 6.0-CURRENT
600016 February 26, 2005 ÐÞ¸Ä LC_CTYPE ´ÅÅ̸ñʽ֮ºóµÄ 6.0-CURRENT
600017 February 27, 2005 ÐÞ¸Ä NLS ±à¼´ÅÅ̸ñʽ֮ºóµÄ 6.0-CURRENT
600018 February 27, 2005 ÐÞ¸Ä LC_COLLATE ´ÅÅ̸ñʽ֮ºóµÄ 6.0-CURRENT
600019 February 28, 2005 ½« acpica Í·Îļþ°²×°µ½ /usr/include
600020 March 9, 2005 Ϊ send(2) API ¼ÓÈëÁË MSG_NOSIGNAL
600021 March 17, 2005 ÔÚ cdevsw ÉÏÔö¼ÓÁËһЩ×Ö¶Î
600022 March 21, 2005 »ù±¾ÏµÍ³ÖÐɾȥÁË gtar
600023 April 13, 2005 unix(4) ÖмÓÈëÁË LOCAL_CREDS, LOCAL_CONNWAIT Á½¸ö socket Ñ¡Ïî
600024 April 19, 2005 ¼ÓÈëÁË hwpmc(4) ¼°ÆäÏà¹Ø¹¤¾ßÖ®ºóµÄ 6.0-CURRENT
600025 April 26, 2005 ¼ÓÈë struct icmphdr Ö®ºóµÄ 6.0-CURRENT
600026 May 3, 2005 pf ¸üе½ÁË 3.7
600027 May 6, 2005 ÒýÈëÁËÄÚºË libalias ºÍ ng_nat
600028 May 13, 2005 ½« ttyname_r(3) ½Ó¿Ú¸ÄΪ·ûºÏ POSIX ±ê×¼£¬ ²¢Í¨¹ý unistd.h ºÍ libc
600029 May 29, 2005 ½« libpcap Éý¼¶Îª v0.9.1 alpha 096 Ö®ºóµÄ 6.0-CURRENT
600030 June 5, 2005 ÒýÈë NetBSD µÄ if_bridge(4) Ö®ºóµÄ 6.0-CURRENT
600031 June 10, 2005 ½« struct ifnet ´ÓÇý¶¯µÄ softc Öвð³öÖ®ºóµÄ 6.0-CURRENT¡£
600032 July 11, 2005 ÒýÈëÁË libpcap v0.9.1 Ö®ºóµÄ 6.0-CURRENT¡£
600033 July 25, 2005 ËùÓÐ×Ô RELENG_5 ÒÔÀ´Ã»ÓÐÐ޸ĹýµÄ¹²Ïí¿âµÄ°æ±¾µÝÔöÖ®ºóµÄ 6.0-STABLE¡£
600034 August 13, 2005 Ϊ dev_clone ʼþ´¦Àíº¯ÊýÔö¼ÓÉí·ÝÐÅÏ¢²ÎÊýÖ®ºóµÄ 6.0-STABLE¡£ 6.0-RELEASE¡£
600100 November 1, 2005 6.0-RELEASE Ö®ºóµÄ 6.0-STABLE
600101 December 21, 2005 ½« local_startup Ŀ¼ÖеĽű¾¼¯³Éµ½»ù±¾ÏµÍ³µÄ rcorder(8) Ö®ºóµÄ 6.0-STABLE¡£
600102 December 30, 2005 ¸üРELF ÀàÐͺͳ£Á¿Ö®ºóµÄ 6.0-STABLE¡£
600103 January 15, 2006 MFC ÁË pidfile(3) API Ö®ºóµÄ 6.0-STABLE¡£
600104 January 17, 2006 ÔÚ MFC ÁË ldconfig_local_dirs ÐÞ¸ÄÖ®ºóµÄ 6.0-STABLE¡£
600105 February 26, 2006 ÔÚ csh(1) ÖмÓÈëÁË NLS Ŀ¼֧³ÖÖ®ºóµÄ 6.0-STABLE¡£
601000 May 6, 2006 6.1-RELEASE
601100 May 6, 2006 6.1-RELEASE Ö®ºóµÄ 6.1-STABLE¡£
601101 June 22, 2006 ÒýÈë csup Ö®ºóµÄ 6.1-STABLE¡£
601102 July 11, 2006 ¸üÐÂÁË iwi(4) Ö®ºóµÄ 6.1-STABLE¡£
601103 July 17, 2006 ½«ÓòÃû½âÎöº¯Êý¸üÐÂÖÁ BIND9£¬ ²¢µ¼³öÁË¿ÉÖØÈë°æ±¾µÄ netdb º¯ÊýÖ®ºóµÄ 6.1-STABLE¡£
601104 August 8, 2006 ÔÚ OpenSSL ÖÐÆôÓÃÁË DSO (¶¯Ì¬¹²Ïí¿â) Ö§³ÖÖ®ºóµÄ 6.1-STABLE¡£
601105 September 2, 2006 ÓÉÓÚ 802.11 ÐÞÕý±ä¶¯ÁË IEEE80211_IOC_STA_INFO ioctl API Ö®ºóµÄ 6.1-STABLE¡£
602000 November 15, 2006 6.2-RELEASE
602100 September 15, 2006 6.2-RELEASE Ö®ºóµÄ 6.2-STABLE¡£
602101 December 12, 2006 ¼ÓÈë Wi-Spy quirk Ö®ºóµÄ 6.2-STABLE¡£
602102 December 28, 2006 Ôö¼Ó pci_find_extcap() Ö®ºóµÄ 6.2-STABLE¡£
602103 January 16, 2007 MFC ÁË¶Ô dlsym ½øÐÐÐ޸ģ¬ ʹÆäÔÚÖ¸¶¨ dso ¼°Æä°µÖ¸µÄÒÀÀµÖвéÕÒ·ûºÅÖ®ºóµÄ 6.2-STABLE¡£
602104 January 28, 2007 MFC ÁË netgraph ½Úµã ng_deflate(4) ºÍ ng_pred1(4) ÒÔ¼°ÓÃÓÚ ng_ppp(4) ½ÚµãµÄÐÂѹËõ¼°¼ÓÃÜģʽ֮ºóµÄ 6.2-STABLE¡£
602105 February 20, 2007 MFC ÁË´Ó NetBSD ÒÆÖ²µÄ BSD ÊÚȨµÄ gzip(1) Ö®ºóµÄ 6.2-STABLE¡£
602106 March 31, 2007 MFC ÁË PCI MSI ºÍ MSI-X Ö§³ÖÖ®ºóµÄ 6.2-STABLE¡£
602107 April 6, 2007 MFC Á˰üº¬¿í×Ö·ûÖ§³ÖµÄ ncurses 5.6 Ö®ºóµÄ 6.2-STABLE¡£
602108 April 11, 2007 MFC ÁËʵÏÖ Linux SCSI SG ֱͨÉ豸 API ×Ó¼¯µÄ CAM 'SG' É豸֮ºóµÄ 6.2-STABLE¡£
602109 April 17, 2007 MFC ÁË readline 5.2 patchset 002 Ö®ºóµÄ 6.2-STABLE¡£
602110 May 2, 2007 MFC ÁËÓÃÓÚ amd64 ºÍ i386 µÄ pmap_invalidate_cache()¡¢ pmap_change_attr()¡¢ pmap_mapbios()¡¢ pmap_mapdev_attr()¡¢ and pmap_unmapbios() Ö®ºóµÄ 6.2-STABLE¡£
602111 June 11, 2007 ÓÉÓÚ MFC ÁË BOP_BDFLUSH µ¼ÖÂÎļþϵͳģ¿é KBI ±ä»¯Ö®ºóµÄ 6.2-STABLE¡£
602112 September 21, 2007 һϵÁÐ libutil(3) MFC Ö®ºóµÄ 6.2-STABLE¡£
602113 October 25, 2007 MFC ÁË¿í×Ö·ûºÍµ¥×Ö½Ú ctype º¯Êý·Ö²ðÖ®ºóµÄ 6.2-STABLE¡£ бàÒëµÄÒýÓÃÁË ctype.h µÄ¿ÉÖ´ÐÐÎļþ£¬ ¿ÉÄÜ»áÐèÒªÒ»¸öÔÚ¾ÉϵͳÉϲ»´æÔÚµÄÐÂÔö·ûºÅ __mb_sb_limit¡£
602114 October 30, 2007 »Ö¸´ÁË ctype ABI Ïòǰ¼æÈÝÐÔÖ®ºóµÄ 6.2-STABLE¡£
602115 November 21, 2007 »ØÍËÁË¿í×Ö·ûºÍµ¥×Ö½Ú ctype ·Ö²ðÖ®ºóµÄ 6.2-STABLE¡£
603000 November 25, 2007 6.3-RELEASE
603100 November 25, 2007 ÔÚ 6.3-RELEASE Ö®ºóµÄ 6.3-STABLE¡£
603101 December 7, 2007 ÐÞÕýÁË bit macro µÄ¶à×Ö½ÚÖ§³ÖÖ®ºóµÄ 6.3-STABLE¡£
603102 April 24, 2008 Ϊ flock ½á¹¹¼ÓÈë l_sysid Ö®ºóµÄ 6.3-STABLE¡£
603103 May 27, 2008 MFC ÁË memrchr º¯ÊýÖ®ºóµÄ 6.3-STABLE¡£
603104 June 15, 2008 Ϊ make(1) MFC :u ±äÁ¿ÐÞÊηûÖ®ºóµÄ 6.3-STABLE¡£
604000 October 4, 2008 6.4-RELEASE
604100 October 4, 2008 6.4-RELEASE Ö®ºóµÄ 6.4-STABLE¡£
700000 July 11, 2005 7.0-CURRENT¡£
700001 July 23, 2005 ËùÓÐ×Ô RELENG_5 ÒÔÀ´Ã»ÓÐÐ޸ĹýµÄ¹²Ïí¿âµÄ°æ±¾µÝÔöÖ®ºóµÄ 7.0-CURRENT¡£
700002 August 13, 2005 Ϊ dev_clone ʼþ´¦Àíº¯ÊýÖÐÔö¼ÓÉí·ÝÐÅÏ¢²ÎÊýÖ®ºóµÄ 7.0-CURRENT¡£
700003 August 25, 2005 ½« memmem(3) ¼ÓÈë libc Ö®ºóµÄ 7.0-CURRENT¡£
700004 October 30, 2005 ½« solisten(9) ¸ÄΪ½ÓÊÜÒ» backlog ²ÎÊýÖ®ºóµÄ 7.0-CURRENT¡£
700005 November 11, 2005 ½« IFP2ENADDR() ¸ÄΪ·µ»ØÒ» IF_LLADDR() Ö¸ÕëÖ®ºóµÄ 7.0-CURRENT¡£
700006 November 11, 2005 ÔÚ struct ifnet ÖÐÔö¼Ó if_addr ³ÉÔ±£¬ ²¢É¾³ý IFP2ENADDR() Ö®ºóµÄ 7.0-CURRENT¡£
700007 December 2, 2005 ½« local_startup Ŀ¼ÖеĽű¾¼¯³Éµ½»ù±¾ÏµÍ³µÄ rcorder(8) Ö®ºóµÄ 7.0-CURRENT¡£
700008 December 5, 2005 È¥µô MNT_NODEV ¹Ò½ÓÑ¡ÏîÖ®ºóµÄ 7.0-CURRENT¡£
700009 December 19, 2005 ¶Ô ELF-64 ÀàÐͺͷûºÅ°æ±¾½øÐбä¸üÖ®ºóµÄ 7.0-CURRENT¡£
700010 December 20, 2005 Ôö¼Ó hostb ºÍ vgapci Çý¶¯¡¢ pci_find_extcap()£¬ ²¢½« AGP Çý¶¯¸ÄΪ²»ÔÙÓ°Éä aperature Ö®ºóµÄ 7.0-CURRENT¡£
700011 December 31, 2005 ³ý Alpha Ö®ÍâµÄËùÓÐÆ½Ì¨ÉÏ tv_sec ¸ÄΪ time_t Ö®ºóµÄ 7.0-CURRENT¡£
700012 January 8, 2006 ÐÞ¸Ä ldconfig_local_dirs Ö®ºóµÄ 7.0-CURRENT¡£
700013 January 12, 2006 ÔÚÐÞ¸ÄÁË /etc/rc.d/abi ÒÔÖ§³Ö /compat/linux/etc/ld.so.cache ÒÔijֻ¶ÁÎļþϵͳÉϵķûºÅÁ¬½ÓÐÎʽ´æÔÚÖ®ºóµÄ 7.0-CURRENT¡£
700014 January 26, 2006 ÒýÈë pts Ö®ºóµÄ 7.0-CURRENT¡£
700015 March 26, 2006 ÔÚÒýÈë hwpmc(4) µÄµÚ 2 °æ ABI Ö®ºóµÄ 7.0-CURRENT¡£
700016 April 22, 2006 ÔÚ libc ÖмÓÈëÁË fcloseall(3) Ö®ºóµÄ 7.0-CURRENT¡£
700017 May 13, 2006 ɾȥ ip6fw Ö®ºóµÄ 7.0-CURRENT¡£
700018 July 15, 2006 ÒýÈëÁË snd_emu10kx Ö®ºóµÄ 7.0-CURRENT¡£
700019 July 29, 2006 ÒýÈëÁË OpenSSL 0.9.8b Ö®ºóµÄ 7.0-CURRENT¡£
700020 September 3, 2006 Ôö¼ÓÁË bus_dma_get_tag º¯ÊýÖ®ºóµÄ 7.0-CURRENT¡£
700021 September 4, 2006 ÔÚÒýÈëÁË libpcap 0.9.4 ºÍ tcpdump 3.9.4 Ö®ºóµÄ 7.0-CURRENT¡£
700022 September 9, 2006 ÔÚ¶Ô dlsym ½øÐÐÐ޸ģ¬ ʹÆäÔÚÖ¸¶¨ dso ¼°Æä°µÖ¸µÄÒÀÀµÖвéÕÒ·ûºÅÖ®ºóµÄ 7.0-CURRENT¡£
700023 September 23, 2006 Ϊ OSSv4 »ìÒôÆ÷ API ¼ÓÈëеÄÉùÒô IOCTL Ö®ºóµÄ 7.0-CURRENT¡£
700024 September 28, 2006 »ãÈë OpenSSL 0.9.8d Ö®ºóµÄ 7.0-CURRENT¡£
700025 November 11, 2006 ¼ÓÈëÁË libelf Ö®ºóµÄ 7.0-CURRENT¡£
700026 November 26, 2006 ¶ÔÒôЧÏà¹ØµÄ sysctl ½øÐдó·ùµ÷ÕûÖ®ºóµÄ 7.0-CURRENT¡£
700027 November 30, 2006 ¼ÓÈë Wi-Spy quirk Ö®ºóµÄ 7.0-CURRENT¡£
700028 December 15, 2006 ÔÚ libc ÖмÓÈë sctp µ÷ÓÃÖ®ºóµÄ 7.0-CURRENT¡£
700029 January 26, 2007 ½« GNU gzip(1) ʵÏÖÌæ»»Îª´Ó NetBSD ÒÆÖ²µÄ²ÉÓà BSD ÊÚȨ°æ±¾Ö®ºóµÄ 7.0-CURRENT¡£
700030 February 7, 2007 ÔÚ IPv4 ¶à²¥×ª·¢´úÂëÖÐɾȥÁË IPIP ËíµÀ·â×° (VIFF_TUNNEL) Ö®ºóµÄ 7.0-CURRENT¡£
700031 February 23, 2007 ÐÞ¸ÄÁË bus_setup_intr() (newbus) Ö®ºóµÄ 7.0-CURRENT¡£
700032 March 2, 2007 ÒýÈëÁË ipw(4) ºÍ iwi(4) ¹Ì¼þÖ®ºóµÄ 7.0-CURRENT¡£
700033 March 9, 2007 ÔÚ ncurses ÖÐÒýÈëÁË¿í×Ö·ûÖ§³ÖÖ®ºóµÄ 7.0-CURRENT¡£
700034 March 19, 2007 ÐÞ¸ÄÁË insmntque()¡¢ getnewvnode() ÒÔ¼° vfs_hash_insert() ¹¤×÷·½Ê½Ö®ºóµÄ 7.0-CURRENT¡£
700035 March 26, 2007 Ôö¼Ó CPU ƵÂʱ䶯֪ͨ»úÖÆÖ®ºóµÄ 7.0-CURRENT¡£
700036 April 6, 2007 ÒýÈëÁË ZFS Îļþϵͳ֮ºóµÄ 7.0-CURRENT¡£
700037 April 8, 2007 ÐÂÔöÁËʵÏÖ Linux SCSI SG ֱͨÉ豸 API ×Ó¼¯µÄ CAM 'SG' É豸֮ºóµÄ 7.0-CURRENT¡£
700038 April 30, 2007 ½« getenv(3)¡¢ putenv(3)¡¢ setenv(3) ºÍ unsetenv(3) ¸ÄΪ·ûºÏ POSIX Ö®ºóµÄ 7.0-CURRENT¡£
700039 May 1, 2007 »ØÍËÁË 700038 Öеı䶯֮ºóµÄ 7.0-CURRENT¡£
700040 May 10, 2007 ÔÚ libutil ÖÐÔö¼ÓÁË flopen(3) Ö®ºóµÄ 7.0-CURRENT¡£
700041 May 13, 2007 ÆôÓÃÁË·ûºÅ°æ±¾£¬ ²¢½« libthr ¸ÄΪĬÈÏÏ߳̿âÖ®ºóµÄ 7.0-CURRENT¡£
700042 May 19, 2007 ÒýÈëÁË gcc 4.2.0 Ö®ºóµÄ 7.0-CURRENT¡£
700043 May 21, 2007 ½« RELENG_6 Ö®ºóδÐ޸Ĺý°æ±¾µÄ¹²Ïí¿â°æ±¾Ôö¼ÓÖ®ºóµÄ 7.0-CURRENT¡£
700044 June 7, 2007 ½« vn_open()/VOP_OPEN() µÄ²ÎÊýÓÉÎļþÃèÊö·ûÊý×éϱê¸ÄΪ struct file * Ö®ºóµÄ 7.0-CURRENT¡£
700045 June 10, 2007 ÐÞ¸Ä pam_nologin(8) ʹÆäÏò PAM ¿ò¼ÜÌṩÕʺŹÜÀí¹¦Äܶø·ÇÉí·ÝÑéÖ¤¹¦ÄÜÖ®ºóµÄ 7.0-CURRENT¡£
700046 June 11, 2007 ¸üР802.11 ÎÞÏßÖ§³ÖÖ®ºóµÄ 7.0-CURRENT¡£
700047 June 11, 2007 Ôö¼Ó TCP LRO ÍøÂç½Ó¿ÚÄÜÁ¦Ö®ºóµÄ 7.0-CURRENT¡£
700048 June 12, 2007 ÔÚ IPv4 ЭÒéÕ»ÖмÓÈëÁË RFC 3678 API Ö§³ÖÖ®ºóµÄ 7.0-CURRENT¡£ ÏÈǰ IP_MULTICAST_IF ioctl µÄ RFC 1724 ÐÐΪ±»É¾È¥£» 0.0.0.0/8 ²»ÔÙÄܹ»ÓÃÓÚÖ¸¶¨½Ó¿ÚË÷Òýϱ꣬ ¶øÓ¦Ê¹Óà struct ipmreqn ´úÌæ¡£
700049 July 3, 2007 ÒýÈë OpenBSD 4.1 µÄ pf Ö®ºóµÄ 7.0-CURRENT¡£
(not changed)   Ϊ FAST_IPSEC Ôö¼Ó IPv6 Ö§³Ö£¬ ɾȥ KAME IPSEC£¬ ²¢½« FAST_IPSEC ¸üÃûΪ IPSEC Ö®ºóµÄ 7.0-CURRENT¡£ (δ±ä¶¯)
700050 July 4, 2007 ½« setenv/putenv/µÈµÈµ÷Ó㬠´Ó´«Í³ BSD ¸ÄΪ POSIX ±ê×¼Ö®ºóµÄ 7.0-CURRENT¡£
700051 July 4, 2007 Ôö¼ÓÐ嵀 mmap/lseek/µÈµÈÕâЩϵͳµ÷ÓÃÖ®ºóµÄ 7.0-CURRENT¡£
700052 July 6, 2007 ½« I4B Í·ÎļþÒÆ¶¯µ½ include/i4b Ö®ºóµÄ 7.0-CURRENT¡£
700053 September 30, 2007 Ôö¼ÓÁË PCI domain Ö§³ÖÖ®ºóµÄ 7.0-CURRENT¡£
700054 October 25, 2007 MFC ÁË¿í×Ö·ûºÍµ¥×Ö½Ú×Ö·û ctype ·Ö²ðÖ®ºóµÄ 7.0-CURRENT¡£
700055 October 28, 2007 7.0-RELEASE£¬ ÒÔ¼° MFC Á˻ָ´¶Ô FreeBSD 4/5/6 °æ±¾µÄ PCIOCGETCONF¡¢ PCIOCREAD ºÍ PCIOCWRITE IOCTL ABI ÏòϼæÈÝÖ®ºóµÄ 7.0-CURRENT£¬ ÕâÒ»±ä¶¯µ¼Ö PCIOCGETCONF IOCTL µÄ ABI Ôٴη¢Éú±ä»¯¡£
700100 December 22, 2007 7.0-RELEASE Ö®ºóµÄ 7.0-STABLE
700101 February 8, 2008 MFC m_collapse() Ö®ºóµÄ 7.0-STABLE¡£
700102 March 30, 2008 MFC kdb_enter_why() Ö®ºóµÄ 7.0-STABLE¡£
700103 April 10, 2008 Ϊ flock ½á¹¹¼ÓÈë l_sysid Ö®ºóµÄ 7.0-STABLE¡£
700104 April 11, 2008 ÔÚ procstat(1) MFC Ö®ºóµÄ 7.0-STABLE¡£
700105 April 11, 2008 ÔÚ MFC umtx ÌØÐÔÖ®ºóµÄ 7.0-STABLE¡£
700106 April 15, 2008 Ϊ psm(4) MFC write(2) Ö§³ÖÖ®ºóµÄ 7.0-STABLE¡£
700107 April 20, 2008 Ϊ fcntl(2) MFC F_DUP2FD Ö®ºóµÄ 7.0-STABLE¡£
700108 May 5, 2008 ¶Ô lockmgr(9) ×öÁËһЩÐÞ¸ÄÖ®ºóµÄ 7.0-STABLE£¬ ÔÚʹÓà lockmgr(9) ʱ±ØÐè°üº¬ sys/lock.h¡£
700109 May 27, 2008 MFC ÁË memrchr º¯ÊýÖ®ºóµÄ 7.0-STABLE¡£
700110 August 5, 2008 MFC ÁËÄÚºË NFS locked ¿Í»§¶ËÖ®ºóµÄ 7.0-STABLE¡£
700111 August 20, 2008 ¼ÓÈëÁ˶ÔÎïÀíÁ¬Ðø¾ÞÖ¡Ö§³ÖÖ®ºóµÄ 7.0-STABLE¡£
700112 August 27, 2008 ÔÚ MFC ÄÚºË DTrace Ö§³ÖÖ®ºóµÄ 7.0-STABLE¡£
701000 November 25, 2008 7.1-RELEASE
701100 November 25, 2008 7.1-RELEASE Ö®ºóµÄ 7.1-STABLE¡£
701101 January 10, 2009 ºÏ²¢ÁË strndup Ö®ºóµÄ 7.1-STABLE¡£
701102 January 17, 2009 ¼ÓÈëÁË cpuctl(4) Ö§³ÖÖ®ºóµÄ 7.1-STABLE¡£
701103 February 7, 2009 ºÏ²¢ÁË ¶à/ÎÞ-IPv4/v6 jail Ö®ºóµÄ 7.1-STABLE¡£
701104 February 14, 2009 ÔÚ struct mount Öб£´æÁË¹ÒÆðÊôÖ÷£¬ ÒÔ¼°ÔÚ struct vfsops ÖÐÒýÈëÁË vfs_susp_clean ·½·¨Ö®ºóµÄ 7.1-STABLE¡£
701105 March 12, 2009 ¶Ô kern.ipc.shmsegs sysctl ±äÁ¿²»¼æÈݵÄÐ޸ģ¬ ÒÔÔÊÐíÔÚ 64bit ¹¹¼ÜÉÏ·ÖÅä¸ü¶àµÄ SysV ¹²ÏíÄÚ´æ¶ÎÖ®ºóµÄ 7.1-STABLE¡£
701106 March 14, 2009 ºÏ²¢ÁËÒ»¸ö¶Ô POSIX semaphore µÈ´ý²Ù×÷ÐÞÕýÖ®ºóµÄ 7.1-STABLE¡£
702000 April 15, 2009 7.2-RELEASE
702100 April 15, 2009 7.2-RELEASE Ö®ºóµÄ 7.2-STABLE¡£
702101 May 15, 2009 ichsmb(4) ¸ÄΪʹÓÃ×óÁÚ½Ó¸¨±àÖ·À´±£³ÖÓëÆäËü SMBus ¿ØÖÆÆ÷Çý¶¯Ò»ÖÂÐÔÖ®ºóµÄ 7.2-STABLE¡£
702102 May 28, 2009 MFC ÁË fdopendir º¯ÊýÖ®ºóµÄ 7.2-STABLE¡£
702103 June 06, 2009 MFC ÁË PmcTools Ö®ºóµÄ 7.2-STABLE¡£
702104 July 14, 2009 MFC ÁË closefrom ϵͳµ÷ÓÃÖ®ºóµÄ 7.2-STABLE¡£
702105 July 31, 2009 MFC ÁË SYSVIPC ABI ¸Ä¶¯Ö®ºóµÄ 7.2-STABLE¡£
702106 September 14, 2009 MFC ÁË x86 PAT ÔöÇ¿£¬ ²¢ÐÂÔöÁË d_mmap_single() ÒÔ¼° scatter/gather ÐÍ VM ¶ÔÏóÀàÐÍÖ®ºóµÄ 7.2-STABLE¡£
703000 February 9, 2010 7.3-RELEASE
703100 February 9, 2010 7.3-RELEASE Ö®ºóµÄ 7.3-STABLE¡£
704000 December 22, 2010 7.4-RELEASE
704100 December 22, 2010 7.4-RELEASE Ö®ºóµÄ 7.4-STABLE¡£
800000 October 11, 2007 8.0-CURRENT¡£ ·Ö²ðÁË¿í×Ö·ûºÍµ¥×Ö½Ú×Ö·û ctype¡£
800001 October 16, 2007 ÒýÈëÁË libpcap 0.9.8 ºÍ tcpdump 3.9.8 Ö®ºóµÄ 8.0-CURRENT¡£
800002 October 21, 2007 ½« kthread_create() ϵÁк¯Êý¸ÄÃûΪ kproc_create() Ö®ºóµÄ 8.0-CURRENT¡£
800003 October 24, 2007 »Ö¸´ÁË¶Ô FreeBSD 4/5/6 °æ±¾µÄ PCIOCGETCONF¡¢ PCIOCREAD ºÍ PCIOCWRITE IOCTL ABI ÏòϼæÈÝÖ®ºóµÄ 8.0-CURRENT£¬ ÕâÒ»±ä¶¯µ¼Ö PCIOCGETCONF IOCTL µÄ ABI Ôٴη¢Éú±ä»¯¡£
800004 November 12, 2007 ½« agp(4) Çý¶¯´Ó src/sys/pci Ųµ½ src/sys/dev/agp Ö®ºóµÄ 8.0-CURRENT¡£
800005 December 4, 2007 ÐÞ¸ÄÁË jumbo frame ·ÖÅäÆ÷Ö®ºóµÄ 8.0-CURRENT¡£
800006 December 7, 2007 ÔÚ¸ø hwpmc(4) ¼ÓÈëÁË callgraph ²¶×½¹¦ÄܺóµÄ 8.0-CURRENT
800007 December 25, 2007 kdb_enter() Ôö¼Ó "why" ²ÎÊýÖ®ºóµÄ 8.0-CURRENT¡£
800008 December 28, 2007 ÔÚÈ¥³ý LK_EXCLUPGRADE Ñ¡ÏîºóµÄ 8.0-CURRENT¡£
800009 January 9, 2008 ÒýÈë lockmgr_disown(9) Ö®ºóµÄ 8.0-CURRENT¡£
800010 January 10, 2008 ÐÞ¸Ä vn_lock(9) Ô­ÐÍÖ®ºóµÄ 8.0-CURRENT¡£
800011 January 13, 2008 ÐÞ¸Ä VOP_LOCK(9) ºÍ VOP_UNLOCK(9) Ô­ÐÍÖ®ºóµÄ 8.0-CURRENT¡£
800012 January 19, 2008 ÒýÈë lockmgr_recursed(9)¡¢ BUF_RECURSED(9) ºÍ BUF_ISLOCKED(9) ²¢É¾³ýÁË BUF_REFCNT() Ö®ºóµÄ 8.0-CURRENT¡£
800013 January 23, 2008 ÒýÈë ¡°ASCII¡± ±àÂëÖ®ºóµÄ 8.0-CURRENT¡£
800014 January 24, 2008 ÐÞ¸Ä lockmgr(9) ²¢É¾³ýÁË lockcount() ºÍ LOCKMGR_ASSERT() Ö®ºóµÄ 8.0-CURRENT¡£
800015 January 26, 2008 À©Õ¹ÁË fts(3) Êý¾Ý½á¹¹Ö®ºóµÄ 8.0-CURRENT¡£
800016 February 1, 2008 Ϊ MEXTADD(9) Ôö¼ÓÁËÒ»¸ö²ÎÊýÖ®ºóµÄ 8.0-CURRENT¡£
800017 February 6, 2008 Ϊ lockmgr(9) ÒýÈë LK_NODUP ºÍ LK_NOWITNESS Ñ¡ÏîºóµÄ 8.0-CURRENT¡£
800018 February 8, 2008 ÒýÈë m_collapse Ö®ºóµÄ 8.0-CURRENT¡£
800019 February 9, 2008 Ϊ sysctl ±äÁ¿ kern.proc.filedesc ¼ÓÈë µ±Ç°¹¤×÷Ŀ¼£¬root Ŀ¼ºÍ jail Ŀ¼֧³ÖÖ®ºóµÄ 8.0-CURRENT¡£
800020 February 13, 2008 ÒýÈë lockmgr_assert(9) Ö®ºóµÄ 8.0-CURRENT¡£
800021 February 15, 2008 ÒýÈë lockmgr_args(9) ºÍÒÆ³ý LK_INTERNAL ±êÖ¾Ö®ºóµÄ 8.0-CURRENT¡£
800022 (backed out) °Ñ BSD ar(1) ×÷ΪϵͳĬÈ쵀 ar Ö®ºóµÄ 8.0-CURRENT¡£
800023 February 25, 2008 ÐÞ¸ÄÁË lockstatus(9) ºÍ VOP_ISLOCKED(9) Ô­ÐÍ£¬Ìرðʱȥµô struct thread ²ÎÊýÖ®ºóµÄ 8.0-CURRENT¡£
800024 March 1, 2008 ¿³µôÁË lockwaiters ºÍ BUF_LOCKWAITERS º¯Êý£¬ brelvp µÄ·µ»ØÖµ´Ó void ÐÞ¸Ä³É int£¬²¢ÒýÈë lockinit(9) бêÖ¾Ö®ºóµÄ 8.0-CURRENT¡£
800025 March 8, 2008 Ϊ fcntl(2) ÒýÈë F_DUP2FD Ö®ºóµÄ 8.0-CURRENT¡£
800026 March 12, 2008 ÐÞ¸ÄÁË cv_broadcastpri ÓÅÏÈȨ²ÎÊýÖ®ºóµÄ 8.0-CURRENT£¬±ÈÈç 0 ±íʾÎÞÓÅÏÈȨ¡£
800027 March 24, 2008 ÐÞ¸ÄÁË bpf ¼à²â ABI, ¼ÓÈëÁË zerocopy bpf buffer Ö®ºóµÄ 8.0-CURRENT¡£
800028 March 26, 2008 Ϊ flock ½á¹¹Ôö¼ÓÁË l_sysid Ö®ºóµÄ 8.0-CURRENT¡£
800029 March 28, 2008 ÖØÐÂÕûºÏÁË BUF_LOCKWAITERS º¯Êý²¢¼ÓÈë lockmgr_waiters(9) Ö®ºóµÄ 8.0-CURRENT¡£
800030 April 1, 2008 ÒýÈë rw_try_rlock(9) ºÍ rw_try_wlock(9) Ö®ºóµÄ 8.0-CURRENT¡£
800031 April 6, 2008 ÒýÈë lockmgr_rw ºÍ lockmgr_args_rw º¯ÊýÖ®ºóµÄ 8.0-CURRENT¡£
800032 April 8, 2008 ʵÏÖÁË openat ºÍÏà¹ØµÄϵͳµ÷Óã¬Îª open(2) ÒýÈëÁË O_EXEC ±êÖ¾£¬ºÍÌṩÁËÏàÓ¦µÄ linux ¼æÈݵÄϵͳµ÷ÓÃÖ®ºóµÄ 8.0-CURRENT¡£
800033 April 8, 2008 Ϊ psm(4) Ôö¼ÓÁËÔ­ÉúµÄ write(2) Ö§³ÖÖ®ºóµÄ 8.0-CURRENT¡£ ÏÖÔÚÈÎÒâÃüÁî¿ÉдÈë /dev/psm%d ²¢¶Á³ö״̬¡£
800034 April 10, 2008 ÒýÈë memrchr º¯ÊýÖ®ºóµÄ 8.0-CURRENT¡£
800035 April 16, 2008 ÒýÈë fdopendir º¯ÊýÖ®ºóµÄ 8.0-CURRENT
800036 April 20, 2008 ÎÞÏß²¿·ÖתÏò multi-bss (Ò²½Ð×ö vaps) Ö§³ÖÖ®ºóµÄ 8.0-CURRENT¡£
800037 May 9, 2008 ¼ÓÈë¶à·ÓɱíÖ§³Ö (Ò²¾ÍÊÇ setfib(1)¡¢ stfib(2)£© ºóµÄ 8.0-CURRENT¡£
800038 May 26, 2008 ɾȥÁË netatm ºÍ ISDN4BSD ºóµÄ 8.0-CURRENT¡£ Õâ¸ö°æ±¾Ò²±íʾÔö¼ÓÁË Compact C Type (CTF) ¹¤¾ß¡£
800039 June 14, 2008 ÒÆ³ý sgtty Ö®ºóµÄ 8.0-CURRENT¡£
800040 June 26, 2008 Ôö¼ÓÁËÄں˼¶ NFS lockd ¿Í»§¶ËµÄ 8.0-CURRENT¡£
800041 July 22, 2008 Ôö¼ÓÁË arc4random_buf(3) ºÍ arc4random_uniform(3) Ö®ºóµÄ 8.0-CURRENT¡£
800042 August 8, 2008 Ôö¼ÓÁË cpuctl(4) Ö®ºóµÄ 8.0-CURRENT¡£
800043 August 13, 2008 ÐÞ¸Ä bpf(4) ʹÓõ¥Ò»µÄÉ豸½Úµã¶ø²»Êǿˡ֮ºóµÄ 8.0-CURRENT¡£
800044 August 17, 2008 ÔÚÌá½»ÁË vimage ÏîÄ¿µÚÒ»²½Ö®ºóµÄ 8.0-CURRENT¡£°ÑÈ«¾Ö±äÁ¿ÖØÃüÃûΪÐéÄ⻯´ø V_ ǰ׺²¢ÓúêÓ³Éäµ½Ô­À´µÄÈ«¾ÖÃû³Æ¡£
800045 August 20, 2008 ÒýÈë MPSAFE TTY ²ãÖ®ºóµÄ 8.0-CURRENT£¬ °üÀ¨¶ÔÏà¹ØÇý¶¯ºÍ¹¤¾ßµÄÐ޸ġ£
800046 September 8, 2008 ½« amd64 ¼Ü¹¹ÉÏ GDT ²ð·Öµ½²»Í¬ CPU Ö®ºóµÄ 8.0-CURRENT¡£
800047 September 10, 2008 ɾȥÁË VSVTX¡¢ VSGID ºÍ VSUID Ö®ºóµÄ 8.0-CURRENT¡£
800048 September 16, 2008 ½«ÄÚºËÖÐ NFS ¹Ò½Ó²¿·ÖµÄ´úÂë¸ÄΪÄܹ»Í¨¹ý nmount() iovec£¬ ¶ø²»ÔÙÊÇ´óµÄ nfs_args ½á¹¹Ìå×÷Ϊ²ÎÊýÖ®ºóµÄ 8.0-CURRENT¡£
800049 September 17, 2008 ɾȥÁË suser(9) ºÍ suser_cred(9) Ö®ºóµÄ 8.0-CURRENT¡£
800050 October 20, 2008 ÐÞ¸ÄÁË»º³å´æ´¢Æ÷ API Ö®ºóµÄ 8.0-CURRENT¡£
800051 October 23, 2008 ɾȥÁË MALLOC(9) ºÍ FREE(9) ºêÖ®ºóµÄ 8.0-CURRENT¡£
800052 October 28, 2008 ÒýÈëÁË accmode_t ºÍÖØÐÂÃüÃû VOP_ACCES 'a_mode' Ϊ a_accmode Ö®ºóµÄ 8.0-CURRENT¡£
800053 November 2, 2008 ÐÞ¸ÄÁË vfs_busy(9) Ô­ÐͲ¢ÒýÈëÁË MBF_NOWAIT ºÍ MBF_MNTLSTLOCK ±êÖ¾Ö®ºóµÄ 8.0-CURRENT¡£
800054 November 22, 2008 Ôö¼ÓÁË buf_ring¡¢ ÄÚ´æÕ¤ÒÔ¼° ifnet º¯Êý£¬ ÒÔ·½±ã׫д֧³Ö¶àÓ²¼þ´«Êä¶ÓÁеÄÇý¶¯£¬ ÒÔ¼°ÎÞËø»·Ðλº³åʵÏÖµÄÇý¶¯³ÌÐò£¬ ²¢¸ü¸ßЧµØ¹ÜÀí°ü¶ÓÁй¦ÄÜÖ®ºóµÄ 8.0-CURRENT¡£
800055 November 27, 2008 ÒýÈëÁË hwpmc(4) ¶ÔÓÚ Intel" Core£¬Core2 ºÍ Atom µÄÖ§³ÖÖ®ºóµÄ 8.0-CURRENT¡£
800056 November 29, 2008 ÒýÈëÁË multi-/no-IPv4/v6 jail Ö®ºóµÄ 8.0-CURRENT¡£
800057 December 1, 2008 ½« ath hal ¸ÄΪʹÓÃÔ´´úÂëÖ®ºóµÄ 8.0-CURRENT¡£
800058 December 12, 2008 ÒýÈëÁË VOP_VPTOCNP ²Ù×÷Ö®ºóµÄ 8.0-CURRENT¡£
800059 December 15, 2008 ÒýÈëÁËÐ嵀 arp-v2 ÖØÐ´Ö®ºóµÄ 8.0-CURRENT¡£
800060 December 19, 2008 ÒýÈëÁË makefs Ö®ºóµÄ 8.0-CURRENT¡£
800061 January 15, 2009 ÒýÈëÁË TCP Appropriate Byte Counting Ö®ºóµÄ 8.0-CURRENT¡£
800062 January 28, 2009 ɾȥÁË minor()¡¢ minor2unit()¡¢ unit2minor() µÈÖ®ºóµÄ 8.0-CURRENT¡£
800063 February 18, 2009 ÔÚ GENERIC ÅäÖÃÖиÄΪʹÓà USB2 Õ»Ö®ºóµÄ 8.0-CURRENT£» Õâ¸öÊýֵͬʱҲ±êÖ¾ÐÂÔöÁË fdevname(3)¡£
800064 February 23, 2009 ½« USB2 Õ»ÒÆ¶¯²¢Ìæ»» dev/usb Ö®ºóµÄ 8.0-CURRENT¡£
800065 February 26, 2009 ÔÚ¶Ô libmp(3) ÖÐËùÓк¯Êý¸üÃûÖ®ºóµÄ 8.0-CURRENT¡£
800066 February 27, 2009 ¸ü¸ÄÁË USB devfs ¹ÜÀíºÍ²¼¾ÖÖ®ºóµÄ 8.0-CURRENT¡£
800067 February 28, 2009 ¼ÓÈëÁË getdelim()£¬ getline()£¬ stpncpy()£¬ strnlen()£¬ wcsnlen()£¬ wcscasecmp()£¬ ºÍ wcsncasecmp() Ö®ºóµÄ 8.0-CURRENT¡£
800068 March 2, 2009 ÔÚ usbhub devclass ¸üÃûΪ uhub Ö®ºóµÄ 8.0-CURRENT¡£
800069 March 9, 2009 ÖØÃüÃû libusb20.so.1 Ϊ libusb.so.1 Ö®ºóµÄ 8.0-CURRENT¡£
800070 March 9, 2009 ºÏ²¢ IGMPv3 ºÍ Source-Specific Multicast (SSM) Èë IPv4 Õ»Ö®ºóµÄ 8.0-CURRENT¡£
800071 March 14, 2009 Ϊ gcc ´òÉÏÁËÔÚ c99 ºÍ gnu99 ģʽÖÐʹÓà C99 inline ÓïÒå²¹¶¡Ö®ºóµÄ 8.0-CURRENT¡£
800072 March 15, 2009 ÒÆ³ýÁË IFF_NEEDSGIANT ±êÖ¾; ²»ÔÙÖ§³Ö·ÇḬ̈߳²È«µÄÍøÂçÉ豸Çý¶¯Ö®ºóµÄ 8.0-CURRENT¡£
800073 March 18, 2009 ʵÏÖÁË rpath ¶¯Ì¬×Ö·ûÌæ»»Ö®ºóµÄ 8.0-CURRENT.
800074 March 24, 2009 ÒýÈëÁË tcpdump 4.0.0 ºÍ libpcap 1.0.0 Ö®ºóµÄ 8.0-CURRENT¡£
800075 April 6, 2009 ÐÞ¸ÄÁË structs vnet_net¡¢ vnet_inet ºÍ vnet_ipfw ½á¹¹²¼¾ÖÖ®ºóµÄ 8.0-CURRENT¡£
800076 April 9, 2009 Ϊ dummynet ÐÂÔöÁËÑÓ³ÙÆÀ¹À¹¤¾ßÖ®ºóµÄ 8.0-CURRENT¡£
800077 April 14, 2009 ɾȥÁË VOP_LEASE() ºÍ vop_vector.vop_lease Ö®ºóµÄ 8.0-CURRENT
800078 April 15, 2009 ÔÚ struct rt_metrics ºÍ struct rt_metrics_lite ÖÐÌí¼ÓÁË rt_weight ×ֶΣ¬ µ¼ÖÂÆä½á¹¹·¢Éú±ä»¯Ö®ºóµÄ 8.0-CURRENT¡£ ´Ëºó RTM_VERSION Ôö¼Ó£¬ µ«ÓÖ»ØÍËÁË¡£
800079 April 15, 2009 ÔÚ struct route ºÍ struct_in6 ÖÐÌí¼ÓÁË struct llentry Ö¸ÕëÖ®ºóµÄ 8.0-CURRENT¡£
800080 April 15, 2009 ¸Ä±äÁË struct inpcb ²¼¾ÖÖ®ºóµÄ 8.0-CURRENT¡£
800081 April 19, 2009 ¸Ä±äÁË malloc_type ²¼¾ÖÖ®ºóµÄ 8.0-CURRENT¡£
800082 April 21, 2009 ¸Ä±äÁË struct ifnet ²¼¾Ö£¬ ²¢Ôö¼ÓÁË if_ref() ºÍ if_rele() ÒýÓüÆÊýά»¤¹¦ÄÜÖ®ºóµÄ 8.0-CURRENT¡£
800083 April 22, 2009 ʵÏÖÁ˵ײãÀ¶ÑÀ HCI API Ö®ºóµÄ 8.0-CURRENT¡£
800084 April 29, 2009 ÐÞ¸ÄÁË IPv6 SSM ºÍ MLDv2 Ö®ºóµÄ 8.0-CURRENT¡£
800085 April 30, 2009 ÆôÓÃÁ˰üÀ¨Ò»¸ö»îÔ¾Ó³ÏñµÄ VIMAGE ÄÚºËÖ§³ÖÖ®ºóµÄ 8.0-CURRENT¡£
800086 May 8, 2009 Ϊ patch(1) Ôö¼ÓÈÎÒⳤÊäÈëÐÐÖ§³ÖÖ®ºóµÄ 8.0-CURRENT¡£
800087 May 11, 2009 ÐÞ¸ÄÁËһЩ VFS KPI Ö®ºóµÄ 8.0-CURRENT¡£ VFS µÄ FSD ²¿·ÖÖÐɾȥÁËÏ̲߳ÎÊý¡£ VFS_* º¯Êý²¢²»ÐèÒªÕâЩÉÏÏÂÎÄÐÅÏ¢£¬ ÒòΪËü×ÜÊÇÓë curthread Ïà¹Ø¡£ ÔÚÄ³Ð©ÌØÊâÇé¿öÖУ¬ Ôò±£ÁôÁËÔ­ÏȵÄÐÐΪ¡£
800088 May 20, 2009 ¶Ô net80211 ¼àÊÓģʽ½øÐе÷ÕûÖ®ºóµÄ 8.0-CURRENT¡£
800089 May 23, 2009 Ôö¼ÓÁË UDP ¿ØÖÆ¿éÖ§³ÖÖ®ºóµÄ 8.0-CURRENT¡£
800090 May 23, 2009 ½«ÍøÂç½Ó¿Ú¿Ë¡ÐéÄ⻯֮ºóµÄ 8.0-CURRENT¡£
800091 May 27, 2009 Ôö¼ÓÁ˲ã´Îʽ jail ²¢È¡ÏûÈ«¾Ö securelevel Ö®ºóµÄ 8.0-CURRENT¡£
800092 May 29, 2009 ÐÞ¸ÄÁË sx_init_flags() KPI Ö®ºóµÄ 8.0-CURRENT¡£ SX_ADAPTIVESPIN ÍËÒÛ£¬ ¶øÐÂÔöµÄ SX_NOADAPTIVE ±êÖ¾Ôò±í´ïÏà·´ÓïÒå¡£
800093 May 29, 2009 Ϊ struct mount Ôö¼Ó mnt_xflag Ö®ºóµÄ 8.0-CURRENT¡£
800094 May 30, 2009 ÐÂÔöÁË VOP_ACCESSX(9) Ö®ºóµÄ 8.0-CURRENT¡£
800095 May 30, 2009 µ÷ÕûÂÖѯ KPI (polling KPI) Ö®ºóµÄ 8.0-CURRENT¡£ ÂÖѯ´¦Àí³ÌÐò»á·µ»Ø´¦Àí¹ýµÄ°üµÄÊýÁ¿¡£ ÐÂÔöµÄ IFCAP_POLLING_NOCOUNT Ôò±íʾ·µ»ØÖµ²»ÖØÒª£¬ ²¢Ìø¹ý¼ÆÊý¡£
800096 June 1, 2009 ¶ÔÐ嵀 netisr ½øÐÐÁ˸Ľø£¬ ²¢µ÷ÕûÁ˱£´æºÍ´æÈ¡ FIB ·½Ê½Ö®ºóµÄ 8.0-CURRENT¡£
800097 June 8, 2009 ÒýÈëÁË vnet Îö¹¹¹Ò¹³ºÍÏà¹Ø»ù´¡Éèʩ֮ºóµÄ 8.0-CURRENT¡£
800097 June 11, 2009 ÒýÈëÁË netgraph Êä³öµ½ÊäÈë·¾¶µ÷Óüì²âºÍÅŶӻúÖÆ£¬ ²¢µ÷ÕûÁË struct thread ²¼¾ÖÖ®ºóµÄ 8.0-CURRENT¡£
800098 June 14, 2009 ÒýÈëÁË OpenSSL 0.9.8k Ö®ºóµÄ 8.0-CURRENT¡£
800099 June 22, 2009 ¸üÐÂÁË NGROUPS ²¢½«Â·ÓÉÐéÄ⻯Ųµ½Ëü×Ô¼ºµÄ VImage Ä£¿éÖ®ºóµÄ 8.0-CURRENT¡£
800100 June 24, 2009 ÐÞ¸ÄÁË SYSVIPC ABI Ö®ºóµÄ 8.0-CURRENT¡£
800101 June 29, 2009 ɾȥÁËÓëÍøÂç½Ó¿ÚÒ»Ò»¶ÔÓ¦µÄ /dev/net/* ×Ö·ûÉ豸֮ºóµÄ 8.0-CURRENT¡£
800102 July 12, 2009 ÔÚ struct sackhint¡¢ struct tcpcb ÒÔ¼° struct tcpstat ÉÏÔö¼ÓÕ¼Î»ÔªËØÖ®ºóµÄ 8.0-CURRENT¡£
800103 July 13, 2009 ½« TOE Çý¶¯½Ó¿ÚÖÐµÄ struct tcpopt Ìæ»»Îª TCP syncache ÖÐµÄ struct toeopt Ö®ºóµÄ 8.0-CURRENT¡£
800104 July 14, 2009 ÐÂÔöÁË»ùÓÚ linker-set µÄ per-vnet ·ÖÅäÆ÷Ö®ºóµÄ 8.0-CURRENT¡£
800105 July 19, 2009 µÝÔöÁËËùÓÐδʹÓ÷ûºÅ°æ±¾µÄ¶¯Ì¬Á¬½Ó¿â°æ±¾Ö®ºóµÄ 8.0-CURRENT¡£
800106 July 24, 2009 ÒýÈë VM ¶ÔÏóÀàÐÍ OBJT_SG Ö®ºóµÄ 8.0-CURRENT¡£
800107 August 2, 2009 ͨ¹ý¼ÓÈë newbus sxlock ʹ newbus ×Óϵͳ²»ÔÙʹÓà Giant£¬ ÒÔ¼° 8.0-RELEASE¡£
800108 November 21, 2009 ʵÏÖÁË EVFILT_USER kevent ¹ýÂËÆ÷Ö®ºóµÄ 8.0-STABLE¡£
800500 January 7, 2010 Áî pkg_add -r ʹÓà packages-8-stable µÄ __FreeBSD_version °æ±¾±ä»¯µÄ 8.0-STABLE¡£
800501 January 24, 2010 µ÷ÕûÁË scandir(3) ºÍ alphasort(3) º¯ÊýÔ­ÐÍ£¬ ʹÆä·ûºÏ SUSv4 Ö®ºóµÄ 8.0-STABLE¡£
800502 January 31, 2010 ÐÂÔöÁË sigpause(3) Ö®ºóµÄ 8.0-STABLE¡£
800503 February 25, 2010 ÐÂÔöÁËÓÃÓÚ¹ÜÀíÍøÂç½Ó¿Ú˵Ã÷µÄ SIOCGIFDESCR ºÍ SIOCSIFDESCR ioctl Ö®ºóµÄ 8.0-STABLE¡£ Õâ×é½Ó¿ÚÊܵ½ÁË OpenBSD µÄÆô·¢¡£
800504 March 1, 2010 MFC ÁË x86emu£¬ À´×Ô OpenBSD µÄ x86 CPU ʵģʽģÄâÆ÷Ö®ºóµÄ 8.0-STABLE¡£
800505 May 18, 2010 MFC ÁËÌí¼Ó liblzma, xz, xzdec ÒÔ¼° lzmainfo Ö®ºóµÄ 8.0-STABLE¡£
801000 June 14, 2010 8.1-RELEASE
801500 June 14, 2010 8.1-RELEASE Ö®ºóµÄ 8.1-STABLE¡£
801501 November 3, 2010 ÓÃÓÚ PL_FLAG_SCE/SCX/EXEC/SI µÄ struct sysentvec µÄ KBI ÒÔ¼° ÓÃÓÚ ptrace(PT_LWPINFO) µÄ pl_siginfo µÄ KBI ¸Ä±äÖ®ºóµÄ 8.1-STABLE¡£
802000 December 22, 2010 8.2-RELEASE
802500 December 22, 2010 8.2-RELEASE Ö®ºóµÄ 8.2-STABLE¡£
802501 February 28, 2011 ºÏ²¢ÁË DTrace ±ä¶¯£¬ °üº¬Óû§Ì¬¸ú×ÙÖ§³ÖÖ®ºóµÄ 8.2-STABLE¡£
802502 March 6, 2011 ÔÚ libm Öкϲ¢ÁË log2 ºÍ log2f Ö®ºóµÄ 8.2-STABLE¡£
802503 May 1, 2011 ½« gcc Éý¼¶ÖÁ FSF gcc-4_2-branch ×îºóÒ»¸ö GPLv2 °æ±¾Ö®ºóµÄ 8.2-STABLE¡£
802504 May 28, 2011 ÒýÈëÄ£¿é»¯ÓµÈû¿ØÖÆÖ§³Ö»ù´¡ÉèÊ©ºÍ KPI Ö®ºóµÄ 8.2-STABLE¡£
802505 May 28, 2011 ÒýÈëÁË Hhook ºÍ Khelp KPI Ö®ºóµÄ 8.2-STABLE¡£
802506 May 28, 2011 ÔÚ tcpcb ½á¹¹ÖÐÔö¼Ó OSD Ö®ºóµÄ 8.2-STABLE¡£
802507 June 6, 2011 ÒýÈë ZFS v28 Ö®ºóµÄ 8.2-STABLE¡£
802508 June 8, 2011 ɾȥÁË sv_schedtail struct sysvec ·½·¨Ö®ºóµÄ 8.2-STABLE¡£
802509 July 14, 2011 ÔÚ binutils Öкϲ¢ÁË SSE3 Ö§³ÖÖ®ºóµÄ 8.2-STABLE¡£
802510 July 19, 2011 Ϊ rfork(2) Ìí¼ÓÁË RFTSIGZMB ±êÖ¾Ö®ºóµÄ 8.2-STABLE¡£
900000 August 22, 2009 9.0-CURRENT¡£
900001 September 8, 2009 ÒýÈëÁË x86emu£¬ À´×Ô OpenBSD µÄ x86 CPU ʵģʽģÄâÆ÷Ö®ºóµÄ 9.0-CURRENT¡£
900002 September 23, 2009 ʵÏÖÁË EVFILT_USER kevent ¹ýÂËÆ÷Ö®ºóµÄ 9.0-CURRENT¡£
900003 December 2, 2009 ÐÂÔöÁË sigpause(3) ÒÔ¼° csu µÄ PIE Ö§³ÖÖ®ºóµÄ 9.0-CURRENT¡£
900004 December 6, 2009 ÐÂÔöÁË libulog ¼°Æä libutempter ¼æÈݽӿÚÖ®ºóµÄ 9.0-CURRENT¡£
900005 December 12, 2009 ÐÂÔöÁËÓÃÓÚ²éѯָ¶¨ÐÝÃß¶ÓÁÐÉϵȴýÕßÊýÁ¿µÄ sleepq_sleepcnt() º¯ÊýÖ®ºóµÄ 9.0-CURRENT¡£
900006 January 4, 2010 µ÷ÕûÁË scandir(3) ºÍ alphasort(3) º¯ÊýÔ­ÐÍ£¬ ʹÆä·ûºÏ SUSv4 Ö®ºóµÄ 9.0-CURRENT¡£
900007 January 13, 2010 ɾȥÁË utmp(5) ²¢Ôö¼ÓÁË utmpx (²ÎÔÄ getutxent(3)) ÒÔ¸ÄÉÆÓû§µÇ¼ÈÕÖ¾ºÍϵͳʼþÖ§³ÖÖ®ºóµÄ 9.0-CURRENT¡£
900008 January 20, 2010 9.0-CURRENT ÒýÈëÁË BSD ÊÚȨµÄ bc/dc ²¢½« GNU bc/dc ±êעΪ¹ýʱ֮ºóµÄ 9.0-CURRENT¡£
900009 January 26, 2010 ÐÂÔöÁËÓÃÓÚ¹ÜÀíÍøÂç½Ó¿Ú˵Ã÷µÄ SIOCGIFDESCR ºÍ SIOCSIFDESCR ioctl Ö®ºóµÄ 9.0-CURRENT¡£ Õâ×é½Ó¿ÚÊܵ½ÁË OpenBSD µÄÆô·¢¡£
900010 March 22, 2010 ÒýÈëÁË zlib 1.2.4 Ö®ºóµÄ 9.0-CURRENT¡£
900011 April 24, 2010 Ìí¼ÓÁË soft-updates ÈÕÖ¾¹¦ÄÜÖ®ºóµÄ 9.0-CURRENT¡£
900012 May 10, 2010 Ìí¼ÓÁË liblzma, xz, xzdec ÒÔ¼° lzmainfo Ö®ºóµÄ 9.0-CURRENT¡£
900013 May 24, 2010 Ìí¼ÓÁËÕë¶Ô linux(4) µÄ USB ÐÞÕýÖ®ºóµÄ 9.0-CURRENT¡£
900014 Jun 10, 2010 Ìí¼ÓÁË Clang Ö®ºóµÄ 9.0-CURRENT¡£
900015 July 22, 2010 ÒýÈëÁË BSD grep Ö®ºóµÄ 9.0-CURRENT¡£
900016 July 28, 2010 ÔÚ struct malloc_type_internal ÖмÓÈëÁË mti_zone Ö®ºóµÄ 9.0-CURRENT¡£
900017 August 23, 2010 ĬÈÏ grep ¸Ä»ØÊ¹Óà GNU grep ²¢Ôö¼Ó WITH_BSD_GREP ¿ª¹ØÖ®ºóµÄ 9.0-CURRENT¡£
900018 August 24, 2010 ½« pthread_kill(3) ²úÉúµÄÐźÅÔÚ si_code ÖиÄΪʹÓà SI_LWP ±ê¼ÇÖ®ºóµÄ 9.0-CURRENT¡£ ֮ǰ£¬ si_code ¶ÔÓ¦µÄ±ê־Ϊ SI_USER¡£
900019 August 28, 2010 Ϊ mmap(2) ÐÂÔöÁË MAP_PREFAULT_READ ±êÖ¾Ö®ºóµÄ 9.0-CURRENT¡£
900020 September 9, 2010 Ϊ sbuf Ôö¼ÓÁË drain ¹¦Äܲ¢¸Ä±äÁË struct sbuf ²¼¾ÖÖ®ºóµÄ 9.0-CURRENT¡£
900021 September 13, 2010 DTrace Ôö¼ÓÓû§Ì¬¸ú×ÙÖ§³ÖÖ®ºóµÄ 9.0-CURRENT¡£
900022 October 2, 2010 ÐÂÔöÁË BSDL man ¹¤¾ß£¬ ²¢ÌÔÌ­ GNU/GPL man ¹¤¾ßÖ®ºóµÄ 9.0-CURRENT¡£
900023 October 11, 2010 ÒýÈë 20101010 git ¿ìÕÕ°æ±¾ xz Ö®ºóµÄ 9.0-CURRENT¡£
900024 November 11, 2010 ½« libgcc.a Ìæ»»Îª libcompiler_rt.a Ö®ºóµÄ 9.0-CURRENT¡£
900025 November 12, 2010 ÒýÈëÁËÄ£¿é»¯ÓµÈû¿ØÖÆÖ®ºóµÄ 9.0-CURRENT¡£
900026 November 30, 2010 ÒýÈë´®ÐйÜÀíЭÒé (SMP) ֱͨ£¬ ÒÔ¼°ÓëÖ®¶ÔÓ¦µÄ CAM CCB XPT_SMP_IO ºÍ XPT_GDEV_ADVINFO Ö®ºóµÄ 9.0-CURRENT¡£
900027 December 5, 2010 ÔÚ libm ÖÐÔö¼Ó log2 Ö®ºóµÄ 9.0-CURRENT¡£
900028 December 21, 2010 Ìí¼ÓÁË Hhook (Helper Hook)¡¢ Khelp (Kernel Helpers) ºÍ Object Specific Data (OSD) KPI Ö®ºóµÄ 9.0-CURRENT¡£
900029 December 28, 2010 ÐÞ¸Ä TCP ЭÒéջʹÆäÔÊÐí Khelp Ä£¿éͨ¹ý helper hook Ö¸Õ룬 Óë TCP ¿ØÖƿ齻»¥²¢±£´æÁ¬½ÓÊý¾ÝÖ®ºóµÄ 9.0-CURRENT¡£
900030 January 12, 2011 ½« libdialog ¸üÐÂÖÁ°æ±¾ 20100428 Ö®ºóµÄ 9.0-CURRENT¡£
900031 February 7, 2011 Ìí¼ÓÁË pthread_getthreadid_np(3) Ö®ºóµÄ 9.0-CURRENT¡£
900032 February 8, 2011 ɾ³ýÁË uio_yield º¯ÊýÔ­ÐͺͷûºÅÖ®ºóµÄ 9.0-CURRENT¡£
900033 February 18, 2011 ½« binutils ¸üÐÂÖÁ 2.17.50 Ö®ºóµÄ 9.0-CURRENT¡£
900034 March 8, 2011 ÐÞ¸ÄÁË struct sysvec (sv_schedtail) Ö®ºóµÄ 9.0-CURRENT¡£
900035 March 29, 2011 ½«»ù±¾ÏµÍ³ÖÐ gcc ºÍ libstdc++ Éý¼¶ÖÁ×îºóµÄ GPLv2 ÊÚȨ°æ±¾Ö®ºóµÄ 9.0-CURRENT¡£
900036 April 18, 2011 ÔÚ»ù±¾ÏµÍ³ÖÐɾȥÁË libobjc ºÍ Objective-C Ö§³ÖÖ®ºóµÄ 9.0-CURRENT¡£
900037 May 13, 2011 ÔÚ»ù±¾ÏµÍ³ÖÐÒýÈëÁË libprocstat(3) º¯Êý¿âÒÔ¼° fuser(1) ¹¤¾ßÖ®ºóµÄ 9.0-CURRENT¡£
900038 May 22, 2011 Ϊ VFS_FHTOVP(9) Ìí¼ÓËø±êÖ¾²ÎÊýÖ®ºóµÄ 9.0-CURRENT¡£
900039 June 28, 2011 ÒýÈëÁËÀ´×Ô OpenBSD 4.5 µÄ pf Ö®ºóµÄ 9.0-CURRENT¡£
900041 August 13, 2011 ʵÏÖÁË Capsicum capabilities Ö®ºóµÄ 9.0-CURRENT¡£ fget(9) ÐÂÔöÁËȨÏÞ²ÎÊý¡£

×¢Òâ: Çë×¢Ò⣬ 2.2.5-RELEASE Ö®ºóÓÐÒ»¶Îʱ¼äµÄ 2.2-STABLE »áÉù³Æ×Ô¼ºÊÇ ¡°2.2.5-STABLE¡±¡£ ÕâÖÖģʽµÄ°æ±¾ºÅ±íʾµÄÊÇÄêÔ¡£ µ«Ëæºó£¬ ÎÒÃǾö¶¨£¬ ´Ó 2.2 ¿ªÊ¼£¬ ½«Ëü¸ÄΪ¸üΪ¼ò½àµÄ Ö÷/´Î °æ±¾ºÅµÄÐÎʽÀ´ÃüÃû°æ±¾¡£ ÕâÊÇÒòΪ²¢ÐеØÔÚ¶à¸ö·ÖÖ§ÉϽøÐпª·¢£¬ ʹµÃͨ¹ýʵ¼ÊµÄ·¢²¼ÈÕÆÚÀ´Çø·Ö²»Í¬µÄ°æ±¾±äµÃ²»ÔÙÏÖʵ¡£ Èç¹ûÄúÕýÔÚ×öÐ嵀 port£¬ Ó¦¸Ã²»ÐèÒªµ£ÐĽÏÔçµÄ -CURRENT£» ÔÚ´ËÁгö½ö¹©²Î¿¼¡£


12.6 ÔÚ bsd.port.mk Ö®ºóдһЩÄÚÈÝ

¡¡¡¡²»ÒªÔÚ .include <bsd.port.mk> ÕâÐÐÖ®ºóÔö¼ÓÈκÎÄÚÈÝ¡£ Õâͨ³£¿ÉÒÔͨ¹ýÔÚÄúµÄ Makefile ÖмäµÄij´¦ÒýÓà bsd.port.pre.mk£¬ ²¢ÔÚ½áβµÄµØ·½ÒýÓà bsd.port.post.mk À´±ÜÃâ¡£

×¢Òâ: Ö»Äܹ»²ÉÓà bsd.port.pre.mk/bsd.port.post.mk »ò bsd.port.mk Á½ÖÖд·¨Ö®Ò»£» ÈκÎʱºò¶¼²»ÒªÍ¬Ê±Ê¹ÓÃÁ½ÖÖд·¨¡£

¡¡¡¡bsd.port.pre.mk Ö»¶¨ÒåÁ˺ÜÉٵıäÁ¿£¬ ËüÃÇ¿ÉÒÔÔÚ Makefile ÖÐÓÃÓÚ½øÐÐһЩ²âÊÔ£¬ ¶ø bsd.port.post.mk Ôò¶¨ÒåÁËËùÓÐÆäËüµÄ±äÁ¿¡£

¡¡¡¡ÏÂÃæÊÇһЩÓÉ bsd.port.pre.mk ¶¨ÒåµÄ±È½ÏÖØÒªµÄ±äÁ¿ (Õâ²¢²»ÊÇÒ»·ÝÍêÕûµÄÁÐ±í£¬ Äú¿ÉÒÔÔĶÁ bsd.port.mk ÒÔ»ñµÃÈ«²¿±äÁ¿µÄÃû×Ö)¡£

±äÁ¿ ÃèÊö
ARCH ÓÉ uname -m Êä³öµÃµ½µÄÓ²¼þ¼Ü¹¹µÄÃû×Ö (ÀýÈ磬 i386)
OPSYS ÓÉ uname -s ·µ»ØµÄ²Ù×÷ϵͳÀàÐÍ (ÀýÈ磬 FreeBSD)
OSREL ²Ù×÷ϵͳµÄ°æ±¾ºÅ (ÀýÈç 2.1.5 »ò 2.2.7)
OSVERSION ²Ù×÷ϵͳµÄ°æ±¾ºÅµÄÊýÖµÐÎʽ£» ËüµÈÓÚ __FreeBSD_version¡£
PORTOBJFORMAT ϵͳĬÈϵÄÖ´ÐÐÎļþ¸ñʽ (elf »ò aout£» Çë×¢Ò⣬ ¡°ÏÖ´úµÄ¡± FreeBSD °æ±¾ÖУ¬ aout ÒÑÔÚÌÔÌ­Ö®ÁС£)
LOCALBASE ¡°local¡± Ŀ¼µÄ¸ù (ÀýÈ磬 /usr/local/)
PREFIX port Ó¦±»°²×°µ½ÄÄÀï (²Î¼û ¹ØÓÚ PREFIX µÄ¸ü¶à˵Ã÷)¡£

×¢Òâ: Èç¹ûÄúÐèÒª¶¨Òå USE_IMAKE£¬ USE_X_PREFIX£¬ »ò MASTERDIR ÕâЩ±äÁ¿£¬ ÔòÓ¦ÔÚÒýÓà bsd.port.pre.mk ֮ǰÍê³É¡£

¡¡¡¡ÏÂÃæÊÇһЩÔÚÒýÓà bsd.port.pre.mk Ö®ºó¿ÉÒÔ½øÐеÄÅжϣº

# Èç¹û perl5 ÒѾ­ÔÚϵͳÖÐÌṩ£¬ Ôò²»±Ø±àÒë lang/perl5
.if ${OSVERSION} > 300003
BROKEN= perl is in system
.endif

# ELF ֻʹÓÃÒ»¸ö shlib °æ±¾
.if ${PORTOBJFORMAT} == "elf"
TCL_LIB_FILE=  ${TCL_LIB}.${SHLIB_MAJOR}
.else
TCL_LIB_FILE=  ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR}
.endif

# Èí¼þ»á×Ô¶¯Îª ELF ´´½¨·ûºÅÁ´½Ó£¬ µ« a.out ÔòÐèÒªÁíÐд´½¨
post-install:
.if ${PORTOBJFORMAT} == "aout"
       ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so
.endif

¡¡¡¡Äú»¹¼ÇµÃÓ¦¸ÃÔÚ BROKEN= ºÍ TCL_LIB_FILE= ºóÃæÊ¹ÓÃÖÆ±í·û£¬ ¶ø²»Êǿոñ£¬ ¶Ô°É£¿ :-)


12.7 ÔÚ wrapper ½Å±¾ÖÐʹÓà exec Óï¾ä

¡¡¡¡Èç¹û port °²×°ÁËÓÃÒÔÆô¶¯ÆäËû³ÌÐòµÄ½Å±¾£¬ ²¢ÇÒÔËÐÐÆäËû³ÌÐòÊÇÕâЩ½Å±¾µÄ×îºóÒ»Ïî²Ù×÷£¬ ÇëÎñ±ØÊ¹Óà exec Óï¾äÀ´ÔËÐÐÕâЩ³ÌÐò£¬ ÀýÈ磺

#!/bin/sh
exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar "$@"

¡¡¡¡Ê¹Óà exec Óï¾ä±íʾִÐÐÖ¸¶¨µÄ³ÌÐòÀ´È¡´ú shell ½ø³Ì¡£ Èç¹ûÊ¡ÂÔÁË exec£¬ Ôò shell ½ø³Ì»áÒ»Ö±ÔÚÄÚ´æÖУ¬ ´Ó¶ø²»±ØÒªµØÏûºÄÁ˶îÍâµÄϵͳ×ÊÔ´¡£


12.8 ÀíÐÔÐÐÊÂ

¡¡¡¡ÈκΠMakefile ¶¼Ó¦¸Ã¼òµ¥²¢ÀíÐÔµØÐÐÊ¡£ Èç¹ûÄúÄÜÈÃÆäÖеÄÌõÄ¿¸üΪ¼òµ¥ºÍÒ×¶Á£¬ Ò»¶¨ÒªÕâÑù×ö¡£ ÀýÈ磬 ʹÓà make ÌṩµÄ .if ½á¹¹£¬ ¶ø²»ÒªÊ¹Óà shell µÄ if£¬ Ö»ÒªÄÜÖØ¶¨Òå EXTRACT* ¾Í²»ÒªÖØÔØ do-extract£¬ ¾¡Á¿Ê¹Óà GNU_CONFIGURE ¶ø²»ÊÇ CONFIGURE_ARGS += --prefix=${PREFIX}¡£

¡¡¡¡Èç¹ûÄúÔÚ³¢ÊÔ×öʲôÊÂÇéµÄʱºò·¢ÏÖ²»µÃ²»Ð´´óÁ¿µÄ´úÂ룬 Çë»Ø¹ýÍ·À´¸´ÉóһϠbsd.port.mk£¬ ¿´¿´ÊÇ·ñÓÐÄúÕý´òËã×öµÄÊÂÇéµÄÏÖ³ÉʵÏÖ¡£ ¾¡¹Ü¶ÁÆðÀ´¿ÉÄܷܺѾ¢£¬ µ«ÓкܶàÃ²ËÆºÜÄѵÄÎÊÌ⣬ ÔÚ bsd.port.mk Öж¼¸ø³öÁËÊ®·Ö¼ò±ãµÄ½â¾ö·½°¸¡£


12.9 ×ñÑ­ CC ºÍ CXX ÉèÖÃ

¡¡¡¡port Ó¦×ñÑ­ CC ºÍ CXX ±äÁ¿µÄÉèÖᣠÕâÒ²¾ÍÊÇ˵£¬ port ²»Ó¦Ê¹Óþø¶ÔµÄ·½Ê½À´ÉèÖÃÕâ¸ö±äÁ¿µÄÖµ£¬ ¶øØè¹ËÒѾ­´æÔÚµÄÉèÖã» Óë´ËÏà·´£¬ ËüÓ¦¸ÃÔÚÆäÖµºó¼ÓÈëÐèÒªµÄÆäËüÖµ¡£ ÕâÑù£¬ ¾Í¿ÉÒÔÉèÖÃÈ«¾ÖµÄÁª±àÑ¡Ï ÁîÆäÓ°ÏìËùÓÐµÄ port Áª±à¹ý³ÌÁË¡£

¡¡¡¡Èç¹ûʵÔÚÎÞ·¨ÕâÑù×ö£¬ ÇëÔÚ Makefile ÖмÓÈë NO_PACKAGE=ignores cflags¡£

¡¡¡¡ÏÂÃæµÄ Makefile ʵÀý¸ø³öÁËÈçºÎ×ñÑ­ CC ºÍ CXX ±äÁ¿µÄÉèÖᣠעÒâÕâÀïÓõ½µÄ ?=£º

CC?= gcc
CXX?= g++

¡¡¡¡ÏÂÃæÔòÊÇûÓÐ×ñÑ­ CC ºÍ CXX µÄÀý×Ó£º

CC= gcc
CXX= g++

¡¡¡¡ÔÚ FreeBSD ϵͳÖУ¬ CC ºÍ CXX ÕâÁ½¸ö±äÁ¿¶¼¿ÉÒÔÔÚ /etc/make.conf ÖÐ×ÔÐж¨Òå¡£ µÚÒ»¸öÀý×ÓÖ»ÓÐÔÚ /etc/make.conf ÖÐûÓж¨Òåʱ²Å¶ÔÕâÁ½¸ö±äÁ¿½øÐж¨Ò壬 ´Ó¶ø±£³ÖÁËϵͳ·¶Î§µÄÅäÖᣠ¶øµÚ¶þ¸öÀý×ÓÔò»á¸²¸ÇÈκÎÏÖÓеÄÅäÖá£


12.10 ×ñÑ­ CFLAGS

¡¡¡¡ÄúµÄ port Ó¦×ñÑ­ CFLAGS ±äÁ¿µÄÉèÖᣠÕâÒ²¾ÍÊÇ˵£¬ port ²»Ó¦Ê¹Óþø¶ÔµÄ·½Ê½À´ÉèÖÃÕâ¸ö±äÁ¿µÄÖµ£¬ ¶øØè¹ËÒѾ­´æÔÚµÄÉèÖã» Óë´ËÏà·´£¬ ËüÓ¦¸ÃÔÚÆäÖµºó¼ÓÈëÐèÒªµÄÆäËüÖµ£¬ ÕâÑù£¬ ¾Í¿ÉÒÔÉèÖÃÈ«¾ÖµÄÁª±àÑ¡Ï ÁîÆäÓ°ÏìËùÓÐµÄ port Áª±à¹ý³ÌÁË¡£

¡¡¡¡Èç¹ûʵÔÚÎÞ·¨ÕâÑù×ö£¬ ÇëÔÚ Makefile ÖмÓÈë NO_PACKAGE=ignores cflags¡£

¡¡¡¡ÏÂÃæµÄ Makefile Àý×Ó£¬ ¿ÉÒÔ°ïÖúÎÒÃÇÀí½âÈçºÎ×ñÑ­ CFLAGS µÄÉèÖᣠעÒâËùÓÃµÄ +=£º

CFLAGS+= -Wall -Werror

¡¡¡¡ÏÂÃæÊÇÒ»¸öδÄÜ×ñÑ­ CFLAGS ÉèÖõÄÀý×Ó£º

CFLAGS= -Wall -Werror

¡¡¡¡Ò»°ãÀ´Ëµ£¬ CFLAGS ÔÚ FreeBSD ϵͳÖÐÊÇÔÚ /etc/make.conf ÀïÅäÖõġ£ µÚÒ»¸öÀý×ÓÔÚ CFLAGS ±äÁ¿ÖÐÔö¼ÓÁËһЩ²ÎÊý£¬ ²¢±£³ÖÁËËùÓÐϵͳԤ¶¨ÒåµÄ±êÖ¾¡£ ¶øµÚ¶þ¸öÀý×Ó£¬ Ôò»á¸²¸ÇµôÈκÎÏÈǰ¶¨ÒåµÄ²ÎÊý¡£

¡¡¡¡ÄúÓ¦´ÓµÚÈý·½Èí¼þµÄ Makefile ÖÐÈ¥µôÌØÊâµÄÓÅ»¯ÉèÖᣠϵͳµÄ CFLAGS ¸ø³öÁËȫϵͳ·¶Î§ÄÚµÄÓÅ»¯ÉèÖòÎÊý¡£ ÏÂÃæÊÇÒ»¸öδ¾­ÐÞ¸ÄµÄ Makefile ʵÀý£º

CFLAGS= -O3 -funroll-loops -DHAVE_SOUND

¡¡¡¡Èç¹ûʹÓÃϵͳµÄÓÅ»¯²ÎÊý£¬ Ôò Makefile ÖеÄÉèÖÃÓ¦¸ÃÀàËÆÏÂÃæÕâÑù£º

CFLAGS+= -DHAVE_SOUND

12.11 Ï߳̿â

¡¡¡¡ÔÚ FreeBSD ÉÏ£¬ Ïß³Ì¿â±ØÐëͨ¹ýÌØÊâµÄÁ¬½ÓÆ÷²ÎÊý -pthread Á¬½Óµ½¿ÉÖ´ÐÐÎļþ¡£ Èç¹û port Ò»¶¨ÒªÖ±½ÓÁ¬½Ó -lpthread »ò -lc_r£¬ ÔòÓ¦½«Æä¸ÄΪʹÓÃÓÉ ports ¿ò¼ÜÌṩµÄ PTHREAD_LIBS¡£ Õâ¸ö±äÁ¿µÄֵͨ³£ÊÇ -pthread£¬ µ«ÔÚÄ³Ð©ÌØ¶¨Æ½Ì¨É쵀 FreeBSD °æ±¾ÖУ¬ Ëü¿ÉÄÜÊÇÆäËüÖµ£¬ Òò´Ë£¬ ²»Òª½« -pthread Ó²±àÂëµ½ÄúµÄ²¹¶¡ÖУ¬ ¶øÓ¦Ê¹Óà PTHREAD_LIBS ±äÁ¿¡£

×¢Òâ: Èç¹ûÉèÖÃÁË PTHREAD_LIBS£¬ ¶øÔÚÁª±àʱ³öÏÖ unrecognized option '-pthread' ÕâÑùµÄ´íÎó£¬ ¿ÉÄÜÐèҪͨ¹ý½« CONFIGURE_ENV ÉèΪ LD=${CC} À´Ê¹Óà gcc ×÷ΪÁ¬½ÓÆ÷¡£ -pthread ÕâһѡÏî²¢²»Îª ld ËùÖ±½ÓÖ§³Ö¡£


12.12 ·´À¡

¡¡¡¡Èç¹û½øÐÐÁËһЩºÜºÃµÄÐ޸ĺͲ¹¶¡£¬ Ò»¶¨Òª°ÑËüÃÇ·¢»Ø¸øÔ­×÷Õߣ¬ »òά»¤Õߣ¬ ÒÔ±ãÔÚÏÂÒ»°æ±¾µÄ´úÂëÖаüº¬ËüÃÇ¡£ Õâ»áÈÃÄúÔÚÈí¼þ·¢²¼Ð°汾µÄʱºò±äµÃÇáËÉһЩ¡£


12.13 README.html

¡¡¡¡²»Òª°üº¬ README.html Îļþ¡£ Õâ¸öÎļþ²¢·Ç CVS ´úÂë¿âÖеÄÒ»²¿·Ö£¬ ËüÊÇÓÉ make readme ÃüÁîÉú³ÉµÄ¡£


12.14 ʹÓà BROKEN¡¢ FORBIDDEN »ò IGNORE ×èÖ¹Óû§°²×° port

¡¡¡¡Ä³Ð©Ê±ºò»áÐèÒª×èÖ¹Óû§°²×°Ä³¸ö port¡£ ÏëÒª¸æËßÓû§Ä³¸ö port ²»Ó¦±»°²×°£¬ ÓÐÐí¶à¿ÉÒÔÔÚ port µÄ Makefile ÖÐʹÓÃµÄ make ±äÁ¿¡£ ÏÂÁÐ make µÄÖµ£¬ ½«ÊÇÔÚÓû§ÊÔͼ°²×°Ê±µÃµ½µÄÌáʾÐÅÏ¢¡£ ÎñÇëʹÓÃÕýÈ·µÄ make ±äÁ¿£¬ ÒòΪÿһ¸ö¶¼±í´ïÁ˽ØÈ»²»Í¬µÄÒâÒ壬 ¶øÇÒÐí¶à×Ô¶¯»¯ÏµÍ³£¬ ÀýÈç port Áª±à¼¯Èº¡¢ FreshPorts£¬ ÒÔ¼° portsmon£¬ ¶¼ÒÀÀµÓÚ Makefile µÄÕýÈ·ÐÔ¡£


12.14.1 ±äÁ¿

  • BROKEN רÃÅÓÃÓÚ±í´ïĿǰÎÞ·¨ÕýÈ·±àÒë¡¢ °²×°»òÐ¶ÔØÕâÀàÎÊÌâ¡£ Èç¹ûÊÇÁÙʱÐÔµÄÎÊÌ⣬ Ôò¿ÉÒÔʹÓÃËü¡£

    Èç¹û½øÐÐÁËÏà¹ØµÄÅäÖ㬠ÔòÁª±à¼¯ÈºÈÔ½«³¢ÊÔÁª±àËü£¬ ÒÔÈ·Èϵ¼ÖÂÎÊÌâµÄÉî²ãÎÊÌâÊÇ·ñÒѱ»½â¾ö¡£ (²»¹ý£¬ Ò»°ãÇé¿öÏ£¬ Áª±à¼¯Èº²¢²»»áÕâÑù×ö¡£)

    ¾ÙÀýÀ´Ëµ£¬ µ± port ·¢ÉúÏÂÊöÇé¿öʱ£¬ ӦʹÓà BROKEN£º

    • ÎÞ·¨±àÒë (does not compile)

    • ÎÞ·¨ÕýÈ·½øÐÐÅäÖûò°²×°²Ù×÷

    • ÔÚ ${LOCALBASE} ÒÔÍâµÄµØ·½°²×°Îļþ

    • Ð¶ÔØÊ±ÎÞ·¨É¾³ýËù°²×°µÄÈ«²¿Îļþ (²»¹ý£¬ ÁôÏÂÓû§¸Ä¹ýµÄÎļþ¿É½ÓÊܵģ¬ ÒòΪ¿ÉÄÜÏ£ÍûÕâÑù×÷)

  • FORBIDDEN ÓÃÓÚ±íʾ ports Öаüº¬°²È«Â©¶´£¬ »òÕß¿ÉÄÜ»á¸ø°²×°ÁËÕâ¸ö port µÄ FreeBSD ϵͳ´øÀ´ÑÏÖØµÄ°²È«Òþ»¼ (ÀýÈ磺 Ò»¸öºÜ²»°²È«µÄ³ÌÐò£¬ »ò°üº¬ÁËÄܹ»±»ÇáÒ×¹¥ÏݵķþÎñµÄÈí¼þ)¡£ Èç¹û·¢ÏÖÁ˰²È«Â©¶´£¬ ¶øÆä×÷ÕßûÓз¢²¼Éý¼¶°æ±¾£¬ ÔòÓ¦Á¢¼´°ÑÄǸö port ±ê¼ÇΪ FORBIDDEN¡£ ÀíÏëÇé¿öÏ£¬ °üº¬°²È«Â©¶´µÄ port Ó¦±»¾¡¿ìÉý¼¶£¬ ÒÔ±ã¼õÉÙ°üº¬Â©¶´µÄ FreeBSD Ö÷»úµÄÊýÁ¿ (ÎÒÃÇÏ£Íû±£³ÖÁ¼ºÃµÄ°²È«¼Ç¼)£¬ È»¶ø£¬ ÓÐʱÔÚ°²È«Â©¶´µÄÅû¶ºÍÈí¼þ¸üÐÂÖ®¼ä¿ÉÄÜ»áÓÐÒ»¸ö¼ä¸ô£¬ ´ËʱӦÓèÒÔ˵Ã÷¡£ ³ýÁ˰²È«Ö®Í⣬ Çë²»ÒªÒÔÈÎºÎÆäËüÀíÓɽ« port ±ê¼ÇΪ FORBIDDEN¡£

  • IGNORE ÓÃÀ´±íʾ port ÓÉÓÚijЩÆäËüÔ­Òò²»Ó¦ÓèÒÔÁª±à¡£ Èç¹ûÈÏΪ·¢ÉúÁ˽ṹÐÔµÄÎÊÌ⣬ ÔòӦʹÓÃËü¡£ ÈκÎÇé¿öÏ£¬ Áª±à¼¯Èº¶¼²»»áÁª±à±ê¼ÇΪ IGNORE µÄ port¡£ ÒÔÏÂÊÇʹÓà IGNORE µÄһЩÀý×Ó£º

    • Äܹ»±àÒ뵫ÎÞ·¨Õý³£ÔËÐÐ

    • ÎÞ·¨ÓëÔËÐÐµÄ FreeBSD °æ±¾Ò»Í¬¹¤×÷

    • Áª±àʱÐèÒª FreeBSD Äں˵ÄÔ´´úÂ룬 µ«Óû§Ã»Óа²×°ËüÃÇ

    • ÓÉÓÚÊÚȨԭÒò£¬ ±ØÐëÊÖ¹¤ÏÂÔØ distfile

    • ÎÞ·¨ÓëµÄij¸öÒѰ²×°µÄ port һͬ¹¤×÷ (ÀýÈ磬 port ÒÀÀµÓÚ www/apache21 ¶ø°²×°µÄÔòÊÇ www/apache13)

    ×¢Òâ: Èç¹û port Óëij¸öÒѾ­°²×°µÄ port ³åÍ» (ÀýÈ磬 ËüÃÇÔÚͬһλÖð²×°Í¬Ãûµ«¹¦Äܲ»Í¬µÄÎļþ)£¬ ÔòÓ¦ ʹÓà CONFLICTS À´±ê¼ÇËü¡£ CONFLICTS ½«×Ô¶¯µØÉèÖà IGNORE¡£

  • Èç¹û port Ö»Ó¦ÔÚijЩƽ̨Éϱê¼ÇΪ IGNORE£¬ »¹ÓÐÁíÍâÁ½¸ö·½±ãʹÓÃµÄ IGNORE ±äÁ¿¿É¹©Ñ¡Ôñ£º ONLY_FOR_ARCHS ºÍ NOT_FOR_ARCHS¡£ ÀýÈ磺

    ONLY_FOR_ARCHS= i386 amd64
    
    NOT_FOR_ARCHS= alpha ia64 sparc64
    

    ¿ÉÒÔʹÓà ONLY_FOR_ARCHS_REASON ºÍ NOT_FOR_ARCHS_REASON À´ÅäÖö¨ÖÆµÄ IGNORE ÏûÏ¢¡£ ´ËÍ⣬ »¹¿ÉÒÔʹÓà ONLY_FOR_ARCHS_REASON_ARCH ºÍ NOT_FOR_ARCHS_REASON_ARCH À´·Ö±ðÖ¸¶¨Óë¾ßÌåÆ½Ì¨ÓйصÄÐÅÏ¢¡£

  • Èç¹û port »áÏÂÔØ²¢°²×°ÓÃÓÚ i386 µÄÔ¤±àÒë¶þ½øÖÆÎļþ£¬ ÔòÓ¦ÉèÖà IA32_BINARY_PORT¡£ Èç¹ûÉèÖÃÁËÕâ¸ö±äÁ¿£¬ Ôòϵͳ»á¼ì²éÊÇ·ñÒѾ­ÔÚ /usr/lib32 Ŀ¼Öа²×°ÁË IA32 °æ±¾µÄº¯Êý¿â£¬ ÒÔ¼°ÄÚºËÊÇ·ñÌṩÁË IA32 ¼æÈÝÖ§³Ö¡£ Èç¹ûÕâЩÒÀÀµÌõ¼þ²»Âú×㣬 Ôò»á×Ô¶¯ÉèÖà IGNORE¡£


12.14.2 ʵÏÖ˵Ã÷

¡¡¡¡ÕâЩ×Ö´®²»Ó¦Ê¹ÓÃÒýºÅÀ¨ÆðÀ´¡£ ´ËÍ⣬ ÓÉÓÚÏÔʾ¸øÓû§µÄ·½Ê½²»Í¬£¬ ÕâЩ×Ö´®µÄ´ë´ÇÒ²Ó¦ÓÐËù²»Í¬¡£ ÀýÈ磺

BROKEN= this port is unsupported on FreeBSD 5.x
IGNORE= is unsupported on FreeBSD 5.x

¡¡¡¡ËüÃÇ·Ö±ð»áÔÚ make describe ʱ²úÉúÏÂÃæµÄÊä³ö£º

===>  foobar-0.1 is marked as broken: this port is unsupported on FreeBSD 5.x.
===>  foobar-0.1 is unsupported on FreeBSD 5.x.

12.15 ʹÓà DEPRECATED »ò EXPIRATION_DATE ±íʾij¸ö port ½«±»É¾³ý

¡¡¡¡Ò»¶¨Òª¼ÇµÃ BROKEN ºÍ FORBIDDEN Ö»Ó¦×÷Ϊµ±Ä³¸ö port ÎÞ·¨Õý³£¹¤×÷ʱµÄÁÙʱ½â¾ö·½°¸¡£ ÓÀ¾ÃÐԵػµµôÁ赀 port Ó¦±»´Ó ports tree ÖÐÍêȫɾ³ý¡£

¡¡¡¡ÐèҪʱ»¹¿ÉÒÔʹÓà DEPRECATED ºÍ EXPIRATION_DATE À´Í¨ÖªÓû§Ä³¸ö port ²»Ó¦±»Ê¹Ó㬠²¢¼´½«±»É¾³ý¡£ ǰһ¸ö±äÁ¿ÓÃÀ´±í´ïΪʲô¼Æ»®É¾³ý port£» ¶øºóÒ»¸öÊÇÔòÊÇÒ»¸ö ISO 8601 ¸ñʽµÄÈÕÆÚ (YYYY-MM-DD)¡£ Á½Õß¶¼»áÏòÓû§³ÊÏÖ¡£

¡¡¡¡Ò²¿ÉÒÔÉèÖà DEPRECATED ¶ø²»¸ø³ö EXPIRATION_DATE (ÀýÈ磬 ½¨ÒéʹÓÃij¸öа汾µÄ port)£¬ µ«·´Ö®ÔòûÓÐÒâÒå¡£

¡¡¡¡Ä¿Ç°»¹Ã»ÓÐÈ·ÇеĹØÓÚÐèÒª¸ø³ö¶àÉÙ֪ͨµÄÕþ²ß¡£ µ±Ç°µÄʵ¼ùÊÇ£¬ ¶ÔÓÚÓ밲ȫÓйصÄÎÊÌâΪһ¸öÔ£¬ ¶øÓëÁª±àÓйصÄÎÊÌâÔòΪÁ½¸öÔ¡£ ÕâÒ²ÈÃÓÐÐËȤµÄ committer Äܹ»ÓÐÒ»µãʱ¼äÀ´ÐÞÕýÎÊÌâ¡£


12.16 ±ÜÃâʹÓà .error ½á¹¹

¡¡¡¡ÔÚ Makefile Öиø³öÐźţ¬ ±íʾÓÉÓÚijÖÖÍâ½çÒòËØ (ÀýÈ磬 Óû§Ö¸¶¨ÁËÎÞЧµÄÁª±àÑ¡Ïî) ¶øÎÞ·¨°²×°µÄ·½·¨Êǽ«±äÁ¿ IGNORE ÉèΪһ·Ç¿ÕÖµ¡£ Õâ¸öÖµ½«±»¸ñʽ»¯£¬ ²¢ÔÚÓû§Ö´ÐÐ make install ÊǸø³öÌáʾ¡£

¡¡¡¡Óà .error ʵÏÖÕâһĿµÄÊÇÒ»ÖÖ³£¼ûµÄÎóÓᣠÕâÑù×öµÄÎÊÌâÊÇ£¬ Ðí¶àÔÚ ports Ê÷ÉÏÔËÐеÄ×Ô¶¯»¯¹¤¾ß»áÒò´Ë¶øÊ§°Ü¡£ ×î³£¼ûµÄÇé¿ö¼ûÓÚÁª±à /usr/ports/INDEX µÄ¹ý³Ì (²Î¼û µÚ 9.1 ½Ú)¡£ È»¶ø£¬ ¼´Ê¹Ê®·ÖÆÕͨµÄÃüÁ ÀýÈç make maintainer£¬ ÔÚÕâÖÖÇé¿öÏÂÒ²»áʧ°Ü¡£ ÕâÊDz»¿É½ÓÊܵġ£

Àý 12-1. ÔõÑù±ÜÃâʹÓà .error

¿¼ÂÇÓÐÈËÔÚ make.conf ÖÐÉèÖÃÁË

USE_POINTYHAT=yes
µÄÇéÐΡ£ ½ÓÏÂÀ´µÄÀý×ÓÖУ¬ µÚÒ»¸ö Makefile ÖеÄÎÊÌ⽫µ¼Ö make index ʧ°Ü£¬ ¶øµÚ¶þ¸öÔò²»»á£º
.if USE_POINTYHAT
.error "POINTYHAT is not supported"
.endif
.if USE_POINTYHAT
IGNORE=POINTYHAT is not supported
.endif

12.17 ¶ÔÓÚ sysctl µÄʹÓÃ

¡¡¡¡³ýÁËÔÚ target ÖÐÖ®Í⣬ ÊDz»¹ÄÀøÊ¹Óà sysctl µÄ¡£ ÕâÊÇÒòΪ¼ÆËã makevar£¬ ÀýÈçÔÚ make index ÖÐËù½øÐеÄÄÇÖÖ£¬ ¶¼²»µÃ²»ÔËÐÐÒ»ÌõÃüÁ Õâ»áʹÕâÒ»²Ù×÷±äµÃ¸üÂý¡£

¡¡¡¡ÔÚʹÓà sysctl(8) ʱ£¬ Îñ±ØÍ¨¹ý SYSCTL ±äÁ¿À´½øÐУ¬ ÒòΪ´Ë±äÁ¿½«Õ¹¿ª³ÉÃüÁîµÄÍêÕû·¾¶£¬ ²¢ÇÒÓû§¿ÉÒÔ¸ù¾ÝÐèÒªÁíÐÐÖ¸¶¨¡£


12.18 ÖØÐ·¢²¼µÄ distfiles

¡¡¡¡ÓÐʱ£¬ һЩÈí¼þµÄ×÷Õß»áÐÞ¸ÄÒµÒÑ·¢²¼µÄ distfile µÄÄÚÈÝ£¬ ¶ø²¢²»ÐÞ¸ÄÎļþÃû¡£ ÕâÖÖÇé¿öÏ£¬ ÄúÐèÒªÑéÖ¤ÕâЩ±ä¶¯ÊÇÀ´×ÔÈí¼þ×÷ÕߵĹٷ½¸Ä¶¯¡£ ÔÚ¹ýÈ¥£¬ Ôø¾­·¢Éú¹ýÏÂÔØ·þÎñÆ÷É쵀 distfile ±»ÇÄÇÄ»»³É×¢Èë¹ý¶ñÒâ´úÂëµÄ°æ±¾£¬ ²¢¸øÓû§°²È«Ôì³ÉÍþв»òË𺦵ÄÊÂÇé¡£

¡¡¡¡ÄúÓ¦±£ÁôÒ»·Ý¾ÉµÄ distfile£¬ ²¢ÏÂÔØÒ»·ÝÐµģ¬ ·Ö±ðÕ¹¿ª£¬ Óà diff(1) À´¶Ô±ÈÆäÄÚÈÝ¡£ Èç¹ûûÓз¢ÏÖ¿ÉÒɵı䶯£¬ ¾Í¿ÉÒÔ¸üРdistinfo ÁË¡£ ÇëÎñ±ØÔÚÄúµÄ PR »ò commit log ÖжÔÕâЩ²îÒì½øÐÐÃèÊö£¬ ÒÔ±ãÈñðÈËÁ˽âÄúÒѾ­×Ðϸ¶Ô±È¹ý²îÒ죬 ²¢È·ÈÏûÓÐÎÊÌâÁË¡£

¡¡¡¡³ý´ËÖ®Í⣬ Ò²¿ÉÒÔÁªÏµÈí¼þµÄ×÷Õߣ¬ ÒÔÈ·ÈÏÕâЩÐÞ¸ÄÊÇ·ñÊÇËûÃÇ×öµÄ¡£


12.19 ÔÓ¼Ç

¡¡¡¡ÐèÒª×ÐϸµØ·´¸´¼ì²é pkg-descr ºÍ pkg-plist ÕâÁ½¸öÎļþ¡£ Èç¹ûÄúÕýÔÚ¸´ÉóÒ»¸ö port£¬ ²¢ÈÏΪÕâÁ½¸öÎļþÓ¦¸Ã¸Ä½ø£¬ ÇëÒ»¶¨ÒªÕâÑù×ö¡£

¡¡¡¡Çë²»ÒªÔÚϵͳÖи´Öƶà·Ý GNU General Public License¡£

¡¡¡¡Ò»¶¨Òª·Ç³£Ð¡Ðĵش¦Àí·¨ÂÉÎÊÌ⣡ ²»ÒªÈÃÎÒÃÇ·¢²¼Ã»Óеõ½ºÏ·¨ÊÚȨµÄÈí¼þ£¡


µÚ13Õ ¡¡Ê¾·¶µÄ Makefile

¡¡¡¡ÕâÀïÊÇÒ»¸öÄú¿ÉÒÔÔÚ½¨Á¢Ð port ʱ²Î¿¼µÄ Makefile¡£ ÇëÎñ±ØÉ¾³ý²»ÐèÒªµÄÄÇЩעÊÍ (·½À¨ºÅÖмäµÄÎÄ×Ö)£¡

¡¡¡¡½¨ÒéÄú°´ÕÕÏÂÃæÕâÑùµÄ¸ñʽ (±äÁ¿Ë³Ðò£¬ С½ÚÖ®¼äµÄ¿ÕÐеÈ) À´±àд¡£ Õâ¸ö¸ñʽµÄ×÷ÓÃÊDZãÓÚ²éÕÒÖØÒªµÄÐÅÏ¢¡£ ÎÒÃǽ¨ÒéÄúʹÓà portlint À´¼ì²é Makefile¡£

[Í·²¿... Ö÷ÒªÊÇÈÃÎÒÃǸüÈÝÒ׵طֱ治ͬµÄ port¡£]
# New ports collection makefile for:   xdvi
[°æ±¾ÕâÐУ¬ Ö»ÓÐÔÚ PORTVERSION ±äÁ¿²»×ãÒÔÃèÊö port ʱ²ÅÐèÒª]
# Date created:                26 May 1995
[ÕâÊÇ×î³õ½«Èí¼þÒÆÖ²µ½ FreeBSD ÉϵÄÈÕÆÚ£¬ Ò»°ãÀ´ËµÊǽ¨Á¢Õâ·Ý Makefile µÄÈÕÆÚ¡£
Çë×¢Òâ²»ÒªÔÚÖ®ºóÔÙ´ÎÐÞ¸ÄÕâ¸öÈÕÆÚ¡£]
# Whom:                        Satoshi Asami <asami@FreeBSD.org>
#
# $FreeBSD$
[ ^^^^^^^^^ ÕâÊÇ CVS ÔÚÎļþ commit µ½ÎÒÃǵĴúÂë¿âʱ£¬ ×Ô¶¯½øÐÐÌæ»»µÄ RCS ID¡£
Èç¹ûÄúÕýÔÚÉý¼¶ port£¬ ²»Òª°ÑËü¸Ä»Ø "$FreeBSD$"¡£
CVS »á×Ô¶¯½øÐд¦Àí¡£]
#

[Õâ¸öС½ÚÃèÊö port ±¾ÉíÒÔ¼°Ö÷ÒªÏÂÔØÕ¾µã - PORTNAME ºÍ PORTVERSION
 Ó¦·ÅÔÚ×îÇ°Ãæ£¬ ËæºóÊÇ CATEGORIES£¬ È»ºóÊÇ MASTER_SITES£¬ ½ÓÏÂÀ´ÊÇ
 MASTER_SITE_SUBDIR¡£ Èç¹ûÐèÒªµÄ»°£¬ ½ÓÏÂÀ´Ó¦Ö¸¶¨
 PKGNAMEPREFIX ºÍ PKGNAMESUFFIX¡£ ËæºóÊÇ DISTNAME£¬ EXTRACT_SUFX£¬
 ÒÔ¼° DISTFILES£¬ EXTRACT_ONLY£¬ Èç¹ûÐèÒªµÄ»°¡£]
PORTNAME=      xdvi
PORTVERSION=   18.2
CATEGORIES=    print
[Èç¹û²»ÏëʹÓà MASTER_SITE_* ºê£¬ Ò»¶¨²»ÒªÍü¼Ç½áβµÄбÏß ("/")£¡]
MASTER_SITES=  ${MASTER_SITE_XCONTRIB}
MASTER_SITE_SUBDIR= applications
PKGNAMEPREFIX= ja-
DISTNAME=      xdvi-pl18
[Èç¹ûÔ´´úÂë°ü²»ÊDZê×¼µÄ ".tar.gz" ÐÎʽ£¬ ¾ÍÐèÒªÉèÖÃÕâ¸ö]
EXTRACT_SUFX=  .tar.Z

[·ÖÉ¢µÄ²¹¶¡ -- ¿ÉÒÔΪ¿Õ]
PATCH_SITES=   ftp://ftp.sra.co.jp/pub/X11/japanese/
PATCHFILES=    xdvi-18.patch1.gz xdvi-18.patch2.gz

[¼à»¤ÈË(maintainer); *±ØÐëÓÐ*!  ÕâÊÇij¸ö×ÊÔ´´¦Àí port ¸üС¢ Áª±àʧ°Ü£¬
 ÒÔ¼°»Ø´ðÓû§Ö±½ÓÌáÎÊ»ò»ã±¨ bug µÄÈË¡£ ΪÁ˱£Ö¤ Ports Collection
 Óо¡¿ÉÄ܏ߵį·ÖÊ£¬ ÎÒÃDz»ÔÙ½ÓÊÜÖ¸¶¨¸ø "ports@FreeBSD.org" µÄРport¡£]
MAINTAINER=    asami@FreeBSD.org
COMMENT=       A DVI Previewer for the X Window System

[ÒÀÀµµÄÆäËüÈí¼þ°ü -- ¿ÉÒÔΪ¿Õ]
RUN_DEPENDS=   gs:${PORTSDIR}/print/ghostscript
LIB_DEPENDS=   Xpm.5:${PORTSDIR}/graphics/xpm

[Õâ½ÚÊÇÆäËü²»ÊʺÏÉϼ¸½ÚµÄ±ê×¼ bsd.port.mk ±äÁ¿]
[Èç¹ûÐèÒªÔÚ configure¡¢ build »ò install ¹ý³ÌÖÐÌáÎÊ...]
IS_INTERACTIVE=        yes
[Èç¹û½âѹËõµ½ ${DISTNAME} ÒÔÍâµÄĿ¼...]
WRKSRC=                ${WRKDIR}/xdvi-new
[Èç¹û×÷Õß·¢²¼µÄ²¹¶¡²»ÊÇÏà¶ÔÓÚ ${WRKSRC} µÄ£¬ ¿ÉÄÜÐèÒªµ÷ÕûÕâ¸ö]
PATCH_DIST_STRIP=      -p1
[Èç¹ûÐèÒªÔËÐÐÓÉ GNU autoconf Éú³ÉµÄ "configure" ½Å±¾]
GNU_CONFIGURE= yes
[Èç¹ûÐèҪʹÓà GNU make£¬ ¶ø²»ÊÇ /usr/bin/make À´Íê³ÉÁª±à...]
USE_GMAKE=     yes
[Èç¹ûÊÇÒ»¸ö X Ó¦ÓóÌÐò£¬ ²¢Ê¹Óà "xmkmf -a" À´ÔËÐÐ...]
USE_IMAKE=     yes
[et cetera.]

[½«ÔÚ½ÓÏÂÀ´µÄ²¿·ÖʹÓõķDZê×¼µÄ±äÁ¿]
MY_FAVORITE_RESPONSE=  "yeah, right"

[½ÓÏÂÀ´ÊÇÌØÊâ¹æÔò£¬ °´µ÷ÓÃ˳ÐòÅÅÁÐ]
pre-fetch:
	i go fetch something, yeah

post-patch:
	i need to do something after patch, great

pre-install:
	and then some more stuff before installing, wow

[½áÓï]
.include <bsd.port.mk>

µÚ14Õ ¡¡±£³Öͬ²½

¡¡¡¡FreeBSD µÄ Ports Collection ÔÚ³ÖÐøµØ½øÐÐÐ޸ġ£ ÕâÀïÌṩÁËһЩ¹ØÓÚÈçºÎ±£³Öͬ²½µÄÐÅÏ¢¡£


14.1 FreshPorts

¡¡¡¡×î¼òµ¥µÄÁ˽âÒѾ­±» commit µ½ ports ÖеĸüÐµķ½·¨£¬ ÊǶ©ÔÄ FreshPorts¡£ Äú¿ÉÒÔÑ¡Ôñ¶à¸ö ports ²¢¶ÔÆä½øÐмàÊÓ¡£ Ç¿ÁÒ½¨Òéά»¤ÈËÔ±¶©ÔÄËü£¬ ÕâÑù¾Í²»½öÄܽÓÊÕµ½ËûÃÇ×Ô¼ºËù×öµÄÐ޸ģ¬ ¶øÇÒÄÜ¿´µ½ÆäËü FreeBSD committer Ëù×öµÄ¸Ä¶¯¡£ (±£³ÖÓëËùÒÀÀµµÄ ports ¿ò¼Üͬ²½ÊDZØÒªµÄ©¤©¤ËäȻһ°ãÀ´ËµÄú»áÔÚÕâÑùµÄ commit ֮ǰÊÕµ½Ò»¸öÀñòÐÔµÄ֪ͨ£¬ µ«ÓÐʱ¿ÉÄÜ»áÓÐÈËûÓÐ×¢Òâµ½ÐèÒªÕâÑù×ö£¬ »òÕßÕâÑù×öºÜÀ§ÄÑ¡£ ÁíÍ⣬ ÓÐЩʱºò֪ͨµÄÐÞ¸ÄÒ²¿ÉÄÜÊÇ΢²»×ãµÀµÄ¡£ ÎÒÃÇÏ£Íûÿһ¸öÈËÄܹ»ÕýÈ·µØ½øÐÐÅжϡ£)

¡¡¡¡Èç¹ûÏëʹÓà FreshPorts£¬ Ö®ÐèÒª½¨Á¢Ò»¸öÕ˺š£ Èç¹ûÄú×¢²áµÄÓʼþµØÖ·ÊÇ @FreeBSD.org£¬ Äú»á¿´µ½ web Ò³ÃæÓÒ²àµÄ opt-in Á¬½Ó¡£ Èç¹ûÄúÒѾ­×¢²áÁË FreshPorts Õ˺ţ¬ µ«Ã»ÓÐʹÓà @FreeBSD.org ÓʼþµØÖ·£¬ ÔòÖ»Ðè°ÑÓʼþµØÖ·¸ÄΪ @FreeBSD.org£¬ ÖØÐ¶©ÔÄ£¬ ²¢½«Æä¸Ä»Ø¡£

¡¡¡¡FreshPorts Ò²»á¶Ôÿһ¸ö FreeBSD ports tree É쵀 commit ½øÐÐ×Ô¶¯µÄºÏ·¨ÐÔ¼ì²é¡£ Èç¹ûÄú¶©ÔÄÁËÕâÏî·þÎñ£¬ ÔòÈç¹û·¢ÏÖÁË´íÎó£¬ ¾Í»áÊÕµ½À´×Ô FreshPorts µÄ¼ì²â±¨¸æ¡£


14.2 ´úÂë¿âµÄ Web ·ÃÎʽçÃæ

¡¡¡¡¿ÉÒÔͨ¹ý web ½çÃæÀ´ä¯ÀÀÔ´´úÂë¿âÖеÄÎļþ¡£ Ó°ÏìÕû¸ö ports ϵͳµÄÐ޸ģ¬ ÏÖÔÚ¶¼»áÔÚ CHANGES ÎļþÖÐ˵Ã÷¡£ Ó°Ïìijһ¸ö port µÄ±ä¶¯£¬ ÔòÔÚ UPDATING ÎļþÖÐ˵Ã÷¡£ ¾¡¹ÜÈç´Ë£¬ ËùÓÐÎÊÌâ×îΪȨÍþµÄ´ð°¸£¬ ºÁÎÞÒÉÎÊÓ¦¸ÃÊÇ bsd.port.mk µÄÔ´´úÂ룬 ÒÔ¼°Ïà¹ØµÄÎļþ¡£


14.3 FreeBSD Ports ÓʼþÁбí

¡¡¡¡Èç¹ûÄúά»¤ÁËij¸ö»òijһЩ ports£¬ ÔòÓ¦¸Ã¿¼ÂǶ©ÔÄ FreeBSD ports ÓʼþÁÐ±í¡£ ¶ÔÓÚ ports ¹¤×÷·½Ê½µÄÖØÒªÐ޸ͼ»áÔÚ´ËÐûʾ£¬ ²¢Ìá½»µ½ CHANGES¡£


14.4 λÓÚ pointyhat.FreeBSD.org µÄ FreeBSD Port Áª±à¼¯Èº

¡¡¡¡FreeBSD µÄÒ»¸ö×ΪÈËËùÖªµÄÇ¿ÏîÊÇ£¬ ËüÓµÓÐÒ»¸öרÓÃÓÚ³ÖÐøÁª±à Ports Collection µÄ¼¯Èº£¬ Õâ¸ö¼¯Èº»áÁª±àËùÓÐÖ÷ÒªµÄ OS °æ±¾ÔÚÿһ¸ö Tier-1 ¼Ü¹¹É쵀 package¡£ Äú¿ÉÒÔÔÚ package Áª±àºÍ´íÎóÈÕÖ¾ ÕÒµ½Æä½á¹û¡£

¡¡¡¡Ã¿Ò»¸ö port ¶¼»á±»Áª±à£¬ ³ý·Ç±ê¼ÇΪ IGNORE¡£ ±ê¼ÇÁË BROKEN µÄ port ÈÔÈ»»á±»¼ÌÐø³¢ÊÔ£¬ ÒÔÁ˽âÊÇ·ñijЩÒÀÀµ¹ØÏµµÄ±ä¶¯½â¾öÁËÆäÎÊÌâ (ÕâÊÇͨ¹ý¸ø port µÄ Makefile ´« TRYBROKEN ²ÎÊýÀ´Íê³ÉµÄ)¡£


14.5 FreeBSD µÄ Ports Distfile ɨÃèÆ÷

¡¡¡¡Áª±à¼¯ÈºÊÇÒ»×éרÃÅÓÃÓÚÁª±àËùÓÐ port ×îа汾µÄ»úÆ÷£¬ ÆäÉÏÒѾ­ÏÂÔØÁËËùÓÐµÄ distfiles¡£ È»¶ø£¬ ÓÉÓÚ Internet ÔÚ³ÖÐøµØ·¢Éú±ä»¯£¬ distfile ¿ÉÄܺܿì¾ÍÏûʧÁË¡£ FreeBSD Ports distfile ɨÃèÆ÷ ÊÔͼ²éѯÿһ¸ö port µÄËùÓÐÏÂÔØÕ¾µã£¬ ÒÔÆÚÕÒ³öÕâЩÎļþÊÇ·ñÒÀÈ»´æÔÚ¡£ ά»¤ÕßÓ¦¹æÂÉÐԵؼì²éÕâЩ±¨¸æ£¬ Õâ²»½ö»áÌá¸ßÓû§Áª±àµÄËÙ¶È£¬ ͬʱҲ±ÜÃâÁËÀË·ÑÄÇЩ¾µÏñÁËÈ«²¿ distfile µÄÖ¾Ô¸ÕߵĴø¿í¡£


14.6 FreeBSD µÄ Ports ×·×Ùϵͳ

¡¡¡¡ÁíÒ»¸ö·Ç³£·½±ãµÄ×ÊÔ´£¬ ¾ÍÊÇ FreeBSD Ports ×·×Ùϵͳ (Ò²±»³Æ×÷ portsmon)¡£ Õâ¸öϵͳ°üº¬ÁËÒ»¸ö´¦ÀíÈô¸ÉÐÅÏ¢À´Ô´µÄÊý¾Ý¿â£¬ ²¢ÌṩÁËÒ»¸ö¿ÉÒÔͨ¹ý web ·½Ê½ä¯ÀÀµÄ½çÃæ¡£ Ŀǰ£¬ ËüÀûÓõ½ÁËºÍ ports ÓйصÄÎÊÌⱨ¸æ (PR)¡¢ À´×ÔÁª±à¼¯ÈºµÄ´íÎóÈÕÖ¾£¬ ÒÔ¼°À´×Ô Ports Collection µÄÎļþËùÌṩµÄÐÅÏ¢¡£ δÀ´£¬ »¹»á¶ÔËü½øÐнøÒ»²½µÄÀ©Õ¹£¬ ´Ó¶øÌṩ°üÀ¨ distfile ÆÕ²é£¬ ÒÔ¼°ÆäËüÀ´Ô´ÔÚÄڵĸü¶àÐÅÏ¢¡£

¡¡¡¡ÒªÊ¹ÓÃÕâ¸ö¹¤¾ß£¬ ¿ÉÒԴӲ鿴¹ØÓÚijһ¸ö port µÄÈ«²¿×ÊÁ쵀 Port µÄ×ÝÀÀ ¿ªÊ¼¡£

¡¡¡¡±¾ÎÄ׫дʱ, ÕâÊÇΨһһ¸öÄܹ»½« GNATS PR Ï ͬ¶ÔÓ¦µÄ port Ãû×ÖÓ³ÉäÆðÀ´µÄ×ÊÔ´¡£ (Ìá½» PR µÄÓû§£¬ ÓÐʱ²¢²»ÔÚ Synopsis (¸ÅÒª) ÖÐÖ¸Ã÷ port µÄÃû×Ö£¬ ¾¡¹ÜÎÒÃÇÏ£ÍûËûÃÇÕâÑù×ö)¡£ Òò´Ë£¬ portsmon ÔÚÄúÏëÒª²éÕÒÊÇ·ñÓÐÈËÌύij¸öÏÖ´æµÄ port µÄ PR£¬ ÒÔ¼°ËüµÄÁª±àÊÇ·ñ³öÏÖÁË´íÎó£» »òÔÚÄú´´½¨Ð嵀 port ֮ǰÏëÒª²éÕÒÒ»ÏÂÊÇ·ñÒѾ­ÓÐÈËÌá½»¹ýʱ£¬ ¾Í·Ç³£ÓÐÓÃÁË¡£


ÈôÄúÓйØÓÚ FreeBSD ports ϵͳµÄÎÊÌ⣬ Çë·¢Ë͵ç×ÓÓʼþÖÁ <ports@FreeBSD.org>¡£
¹ØÓÚ´ËÎĵµµÄÈκÎÎÊÌ⣬ ÇëÖº¯ <doc@FreeBSD.org>¡£