Chinaunix

标题: 【经验分享】有關 Ports optionsNG 帶來的改變 (2012年10月更新 make.conf) [打印本页]

作者: zeissoctopus    时间: 2012-08-17 00:55
标题: 【经验分享】有關 Ports optionsNG 帶來的改變 (2012年10月更新 make.conf)
本帖最后由 zeissoctopus 于 2012-10-14 00:31 编辑

早於 2012 年 5 月 13 日,FreeBSD Ports Tree 已實作名為 optionsNG 的框架。

經過五個月,一些重要的倚賴關聯也陸逐轉為支援 optionsNG 框架。(轉變還在進行中)

對 FreeBSD Ports 使用者而言 ,optionsNG 帶來了近似 gentoo portage USE flag 的體驗。

FreeBSD optionsNG 的 KNOB = gentoo 的 USE flag
只要在 /etc/make.conf 中使用 OPTIONS_SET= 或  OPTIONS_UNSET= 便可統一控制編譯元件的倚賴。

例如凡任何音效軟件必需要支援 MP3, MP4 和 FLAC 那麼在 /etc/make.conf 加入以下一行

  1. OPTIONS_SET+=MP3 MP4 FLAC
复制代码
當編譯任何音效軟件時,她們都會直接選取 MP3, MP4, FLAC 關聯選項。你不必再費神每個 Ports 都 make config 選一次了。


如果想永遠不編譯某些元件,可以在 /etc/make.conf 使用 OPTIONS_UNSET= 語法。
例如永不編譯 KDE 則在 /etc/make.conf 加入一行

  1. OPTIONS_UNSET+=QT QT4 KDE KDE4
复制代码
所有會牽連的 Ports 都不再編譯 QT, KDE4 關聯倚賴

除了以上調整整個 ports tree 選項,optionsNG 也可以個別針對某一個 ports 的
例如所有都支援 X11,唯獨一個 emacs 不必支援 X11,那麼 /etc/make.conf 需要如下寫

  1. OPTIONS_SET+=X11
  2. emacs_UNSET+=X11
复制代码
利用 optionsNG 機制後,可以在 /etc/make.conf 加上一句

  1. NO_DIALOG=
复制代码
那麼煩人的 make config 對話盒不會再出現。

用過 gentoo portage USE flag 者應該比較易明白。

目前,可以查 /usr/ports/KNOBS 或 /usr/ports/Mk/bsd.options.desc.mk 看看有什麼可以選。

