<< Back to man.ChinaUnix.net

15.12 PREFIX

不要让你的port依赖于特定的PREFIX(这个变量设置为LOCALBASE,缺省为/usr/local),除非你设置了USE_X_PREFIX或UES_IMAKE,这时PREFIX指X11BASE,缺省为/usr/X11R6.

没有硬性的代码一定要安装到/usr/local或/usr/X11R6可以使你的port更加的通用,对于X的port如果使用imake这是自动完成的;否则你应该修改scripts下的Makefile让他读取PREFIX,并且使他在编译和安装的阶段生效.

确定你的port没有将文件安装到/usr/local而不是PREFIX的一个简单的测试方法:

    # make clean; make package PREFIX=/var/tmp/port-name

如果有文件安装在PREFIX之外,在打包时会有文件找不到的错误..

不要设置USE_X_PREFIX(除非你的port真的一定依赖他)

PREFIX应该可以被使用者重新设置,而不应该显式的在你的Makefiles中明确定义

同样,如果你的port使用了其他port的的文件.不要显式的定义完整路径.举个例子,如果你要使用less的PAGER宏.可以使用下面的编译参数.

    -DPAGER=\"${PREFIX}/bin/less\"
    -DPAGER=\"${LOCALBASE}/bin/less\"

这样当系统的管理者将/usr/local目录树完整的移动到其他地方并重新定义了PREFIX时,你的port照样可以运行.