当我从FreeBSD系统的ports安装软件的时候,有些过时的版本的Apache / MySQL / Perl / etc被安装为依赖关系。 有没有办法预先设置这些端口的版本,以便如果需要的话,端口系统会select一个合适的版本?
您可以在/usr/ports/Mk/bsd.*.mk查找相应的variables,并将其设置在/etc/make.conf 。 但是只安装这些软件的需要版本并且继续其他任何东西是比较安全的。
例如:
DEFAULT_VERSIONS= perl5=5.18 ruby=2.0
在你的/etc/make.conf中
这些信息来自/usr/ports/Mk/bsd.default-versions.mk
# $FreeBSD: head/Mk/bsd.default-versions.mk 345909 2014-02-25 00:32:09Z gerald $ # # MAINTAINER: [email protected] # # Provide default versions for ports with multiple versions selectable # by the user. # # Users who want to override these defaults can easily do so by defining # DEFAULT_VERSIONS in their make.conf as follows: # # DEFAULT_VERSIONS= perl5=5.18 ruby=2.0 .if !defined(_INCLUDE_BSD_DEFAULT_VERSIONS_MK) _INCLUDE_BSD_DEFAULT_VERSIONS_MK= yes .for lang in ${DEFAULT_VERSIONS} _l= ${lang:C/=.*//g} ${_l:U}_DEFAULT= ${lang:C/.*=//g} .endfor APACHE_DEFAULT?= 2.2 FPC_DEFAULT?= 2.6.2 GCC_DEFAULT?= 4.6 LUA_DEFAULT?= 5.2 MYSQL_DEFAULT?= 5.5 PERL5_DEFAULT?= 5.16 PGSQL_DEFAULT?= 9.0 PHP_DEFAULT?= 5.4 PYTHON_DEFAULT?= 2.7 PYTHON2_DEFAULT?= 2.7 PYTHON3_DEFAULT?= 3.3 RUBY_DEFAULT?= 1.9 TCLTK_DEFAULT?= 8.6 .endif
端口的版本是端口维护者已经构build和testing的版本(并且通过端口tinderbox进行例行testing) – 我不知道任何有版本旋钮的端口,尽pipe你可以find多个树中某些端口的版本(例如,PostgreSQL的版本从7.3到9.0)。
您可以手动安装这些端口的较新版本(如果它们合适的话),它们将被视为依赖关系并被其他端口使用。
端口升级的一般答案是,如果你想要一个比在树中的端口更新的版本,你可以创build并提交一个补丁来更新端口 (通过FreeBSD Porter的手册可能是一个好主意,以及如何在ports树中工作)。
如果您的较新版本引入了不兼容的更改,则应该为其创build一个新端口(可以使用旧版本作为框架)。