以下是我 9.1-RC2 + Intel KMS xfce 卓面使用 optionsNG 的 /etc/make.conf (2012 年 10 月 14 日)

  1. ##################################################
  2. ## 打開 PKGNG 支援
  3. ## 打開 Intel KMS 和  New Xorg 支援
  4. ## 關閉安全漏洞撿查
  5. ## 設定 Java, PostgreSQL and Perl 版本
  6. ## 設定用 ports 中的 openssl
  7. ##################################################
  8. KERNCONF=ACER1810TZ
  9. DIALOG="/usr/ports/Tools/scripts/dialogwrapper.sh"
  10. WITH_PKGNG=YES
  11. WITH_KMS=YES
  12. WITH_NEW_XORG=YES
  13. DISABLE_VULNERABILITIES=YES
  14. WITH_OPENSSL_PORT=YES
  15. WITH_GECKO=libxul libxul19
  16. JAVA_VENDOR=openjdk
  17. JAVA_VERSION=1.6
  18. DEFAULT_PGSQL_VER=91
  19. PERL_VERSION=5.14.2

  20. #######################################################
  21. ## 全域 optionsNG 選項 (順 A - Z 排序)
  22. #######################################################
  23. OPTIONS_SET+=ARCHIVE ALSA ASPELL AUDIOFILE AVAHI
  24. OPTIONS_SET+=BZIP2
  25. OPTIONS_SET+=CAIRO CDIO CJK COMPOSITE CUPS CURL
  26. OPTIONS_SET+=DBUS DEVD DOCS EMACS
  27. OPTIONS_SET+=FFMPEG FLAC FONTCONFIG FTP FUSE
  28. OPTIONS_SET+=GCONF GD GETEXT GHOSTSCRIPT GIF GLX GNOME GNOMEKEYRING GNOMEVFS2
  29. OPTIONS_SET+=GNUTLS GNUPG GRAPHVIZ GSSAPI GSTREAMER GTK2
  30. OPTIONS_SET+=HAL
  31. OPTIONS_SET+=ICONS ICONV ICU ID3 IDN IMAGEMAGICK IMAP IPV6
  32. OPTIONS_SET+=JAVA JPEG
  33. OPTIONS_SET+=LAME LIBEDIT LIBEV LIBEXIF LIBMNG LIBPAPER LUA
  34. OPTIONS_SET+=MAGICK MANPAGES MIXER MMX MP3 MP4 MPEG2 MPLAYER MULTIBYTE MUSEPACK
  35. OPTIONS_SET+=NLS NOTIFY
  36. OPTIONS_SET+=OGG OPENGL OPENSSL OSS
  37. OPTIONS_SET+=PAM PANGO PCRE PDF PERL PGSQL PNG POPPLER PROXY PRINT PTHREADS
  38. OPTIONS_SET+=PYTHON
  39. OPTIONS_SET+=QUOTA
  40. OPTIONS_SET+=RUBY
  41. OPTIONS_SET+=SASL SDL SIMD SMB SNDFILE SOUND SPEEX SQLITE3 SSH SSL SVG SVN
  42. OPTIONS_SET+=TCL TCLTK THEORA THREADS TIDY TIFF TK TLS
  43. OPTIONS_SET+=UCS4 UNZIP UTF8
  44. OPTIONS_SET+=VORBIS
  45. OPTIONS_SET+=WAV WAVEPACK
  46. OPTIONS_SET+=X11 XCURSOR XFT XPM XIM
  47. OPTIONS_SET+=ZLIB
  48. ###############################################################################
  49. OPTIONS_UNSET+=EXAMPLES
  50. OPTIONS_UNSET+=GTK1 GTK3
  51. OPTIONS_UNSET+=JACK
  52. OPTIONS_UNSET+=KDE KDE3 KDE4
  53. OPTIONS_UNSET+=MYSQL
  54. OPTIONS_UNSET+=PGO PROFILE PULSEAUDIO
  55. OPTIONS_UNSET+=QT4

  56. ##################################################
  57. ## 區域 libdrm 選項,打開支援 FreeBSD Intel KMS support
  58. ##################################################
  59. libdrm_SET+=KMS

  60. #######################################################
  61. ## 區域 xorg-drivers 選項,只安裝  mouse, keyboard, vesa and intel
  62. ## 4 項 xorg 驅動程式
  63. #######################################################
  64. xorg-drivers_SET+=INTEL MOUSE KEYBOARD VESA
  65. xorg-drivers_UNSET+=ATI MACH64 NV R128 RADEONHD OPENCHROME ACECAD ELOGRAPHICS
  66. xorg-drivers_UNSET+=HYPERPEN JOYSTICK MAGICTOUCH MUTOUCH PENMOUNT SYNAPTICS
  67. xorg-drivers_UNSET+=VMMOUSE VOID APM ARK CHIPS CIRRUS CYRIX DUMMY FBDEV
  68. xorg-drivers_UNSET+=GLINT I128 I740 IMSTT MGA NEOMAGIC NEWPORT RENDITION
  69. xorg-drivers_UNSET+=S3 S3VIRGE SAVAGE SILICONMOTION SIS TDFX TGA TRIDENT
  70. xorg-drivers_UNSET+=TSENG VIA VMWARE VOODOO

  71. #################################
  72. ## 區域 aspell 選擇,抵消 PTHREADS 對 aspell 作用
  73. #################################
  74. aspell_UNSET+=PTHREADS

  75. ################
  76. ## bsdconv 選項
  77. ################
  78. bsdconv_SET+=EXTRA

  79. ############################################
  80. ## GNU CLISP settings
  81. ############################################
  82. clisp_SET+=CLX_NEW DBUS GTK2 PCRE RAWSOCK WILDCARD ZLIB
  83. clisp_UNSET+=BDB CLX_MIT FASTCGI GDBM PGSQL SVM THREADS

  84. ##########################################
  85. ##  區域 cups 選項
  86. ##########################################
  87. cups-base_SET+=LIBPAPER XDG_OPEN
  88. cups-base_UNSET+=LDAP LIBUSB XPDF AVAHI MDNSRESPONDER

  89. #############################
  90. ## 區域 curl 選擇,抵消 GNUTLS 對 curl 作用
  91. #############################
  92. curl_UNSET+=GNUTLS

  93. ##############################
  94. ## 區域 ecl - Embeddable Common Lisp  選項
  95. ##############################
  96. ecl_SET+=ASDF CLX DFFI SOCKETS THREADS

  97. ###########################################################
  98. ## 區域 emacs 選項
  99. ###########################################################
  100. emacs_SET+=DBUS GIF JPEG M17N OTF PNG SOURCES SVG TIFF SYNC_INPUT SCROLLBARS
  101. emacs_SET+=XFT XIM MAGICK

  102. ##########################################
  103. ## 區域 evince 選項
  104. ##########################################
  105. evince_SET+=DBUS KEYRING
  106. evince_UNSET+=COMICS DVI DJVU IMPRESS NAUTILUS T1LIB


  107. #####################################################
  108. # 區域 firefox 選擇,注意 libxul , libxul19 需要與 firefox 保持一致, firefox 已改用 ALSA
  109. #####################################################
  110. firefox_SET+=GIO LOGGING
  111. firefox_UNSET+=GCONF GNOMEUI GNOMEVFS2 OSS
  112. libxul_SET+=GIO LOGGING
  113. libxul_UNSET+=GCONF GNOMEUI GNOMEVFS2 OSS
  114. libxul19_SET+=GIO LOGGING
  115. libxul19_UNSET+=GCONF GNOMEUI GNOMEVFS2 OSS

  116. #########################################################
  117. ## 區域 gimp 選項
  118. #########################################################
  119. gimp_SET+=PRINT HELP
  120. gimp_UNSET+=PYTHON
  121. gimp-app_SET+=AA DBUS EXIF GVFS HELPBROWSER MNG MP POPPLER RSVG SIMD WMF

  122. ##############################################
  123. ## 區域 libreoffice-i18n 選項,只安裝 en_US 和
  124. ## zh_TW 兩種語言介面
  125. ###############################################
  126. libreoffice_SET+=GNOME GTK2 JAVA MMEDIA PGSQL SDK
  127. libreoffice_UNSET+=DEBUG GTK3 KDE4 SYSTRAY WEBDAV
  128. libreoffice-i18n_UNSET+=ALL ar as ast be bg bn bo br brx bs ca ca_XV cs cy da
  129. libreoffice-i18n_UNSET+=de dgo dz el en_GB en_ZA eo es et eu fa fi fr ga gd gl
  130. libreoffice-i18n_UNSET+=gu he hi hr hu id is it ja ka kk km kn ko kok ks ku lb
  131. libreoffice-i18n_UNSET+=lo lt lv mai mk ml mn mni mr my nb ne nl nn nr nso oc
  132. libreoffice-i18n_UNSET+=oc om or pa_IN pl pt pt_BR ro ru rw sa_IN sat sd sh si
  133. libreoffice-i18n_UNSET+=sk sl sq sr ss st sv sw_TZ ta te tg th tn tr ts tt ug
  134. libreoffice-i18n_SET+=zh_CN zh_TW

  135. ####################################
  136. ## 區域 mplayer 選項,關閉預設使用 GCC 4.6 編譯
  137. ## 改為使用 base 的 GCC 4.2.1 編譯,增加支援 webcam
  138. ####################################
  139. mplayer_SET+=V4L
  140. mplayer_UNSET+=OTCHAIN

  141. #####################
  142. ## 區域 sbcl 選項
  143. #####################
  144. sbcl_UNSET+=SBCL THREADS

  145. ############################################################
  146. ## 區域 subversion 選項
  147. ############################################################
  148. subversion_SET+=P4_STYLE_MARKERS ENHANCED_KEYWORD FREEBSD_TEMPLATE NEON BDB
  149. subversion_SET+=GNOME_KEYRING
  150. subversion_UNSET+=MOD_DAV_SVN MOD_DONTDOTHAT SERF SASL MAINTAINER_DEBUG
  151. subversion_UNSET+=SVNSERVE_WRAPPER SVNAUTHZ_VALIDATE STATIC KDE_KWALLET BOOK
  152. subversion_UNSET+=TEST

  153. ############################################################
  154. ## 區域 Thunderbird 選項
  155. ############################################################
  156. thunderbird_SET+=ALSA DBUS GCONF GIO GNOME GNOMEUI GSTREAMER GTK2 LOGGING
  157. thunderbird_UNSET+=DEBUG GNOMEVFS2 LIGHTNING LIBPROXY OPTIMIZED_CFLAGS OSS
  158. thunderbird_UNSET+=PULSEAUDIO QT4

  159. #################################
  160. ## 區域 xchat 選項
  161. #################################
  162. xchat_SET+=DBUS NOTIFY PERL PYTHON SOCKS
  163. xchat_UNSET+=GTKSPELL LIBSEXY TCL

  164. ##########################
  165. ## 區域 xfce4-print 選項
  166. ##########################
  167. xfce4-print_UNSET+=LPR

  168. ############################
  169. ## 區域 xterm 選項
  170. ############################
  171. xterm_SET+=WCHAR LUIT PCRE GNOME

