【经验分享】有關 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 加入以下一行
OPTIONS_SET+=MP3 MP4 FLAC
當編譯任何音效軟件時,她們都會直接選取 MP3, MP4, FLAC 關聯選項。你不必再費神每個 Ports 都 make config 選一次了。
如果想永遠不編譯某些元件,可以在 /etc/make.conf 使用 OPTIONS_UNSET= 語法。
例如永不編譯 KDE 則在 /etc/make.conf 加入一行
OPTIONS_UNSET+=QT QT4 KDE KDE4
所有會牽連的 Ports 都不再編譯 QT, KDE4 關聯倚賴
除了以上調整整個 ports tree 選項,optionsNG 也可以個別針對某一個 ports 的
例如所有都支援 X11,唯獨一個 emacs 不必支援 X11,那麼 /etc/make.conf 需要如下寫
OPTIONS_SET+=X11
emacs_UNSET+=X11
利用 optionsNG 機制後,可以在 /etc/make.conf 加上一句
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 日)
##################################################
## 打開 PKGNG 支援
## 打開 Intel KMS 和New Xorg 支援
## 關閉安全漏洞撿查
## 設定 Java, PostgreSQL and Perl 版本
## 設定用 ports 中的 openssl
##################################################
KERNCONF=ACER1810TZ
DIALOG="/usr/ports/Tools/scripts/dialogwrapper.sh"
WITH_PKGNG=YES
WITH_KMS=YES
WITH_NEW_XORG=YES
DISABLE_VULNERABILITIES=YES
WITH_OPENSSL_PORT=YES
WITH_GECKO=libxul libxul19
JAVA_VENDOR=openjdk
JAVA_VERSION=1.6
DEFAULT_PGSQL_VER=91
PERL_VERSION=5.14.2
#######################################################
## 全域 optionsNG 選項 (順 A - Z 排序)
#######################################################
OPTIONS_SET+=ARCHIVE ALSA ASPELL AUDIOFILE AVAHI
OPTIONS_SET+=BZIP2
OPTIONS_SET+=CAIRO CDIO CJK COMPOSITE CUPS CURL
OPTIONS_SET+=DBUS DEVD DOCS EMACS
OPTIONS_SET+=FFMPEG FLAC FONTCONFIG FTP FUSE
OPTIONS_SET+=GCONF GD GETEXT GHOSTSCRIPT GIF GLX GNOME GNOMEKEYRING GNOMEVFS2
OPTIONS_SET+=GNUTLS GNUPG GRAPHVIZ GSSAPI GSTREAMER GTK2
OPTIONS_SET+=HAL
OPTIONS_SET+=ICONS ICONV ICU ID3 IDN IMAGEMAGICK IMAP IPV6
OPTIONS_SET+=JAVA JPEG
OPTIONS_SET+=LAME LIBEDIT LIBEV LIBEXIF LIBMNG LIBPAPER LUA
OPTIONS_SET+=MAGICK MANPAGES MIXER MMX MP3 MP4 MPEG2 MPLAYER MULTIBYTE MUSEPACK
OPTIONS_SET+=NLS NOTIFY
OPTIONS_SET+=OGG OPENGL OPENSSL OSS
OPTIONS_SET+=PAM PANGO PCRE PDF PERL PGSQL PNG POPPLER PROXY PRINT PTHREADS
OPTIONS_SET+=PYTHON
OPTIONS_SET+=QUOTA
OPTIONS_SET+=RUBY
OPTIONS_SET+=SASL SDL SIMD SMB SNDFILE SOUND SPEEX SQLITE3 SSH SSL SVG SVN
OPTIONS_SET+=TCL TCLTK THEORA THREADS TIDY TIFF TK TLS
OPTIONS_SET+=UCS4 UNZIP UTF8
OPTIONS_SET+=VORBIS
OPTIONS_SET+=WAV WAVEPACK
OPTIONS_SET+=X11 XCURSOR XFT XPM XIM
OPTIONS_SET+=ZLIB
###############################################################################
OPTIONS_UNSET+=EXAMPLES
OPTIONS_UNSET+=GTK1 GTK3
OPTIONS_UNSET+=JACK
OPTIONS_UNSET+=KDE KDE3 KDE4
OPTIONS_UNSET+=MYSQL
OPTIONS_UNSET+=PGO PROFILE PULSEAUDIO
OPTIONS_UNSET+=QT4
##################################################
## 區域 libdrm 選項,打開支援 FreeBSD Intel KMS support
##################################################
libdrm_SET+=KMS
#######################################################
## 區域 xorg-drivers 選項,只安裝mouse, keyboard, vesa and intel
## 4 項 xorg 驅動程式
#######################################################
xorg-drivers_SET+=INTEL MOUSE KEYBOARD VESA
xorg-drivers_UNSET+=ATI MACH64 NV R128 RADEONHD OPENCHROME ACECAD ELOGRAPHICS
xorg-drivers_UNSET+=HYPERPEN JOYSTICK MAGICTOUCH MUTOUCH PENMOUNT SYNAPTICS
xorg-drivers_UNSET+=VMMOUSE VOID APM ARK CHIPS CIRRUS CYRIX DUMMY FBDEV
xorg-drivers_UNSET+=GLINT I128 I740 IMSTT MGA NEOMAGIC NEWPORT RENDITION
xorg-drivers_UNSET+=S3 S3VIRGE SAVAGE SILICONMOTION SIS TDFX TGA TRIDENT
xorg-drivers_UNSET+=TSENG VIA VMWARE VOODOO
#################################
## 區域 aspell 選擇,抵消 PTHREADS 對 aspell 作用
#################################
aspell_UNSET+=PTHREADS
################
## bsdconv 選項
################
bsdconv_SET+=EXTRA
############################################
## GNU CLISP settings
############################################
clisp_SET+=CLX_NEW DBUS GTK2 PCRE RAWSOCK WILDCARD ZLIB
clisp_UNSET+=BDB CLX_MIT FASTCGI GDBM PGSQL SVM THREADS
##########################################
##區域 cups 選項
##########################################
cups-base_SET+=LIBPAPER XDG_OPEN
cups-base_UNSET+=LDAP LIBUSB XPDF AVAHI MDNSRESPONDER
#############################
## 區域 curl 選擇,抵消 GNUTLS 對 curl 作用
#############################
curl_UNSET+=GNUTLS
##############################
## 區域 ecl - Embeddable Common Lisp選項
##############################
ecl_SET+=ASDF CLX DFFI SOCKETS THREADS
###########################################################
## 區域 emacs 選項
###########################################################
emacs_SET+=DBUS GIF JPEG M17N OTF PNG SOURCES SVG TIFF SYNC_INPUT SCROLLBARS
emacs_SET+=XFT XIM MAGICK
##########################################
## 區域 evince 選項
##########################################
evince_SET+=DBUS KEYRING
evince_UNSET+=COMICS DVI DJVU IMPRESS NAUTILUS T1LIB
#####################################################
# 區域 firefox 選擇,注意 libxul , libxul19 需要與 firefox 保持一致, firefox 已改用 ALSA
#####################################################
firefox_SET+=GIO LOGGING
firefox_UNSET+=GCONF GNOMEUI GNOMEVFS2 OSS
libxul_SET+=GIO LOGGING
libxul_UNSET+=GCONF GNOMEUI GNOMEVFS2 OSS
libxul19_SET+=GIO LOGGING
libxul19_UNSET+=GCONF GNOMEUI GNOMEVFS2 OSS
#########################################################
## 區域 gimp 選項
#########################################################
gimp_SET+=PRINT HELP
gimp_UNSET+=PYTHON
gimp-app_SET+=AA DBUS EXIF GVFS HELPBROWSER MNG MP POPPLER RSVG SIMD WMF
##############################################
## 區域 libreoffice-i18n 選項,只安裝 en_US 和
## zh_TW 兩種語言介面
###############################################
libreoffice_SET+=GNOME GTK2 JAVA MMEDIA PGSQL SDK
libreoffice_UNSET+=DEBUG GTK3 KDE4 SYSTRAY WEBDAV
libreoffice-i18n_UNSET+=ALL ar as ast be bg bn bo br brx bs ca ca_XV cs cy da
libreoffice-i18n_UNSET+=de dgo dz el en_GB en_ZA eo es et eu fa fi fr ga gd gl
libreoffice-i18n_UNSET+=gu he hi hr hu id is it ja ka kk km kn ko kok ks ku lb
libreoffice-i18n_UNSET+=lo lt lv mai mk ml mn mni mr my nb ne nl nn nr nso oc
libreoffice-i18n_UNSET+=oc om or pa_IN pl pt pt_BR ro ru rw sa_IN sat sd sh si
libreoffice-i18n_UNSET+=sk sl sq sr ss st sv sw_TZ ta te tg th tn tr ts tt ug
libreoffice-i18n_SET+=zh_CN zh_TW
####################################
## 區域 mplayer 選項,關閉預設使用 GCC 4.6 編譯
## 改為使用 base 的 GCC 4.2.1 編譯,增加支援 webcam
####################################
mplayer_SET+=V4L
mplayer_UNSET+=OTCHAIN
#####################
## 區域 sbcl 選項
#####################
sbcl_UNSET+=SBCL THREADS
############################################################
## 區域 subversion 選項
############################################################
subversion_SET+=P4_STYLE_MARKERS ENHANCED_KEYWORD FREEBSD_TEMPLATE NEON BDB
subversion_SET+=GNOME_KEYRING
subversion_UNSET+=MOD_DAV_SVN MOD_DONTDOTHAT SERF SASL MAINTAINER_DEBUG
subversion_UNSET+=SVNSERVE_WRAPPER SVNAUTHZ_VALIDATE STATIC KDE_KWALLET BOOK
subversion_UNSET+=TEST
############################################################
## 區域 Thunderbird 選項
############################################################
thunderbird_SET+=ALSA DBUS GCONF GIO GNOME GNOMEUI GSTREAMER GTK2 LOGGING
thunderbird_UNSET+=DEBUG GNOMEVFS2 LIGHTNING LIBPROXY OPTIMIZED_CFLAGS OSS
thunderbird_UNSET+=PULSEAUDIO QT4
#################################
## 區域 xchat 選項
#################################
xchat_SET+=DBUS NOTIFY PERL PYTHON SOCKS
xchat_UNSET+=GTKSPELL LIBSEXY TCL
##########################
## 區域 xfce4-print 選項
##########################
xfce4-print_UNSET+=LPR
############################
## 區域 xterm 選項
############################
xterm_SET+=WCHAR LUIT PCRE GNOME
啟導文章,請看http://blog.etoilebsd.net/post/New_options_framework_in_what_next ports系统的确是需要这个改进,如果能成功的引入这个特性,那么FreeBSD几乎就是一个完美的操作系统了。 希望在未来,所有的ports tree的维护者都把自己维护的那个部分添加对这个东西的支持。
我猜这个东西是需要相关维护者的支持的,可能需要改写某些Makefile。 而且我们需要每个option的文字解释,最好详细一点。 http://wiki.freebsd.org/Ports/Options/OptionsNG fender0107401 发表于 2012-08-17 08:18 static/image/common/back.gif
希望在未来,所有的ports tree的维护者都把自己维护的那个部分添加对这个东西的支持。
我猜这个东西是需 ...
版主說得對,這需要所有 Ports 維護者各自重新學習,因此轉變還在進行中。 回复 6# zeissoctopus
我看了一下,貌似不需要改的太多,应该可以很快实现的。 對,另外/etc/make.conf 是可以寫成
OPTIONS_SET=X11 GNOME GTK2 PNG
OPTIONS_UNSET=QT QT4 KDE KDE4
我也未完成掌握它,要再學習和測試多幾天 给力! 很方便 ^_^ 的确是个好消息:time::time::time: