FreeBSD下的更新

前言

在日常的服务器使用过程中,虽然一直推荐不要对配置好的服务器进行过多操作,但这样的说法显然是不适用于安全类操作的,而安全类操作中的重要一环就是安全更新。

无论是系统的安全补丁,还是软件的安全补丁,都需要通过管理员手动来进行更新,系统并不会自动给管理员更新的,就算配置了自动任务,也是非常不推荐的一种做法,因为管理员无法清晰的知道系统究竟更新了什么东西?

而对于Linux类的系统来说,系统与软件的更新是一件很简单的事情,比如CentOS的yum update,Debian、Ubuntu的apt-get update等。

那么,FreeBSD是否也有类似的更新命令,能够一条命令更新系统与软件呢?额,非常抱歉,答案是没有!

FreeBSD对于更新的处理,是不同的类型对应不同的更新,也就是系统是系统,软件是软件,要更新系统需要运行系统更新命令,要更新软件需要运行软件更新命令。

系统更新

FreeBSD的系统更新较为简单,总计两条命令:

freebsd-update fetch
freebsd-update install

第一条freebsd-update fetch是获取当前系统版本的重大及次要更新内容,第二条freebsd-update install则是对更新进行安装,安装完成后,一般会要求重启系统,直接运行reboot或者shutdown -r now都可以,而且在重启之前要注意观察下,是否要求重启后再次运行freebsd-update install,若需要,那在重启后再次运行一遍freebsd-update install即可,不放心的可以一直重启运行重启运行,直到提示没有任何安全为止。

不过,这两条命令运行后,仅是当前版本的更新,什么意思呢?比如当前FreeBSD版本是11.1,那么只会更新为11.1 - 11.1-p1 ...... 11.1-p15这样的,并不会更新到11.2,若我们需要更新到更高的版本,要如何操作呢?

freebsd-update upgrade -r 11.2-RELEASE
freebsd-update install

也就是将第一条命令更改以下,直接指定要更新的版本号,这样的话,就能对系统的版本进行更新,同样的,在运行完第二条命令后也会要求重启,重启后同样要求再次运行install

而对于版本更新,需要注意一个问题,就是FreeBSD并不支持跨大版本更新,所谓的跨大版本更新,比如当前所使用的FreeBSD版本为11.0,而大版本11之中是包含了11.011.111.2,在大版本11之后,有全新的大版本12.0

此时,若直接运行:

freebsd-update upgrade -r 12.0-RELEASE

这样是不行的,正确的做法是,首先更新到11版本的最后一个版本,也就是11.2

freebsd-update upgrade -r 11.2-RELEASE
freebsd-update install
......
freebsd-update upgrade -r 12.0-RELEASE
freebsd-update install
......

FreeBSD支持同大版本内的跨小版本更新,但不支持跨大版本更新,这里一定要注意。

pkg更新

pkg是一个FreeBSD的命令,与CentOS的yum、Debian的apt类似,通过pkg可以将官方提供的打包好的二进制软件直接进行快速安装,避免了编译的繁琐与费时。

pkg更新命令为:

pkg update
pkg upgrade

第一条命令为更新当前pkg索引,第二条命令则是更新通过pkg安装的所有软件。

ports更新

ports是FreeBSD系统中一个非常重要的工具,重要程度甚至大于pkg,而两个工具都是属于软件安装使用,区别就是pkg是安装二进制软件,ports则是通过源码编译安装软件。

pkg对于安装的软件,基本上是没有什么自主权的,无法对软件安装作出设定,比如nginx的安装,咱们是无法对其安装的第三方扩展进行指定的,而ports则不同,ports是一个目录树,其中存放着官方所指定的所有软件索引,通过ports,可以轻松的对所安装的软件进行配置、编译、安装,并会自动编译、安装所需的依赖库。

ports树更新

ports的更新,首先需要对ports树索引进行更新,更新分两种情况,第一种是首次更新:

portsnap fetch extract
portsnap update

第二种情况则是已经执行过首次更新后:

portsnap fetch update

portmaster

ports的更新可以使用两个工具,一个是portmaster,另一个是portupgrade,这里先介绍portmaster。

使用前,需要安装portmaster:

cd /usr/ports/ports-mgmt/portmaster
make install clean

安装完成后,检查当前ports是否有可更新程序:

portmaster -L

更新所有可更新程序:

portmaster -a

若在更新过程中出现错误,可以使用以下命令来升级并重新编译:

portmaster -af

portupgrade

portupgrade同样是一款可用于更新ports的工具,不过它依赖于ruby,在安装时会同时安装ruby。

使用前同样需要进行安装:

cd /usr/ports/ports-mgmt/portupgrade
make install clean

执行更新:

portupgrade -ai

参数a是指所有,参数i则是在更新时进行询问。

最后修改:2019 年 04 月 27 日 07 : 50 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论

2 条评论

  1. 夏目贵志

    感觉用FreeBSD 当服务器的都是大佬

    因为我是完全不懂的用 linux 也一样 不过FreeBSD 稳定性 没得说

    1. 康康
      @夏目贵志

      别这样说啊,哪里来的大佬,只是使用的系统不同而已,永Linux一样可以完成相应的操作,而且Linux比FreeBSD的支持要好很多,最主要是,现在的Linux其实稳定性与FreeBSD比也没差多少了