复制代码
啟導文章,請看http://blog.etoilebsd.net/post/New_options_framework_in_what_next
作者: fender0107401    时间: 2012-08-17 08:16
ports系统的确是需要这个改进,如果能成功的引入这个特性,那么FreeBSD几乎就是一个完美的操作系统了。
作者: fender0107401    时间: 2012-08-17 08:18
希望在未来,所有的ports tree的维护者都把自己维护的那个部分添加对这个东西的支持。

我猜这个东西是需要相关维护者的支持的,可能需要改写某些Makefile。
作者: fender0107401    时间: 2012-08-17 08:19
而且我们需要每个option的文字解释,最好详细一点。
作者: fender0107401    时间: 2012-08-17 08:31
http://wiki.freebsd.org/Ports/Options/OptionsNG
作者: zeissoctopus    时间: 2012-08-17 08:38
fender0107401 发表于 2012-08-17 08:18
希望在未来,所有的ports tree的维护者都把自己维护的那个部分添加对这个东西的支持。

我猜这个东西是需 ...


版主說得對,這需要所有 Ports 維護者各自重新學習,因此轉變還在進行中。
作者: fender0107401    时间: 2012-08-17 08:43
回复 6# zeissoctopus

我看了一下,貌似不需要改的太多,应该可以很快实现的。
作者: zeissoctopus    时间: 2012-08-17 08:59
對,另外  /etc/make.conf 是可以寫成

  1. OPTIONS_SET=X11 GNOME GTK2 PNG
  2. OPTIONS_UNSET=QT QT4 KDE KDE4
