用非标准参数编译(定制)pkgsrc里的软件
类似于ports中的“make config”和“make config-recursive”命令,pkgsrc也有“make show-options”命令可以做到显示和间接配置编译参数的作用
在任一pkgsrc软件目录下,用
code:
make show-options
命令即可得到此软件支持的所有编译参数、默认参数、目前编译时所用参数
如果我们想修改默认编译参数的话就在“make”后面、要执行的操作(例如:show-options、install、package……)前面加上
code:
PKG_OPTIONS.packagename="options1 options2…… -options1 -options2……" #其中packagename即为此软件包在pkgsrc里的名字(就是目录名),options1、options2……即为可选参数。注意“-”号
即如
code:
make PKG_OPTIONS.packagename="options1 options2…… -options1 -options2……" show-options
make PKG_OPTIONS.packagename="options1 options2…… -options1 -options2……" install clean clean-depends
make PKG_OPTIONS.packagename="options1 options2…… -options1 -options2……" package
以inputmethod/uim为例
cd /usr/pgksrc/inputmethod/uim
make show-options
得到如下信息显示
code: Any of the following general options may be selected:
anthy Use Anthy as Japanese conversion program.
canna Use Canna as Japanese conversion program.
eb Enable EB dictionary library support.
gtk Enable support for GTK.
qt
These options are enabled by default: anthy canna gtk
These options are currently enabled: anthy canna gtk
表示此软件包默认的编译参数是“anthy canna gtk”,当前的编译参数是“anthy canna gtk”,所有可用的编译参数是“anthy canna eb gtk qt”。如果要改变编译参数的话就
make PKG_OPTIONS.uim="qt -canna" install
这就会在默认参数的基础上去掉“canna”支持,并添加“qt”的支持。此时软件的所用编译参数就会变为“anthy gtk qt”。如果你想确认一下的话,就可以用
make PKG_OPTIONS.uim="qt -canna" show-options
来查看
“PKG_OPTIONS.packagename”变量用于对单个软件指定编译参数。如果想对pkgsrc里的所有支持同一参数的软件都使用某个参数的话,可以使用“PKG_DEFAULT_OPTIONS”变量。具体用法类似“PKG_OPTIONS.packagename”
即如
code:
make PKG_DEFAULT_OPTIONS+="options1 options2…… -options1 -options2……" show-options
make PKG_DEFAULT_OPTIONS+="options1 options2…… -options1 -options2……" install
make PKG_DEFAULT_OPTIONS+="options1 options2…… -options1 -options2……" package
因为此变量是针对pkgsrc里所有软件,所以一般都是写进mk.conf,而不在命令行里单独使用。但是如何使用还在于个人选择,我只是提供一点小看法
同样,类似于ports可在make.conf添加“WITH_DVD=yes”之类参数类似。pkgsrc也可在mk.conf添加预定制参数,避免每次编译此软件时都手工输入PKG_OPTIONS.packagename="options1 options2…… -options1 -options2……"
如果想对pkgsrc里的某一软件使用某个参数的话。就在mk.conf里添加
code:
PKG_OPTIONS.packagename=options1 options2…… -options1 -options2…… #其中packagename即为此软件包在pkgsrc里的名字(就是目录名),options1、options2……即为可选参数。注意“-”号
例如,我想在编译wget时去掉ipv6的支持,以及支持ssl。就在mk.conf里添加
code:
PKG_OPTIONS.wget=-inet6 ssl #此处的“=”表示只使用此参数,忽略系统默认设置。如果只是想在默认的基础做增减,但并不完全取代的话,请用“+=”
如上所述,如果想对pkgsrc里的所有支持同一参数的软件都使用某个参数的话。就在mk.conf里添加
code:
PKG_DEFAULT_OPTIONS+=options1 options2…… -options1 -options2…… #此处建议使用“+=”
例如,我想让所有支持用户可定制选项的软件都不编译ipv6的支持和debug的支持,就在mk.conf里添加
code:
PKG_DEFAULT_OPTIONS+=-inet6 -debug #此处建议使用“+=”
当然,并非所有软件都有选项可以订制。只有部分支持用户可定制选项的软件可通过此法定制
所有参数以及详细解释可以在/usr/pkgsrc/mk/defaults/options.description里找到。当然,更好的选择是在要安装的软件的目录下执行“make show-options”,以便确定所有可用参数
关于“=”“+=”“?=”的具体区别和意义请参阅相关文档