复制代码


我也未完成掌握它,要再學習和測試多幾天
作者: ulovko    时间: 2012-08-17 09:03
给力! 很方便 ^_^
作者: OpenBSD5    时间: 2012-08-17 11:00
的确是个好消息
作者: zeissoctopus    时间: 2012-08-17 23:50
本帖最后由 zeissoctopus 于 2012-08-17 23:51 编辑

經網友指教及閱讀網上文章,已修正 /etc/make.conf 有關語法,並在範例 /etc/make.conf 加入少許註解,方便有興趣者發挖 FreeBSD 新點子 optionsNG 的魅力。
作者: ulovko    时间: 2012-08-18 11:05
zeissoctopus 发表于 2012-08-17 23:50
經網友指教及閱讀網上文章,已修正 /etc/make.conf 有關語法,並在範例 /etc/make.conf 加入少許註解,方便 ...

^_^
作者: lemoncandy    时间: 2012-08-22 08:48
感谢分享啊,非常棒的内容啊,兄弟用的是繁体的啊
作者: ulovko    时间: 2012-08-22 09:31
回复 13# lemoncandy


    楼主是 香港人 ^_^
作者: lemoncandy    时间: 2012-08-23 12:59
ulovko 发表于 2012-08-22 09:31
回复 13# lemoncandy
原来是港澳同胞 啊
作者: zeissoctopus    时间: 2012-08-23 21:44
lemoncandy 发表于 2012-08-23 12:59
原来是港澳同胞 啊


咱們都是中國人
作者: obsd178    时间: 2012-08-29 09:09
zeissoctopus 发表于 2012-08-23 21:44
咱們都是中國人

我也是中国人 我爱你楼主
作者: OpenBSD5    时间: 2012-08-29 09:13
向楼主学习呀,楼主厉害!
作者: lemoncandy    时间: 2012-08-29 11:27
OpenBSD5 发表于 2012-08-29 09:13
向楼主学习呀,楼主厉害!


签名档里的那个网站访问不了啊,啥情况啊?
作者: ulovko    时间: 2012-08-29 11:29
本帖最后由 ulovko 于 2012-08-29 11:30 编辑

@lemoncandy

http://bbs.chinaunix.net/forum.p ... mp;fromuid=25256412
作者: lemoncandy    时间: 2012-08-29 11:40
ulovko 发表于 2012-08-29 11:29
@lemoncandy

http://bbs.chinaunix.net/forum.p ... 1933&pid=221563 ...


肉身 fanqiang,都是关键字被屏蔽啊!
作者: ulovko    时间: 2012-08-29 12:31
回复 21# lemoncandy


    哈哈 ^_^
作者: OpenBSD5    时间: 2012-08-29 12:38
回复 19# lemoncandy


    被黑了?
作者: obsd178    时间: 2012-08-31 15:46
不错的改变
作者: 方兆国儿    时间: 2012-09-16 19:41
这个可比WITH方便多了一目了然
作者: zeissoctopus    时间: 2012-10-14 00:30
為迎接  FreeBSD 9.1-RELEASE 來臨,近日已把二部筆電昇級為 9.1-RC2,順便把 /etc/make.conf 整理一下。

整理後的 /etc/make.conf 放在本貼的 #1
作者: ulovko    时间: 2012-10-14 07:27
zeissoctopus 发表于 2012-10-14 00:30
為迎接  FreeBSD 9.1-RELEASE 來臨,近日已把二部筆電昇級為 9.1-RC2,順便把 /etc/make.conf 整理一下。
...

感谢整理,辛苦了! ^_^
作者: kisswen    时间: 2012-10-14 11:03


好消息啊
以前ports编译的时候确实劳心 啊
作者: wolf_london    时间: 2012-10-14 21:34
NetBSD的pkgsrc早已采用此功能,比Gentoo还早(未曾考证)?
作者: zeissoctopus    时间: 2012-12-10 01:49
wolf_london 发表于 2012-10-14 21:34
NetBSD的pkgsrc早已采用此功能,比Gentoo还早(未曾考证)?


FreeBSD 裡有很多東西都是由 NetBSD, OpenBSD 移植過來。

NetBSD 6.0 的新點子 npf 防火牆(號稱有效善用多核處理器,高度模組化的高速防火牆),我也希望它早日移植入 FreeBSD。
作者: guy_1    时间: 2012-12-10 16:24
fender0107401 发表于 2012-08-17 08:16
ports系统的确是需要这个改进,如果能成功的引入这个特性,那么FreeBSD几乎就是一个完美的操作系统了。

我觉得FreeBSD现在引进这个pkgng非常好,很和debian的包管理机制相似,这样给了用户一个不错的选择,我一个朋友一直没有使用freebsd的原因就是比较怕ports。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2