简介基本的FreeBSD维护

当给予的FreeBSD服务器,了解基本的维护程序,这将帮助你保持你的服务器在良好的状态是非常重要的。在本指南中,我们将覆盖,让您的服务器最多最新的,功能正常所需的基本步骤。我们...

介绍

当管理FreeBSD服务器时,重要的是要了解基本的维护过程,这将有助于保持您的系统良好的形状。

在本指南中,我们将介绍使服务器保持最新和正常运行所需的基本过程。 我们将介绍如何更新FreeBSD团队维护的基本操作系统。 我们还将讨论如何更新和维护通过端口或包系统安装的可选软件。

如果您需要帮助入门FreeBSD的,按照我们的指南这里

更新基本FreeBSD操作系统

使用FreeBSD时需要注意的一件重要事情是,基本操作系统是与系统上的其他软件分开构建和管理的。 这提供了许多好处,并允许FreeBSD团队仔细测试和开发系统的核心功能。

注意 :请阅读注意事项在继续之前关于当前更新过程中的错误本节的底部。

当您开始使用服务器时,很有可能安全更新已发布到基本系统。 要查询FreeBSD项目的服务器以获取这些更新,请下载任何新文件,并将它们安装在系统上,键入以下命令:

sudo freebsd-update fetch install

如果你正在掀起了DigitalOcean FreeBSD安装的, sudo默认情况下包括在内。 如果你使用的是其他平台,您可能需要安装sudo通过端口系统或包或su根。

freebsd-update命令是在基本操作系统的软件管理工具。 fetch子下载新的更新,而install子并将其应用于实时系统。

如果有更新,您将看到受更新影响的软件列表。 您可以使用向下箭头或通过空格键翻页。 一旦到达列表底部,将应用更新。

任何已更新的长期运行的软件将需要重新启动以使用新版本。 如果您看到内核的任何更新,将需要重新启动以防止奇怪的行为。 您可以输入以下命令:

sudo shutdown -r now

重要:更新过程中出现错误

目前,与FreeBSD的更新过程上游的bug正在处理在这里 该错误导致更新过程后系统重新启动的挂起。

有两种方法来处理这种情况,第二种在大多数情况下是优选的。

第一种是简单地使用DigitalOcean控制面板强制电源循环到服务器。 这将导致强制和不正当地重新启动服务器,但是当您启动备份时,它将使用更新的环境。

一种更安全的替代方法是在更新之前禁用软更新或记录文件系统上的软更新。 软更新是问题的核心,因此这将防止重新启动挂起。 这是一个更大的过程,并将增加一些时间您的磁盘需要在将来的任何恢复(直到您重新启用这些功能)。

为此,在应用任何更新之前,请引导到单用户模式。 您可以输入以下命令:

sudo nextboot -o "-s" -k kernel
sudo reboot

接下来,进入您的Droplet的DigitalOcean控制面板,然后单击“控制台访问”按钮进入Web控制台。 当引导完成以获得一个rescue shell会话时,按“Enter”。 从这里,您可以关闭软更新或软更新日志。

要完全禁用软更新,请键入:

tunefs -n disable /

如果你只想禁用软更新日志,一个不太剧烈的折中,你可以使用这个命令:

tunefs -j disable /

完成此操作后,可以重新启动以在完全多用户模式下重新启动服务器:

reboot

引导完成后,您可以使用上述过程提取和应用FreeBSD更新,而无需重新引导挂起。

我们建议您保持对眼睛的bug报告 ,这样,当上游的修复程序可用,你可以恢复这些变化。

自动更新检查

它可以配置你的系统会自动通过建立日常检查这些安全补丁cron作业。 freebsd-update实用程序有一个特殊cron子命令可用专门用于这一目的。

这将暂停一段随机的时间(长达一个小时),以分散下载服务器上的负载。 然后,它会检查更新并下载它们(基本上是fetch在后台运行)。 如果下载更新,将通知指定的用户帐户。 不会自动安装更新,以便管理员可以决定适当的时间。

要设置此自动检测,编辑/etc/crontab使用文件sudo权限:

sudo vi /etc/crontab

在文件底部,添加一行如下所示:

@daily root freebsd-update -t freebsd cron

以上命令将以root用户身份自动运行update命令。 如果找到更新,后指定的用户帐户-t组件将被通报。 在上述的例子中,默认freebsd用户将被通知。

保存并在完成后关闭文件。

您登录到下一次freebsd帐户,您可以通过键入检查您的邮件:

mail

如果更新已下载,您会看到这样:

Mail version 8.1 6/6/93.  Type ? for help.
"/var/mail/freebsd": 1 message 1 new
>N  1 freebsd@freebsdserver       Thu Dec 18 21:45 209/3997  "freebsdserver security updates"
&

您可以通过键入与通知相关联的消息号来查看更新列表:

1

当您对要更改的软件满意时,可以通过键入以下内容快速安装更新:

sudo freebsd-update install

如果应用了任何内核补丁,请记住重新启动计算机,并重新启动受更新影响的任何服务。

同步操作系统源

你可能想要不时地做一个任务是将FreeBSD源代码的副本同步到您的系统。 由于各种原因,这是有用的。 一些端口需要正确构建当前源,源也可以用于开始跟踪到新的软件分支。

FreeBSD源代码在SVN存储库中维护。 如果你只需要最先进的最新版本的源代码,没有大的开销颠覆限嗣继承,你可以使用一个名为实用svnup同步的电流源。 这比使用subversion本身要快得多。

您可以安装svnup通过键入包:

sudo pkg install svnup

如果你喜欢使用端口,你可以通过键入:

cd /usr/ports/net/svnup
sudo make config-recursive install clean

一旦你有了这个实用程序,我们应该稍微调整配置文件。 打开它sudo在文本编辑器的权限:

sudo vi /usr/local/etc/svnup.conf

首先,我们需要从列表中选择一个镜像。 有多个host=行配置文件中,所有这些都注释掉。 选择您认为可能靠近您的一个,并取消注释:

. . .
[defaults]
work_directory=/var/tmp/svnup
#host=svn.freebsd.org
#host=svn0.us-west.freebsd.org
host=svn0.us-east.freebsd.org
#host=svn0.eu.freebsd.org

. . .

接下来,您应该确保描述每个SVN分支的文件的部分引用您正在使用的发行版本。 您可以从命令行输入以下内容找到您的发行版本:

freebsd-version
10.1-RELEASE-p2

这告诉我们操作系统的分支以及最后的系统补丁级别。 我们为了当前目的要注意的部分是第一个破折号之前的数字。 在这种情况下,它指定10.1 RELEASE意味着我们正在跟踪发布分支,可以用在FreeBSD最稳定的分支。

返回在文件中,请确保该定义的branch=根据参数[release]指向这个数字:

. . .

[release]
branch=base/releng/10.1
target=/usr/src

. . .

这将确保您正在下载正确的源。 保存并在完成后关闭文件。

现在,由于我们正在跟踪发布分支,我们可以键入:

sudo svnup release

这将下载最新的源代码树的版本/usr/src 您可以随时通过重新运行此命令来更新它。

如果你需要在源代码上运行subversion命令,你必须下载subversion工具。 您可以通过键入以下内容安装软件包:

sudo pkg install subversion

如果您喜欢使用端口,可以通过键入以下命令获取该工具:

cd /usr/ports/devel/subversion
sudo make config-recursive install clean

使用subversion命令将采取显著更多的时间。 它不仅会下载树中每个文件的当前版本,而且会下载项目的整个历史。

如果你已经使用之前同步源svnup工具,你将需要检查出使用源之前删除源代码树subversion

sudo rm -rf /usr/src

关于如何使用的详细说明subversion是本指南的范围之外。 但是,一般的想法是发出checkout反对FreeBSD源代码的一个镜像的一个分支命令。

例如,要签,我们并使用相同的确切来源svnup上面的命令,我们可以输入这样的事情:

sudo svn checkout https://svn0.us-east.FreeBSD.org/base/releng/10.1 /usr/src

请注意,此命令的URL,基本上只是一个组合host=branch=我们在中看到的定义svnup配置文件。

更新可选软件的系统记录

FreeBSD提供两种不同的格式在您的服务器上安装附加软件。 第一个是基于源的系统,称为“ports”,第二个是基于可用端口的预编译包的存储库。 对于驻留在基本操作系统之外的软件,需要使用一些其他工具进行管理。

该系统保留有关,可以在为根的目录层次结构内安装的端口的信息/usr/ports 这个目录结构被称为“ports树”。 在我们Touch任何端口之前,我们应该确保我们的ports树有关于我们可用软件的最新信息。 我们可以使用portsnap命令来做到这一点。

该语法portsnap命令将镜像的freebsd-update在某些方面的命令。 在DigitalOcean,源树将被预先填入有关可用端口,如第二个证明就可以更新初始信息portsnap命令。

如果你使用DigitalOcean,你/usr/ports ,当你开始了目录将可能是空的。 如果是这种情况,您第一次使用portsnap ,你应该使用extract

sudo portsnap fetch extract

这将获取完整的ports树,并提取到/usr/ports 这需要一段时间,并且只有必要的,如果你没有任何信息/usr/ports

要更新我们的系统的有关可用端口(每个后续信息portsnap运行),键入:

sudo portsnap fetch update

此过程可能需要一些时间,具体取决于您上次更新ports树的最近时间。 它必须为自上次运行以来已修改的每个可用软件下载相当数量的文件。 这将填充/usr/ports有关端口的信息层次。

pkg包装系统可以利用一些这方面的信息了。 但是,它还维护自己的数据库以跟踪可用于安装的预构建的二进制包。 要更新此内容,您可以键入:

sudo pkg update

这将从FreeBSD项目的服务器获取最新的软件包数据库信息。 值得注意的是,对于许多pkg操作中, pkg update被作为命令执行的一部分自动执行的,所以它并不总是需要作为一个独立的命令。

更新可选软件

到目前为止,我们已经学习了如何更新和应用基本操作系统的更新。 我们还学习了如何更新我们的操作系统源代码,以及如何刷新有关可用端口和软件包的本地信息。

现在,我们可以使用此更新的软件信息下载并将更新应用于我们的可选软件。 该过程将有所不同,具体取决于您是使用端口还是软件包。 如果你使用这两者的混合,你可能需要考虑一些过程。

找出可以更新哪个软件

更新软件的第一步是找出哪些应用程序有新版本可用。 我们可以用几种不同的方式做到这一点。

使用pkg命令检查更新

如果您想比较已安装系统受到有关可用的最新版本的更新信息软件,您可以使用version的子命令pkg 这将显示已安装的版本,并可以选择显示有关可用版本的信息。

值得注意的是,这个命令将显示通过两个端口和包安装的可选软件。 此命令不区分安装源,因此它能够准确显示系统上的所有可用更新。

我们可以通过键入以下内容查看我们的软件是否是最新的:

pkg version -vIL=

如果有任何软件的最新索引文件的新版本(通过下载的引用portsnap较早指令),输出将显示差异。 例如:

perl5-5.18.4_10                    <   needs updating (index has 5.18.4_11)

因为我们正在检查我们的系统上安装的软件对我们的ports树中的最新索引文件,有时候你会检查这一点,当有更新在ports树还没有到他们的方式到包。 发生这种情况是因为包是从ports树构建的,并且经常必须稍微落后。

由于这种可能性,上述命令可能显示实际上不可用作包的更新。 要找到这些实例,您可以将以上命令的输出与此命令的输出进行比较:

pkg version -vRL=

在新版本中此命令检查pkg可用的软件包的系统的数据库(而不是在ports索引文件)。 如果两个命令产生相同的输出,那么你将能够更新使用任何软件包pkg系统。

如果第一个命令中有更新没有在第二个命令中显示,这意味着更改尚未打包。 如果您正在使用需要更新的软件包,您可以等待包到达,或者您可以切换到端口以立即获取最新更新。

使用Portmaster检查更新

如果更多的时候选择使用该端口的系统源代码构建软件,一个有吸引力的选择是portmaster命令。 此工具对于FreeBSD上的任何基于端口的软件管理任务,从检查和应用更新,到安装或删除端口及其所有依赖项都很有用。

要获得portmaster命令,您可以安装该软件包,或从ports系统编译它。

要安装软件包,请键入:

sudo pkg install portmaster

如果你想从源代码编译工具,切换到ports目录中的ports目录并使用make安装它:

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

在安装时,您可能会看到有关添加一些信息到你的消息/etc/make.conf文件,并转换成你的软件包数据库。 如果你从FreeBSD 10.1或更高版本开始,这不是必需的。

一旦你portmaster安装,您可以检查通过打字的更新:

portmaster -L

这将检查您的系统上安装的所有软件,并将其与索引文件进行比较,以查看是否有新版本可用。 这个操作以同样的方式作为pkg在于它会显示更新而不管使用的端口或一包是否被安装的软件命令。 它根据软件在依赖关系方面如何连接到其他软件来对软件进行分类。

任何有可用更新的软件将有一个缩进的行,如下所示:

===>>> perl5-5.18.4_10
        ===>>> New version available: perl5-5.18.4_11

在底部,汇总行将描述可以更新的应用程序数量:

===>>> 42 total installed ports
        ===>>> 1 has a new version available

由于portmaster与端口的主要工作,所有检测到的更新应该是可用于应用程序。

检查软件漏洞

FreeBSD维护一个漏洞数据库,应定期检查以确保您在系统上安装的软件中没有漏洞。

虽然更新系统上的所有软件有时是有益的,但至少,任何具有已知漏洞的软件都应该尽早更新。 要使用系统上安装的任何可选软件检查已知漏洞,请键入:

pkg audit -F

这将从FreeBSD服务器下载最新的漏洞数据库,并根据系统上安装的软件进行检查。 如果您安装的软件存在任何漏洞,它会提醒您。

检查更新注意事项

在更新任何软件,就必须检查是否有更新可能造成的任何破损。 FreeBSD端口维护者有时必须进行不能在没有用户干预的情况下干净应用的更改。 如果您无法检查这些情况,您可能会遇到非正常工作的软件和潜在的系统损坏。

/usr/ports目录中,一个名为UPDATING包含有关可能会有意想不到的效果的任何软件更新的信息。 要读取此文件,请键入:

less /usr/ports/UPDATING

此简单文本文件将包含有关需要额外注意的任何更新的信息,无论是否安装了该软件。 每个条目将标记为将引用的更新提交到ports树的日期。 另一个要注意的是,该文件包含更新信息一直回到2008年。文件将看起来像这样:

This file documents some of the problems you may encounter when upgrading
your ports.  We try our best to minimize these disruptions, but sometimes
they are unavoidable.

You should get into the habit of checking this file for changes each time
you update your ports collection, before attempting any port upgrades.

20141208:
  AFFECTS: users of ports-mgmt/poudriere, ports-mgmt/poudriere-devel
  AUTHOR: bdrewery@FreeBSD.org

  8.4 jails created with Poudriere 3.1, or poudriere-devel-3.0.99.20141117
  should be recreated with 'jail -d' and 'jail -c'. This fixes pkg(8)
  crashes.

20141205:
  AFFECTS: users of polish/kadu
  AUTHOR: pawel@FreeBSD.org

  Before running kadu 1.x for the first time upstream developers
  advise to backup your ~/.kadu directory.

. . .

您应该检查此文件以查找自上次更新以来添加的任何更新问题。 由于此文件包含大量与您正在考虑的更新无关的信息,因为它涉及未安装在系统上的软件,或者因为它详细说明了以前更新中的问题,所以通常只需检查条目更接近文件的顶部。

如果在升级之前需要执行任何额外的步骤,请立即完成。

更新软件包和端口

采取在推荐任何行动后UPDATING文件,你现在应该准备更新软件。 我们使用的方法将取决于您是否要为您的软件使用预编译包或基于源的端口。

如果你主要是利用包和希望使用这种格式的升级,您可以使用pkg upgrade命令:

sudo pkg upgrade

这应该提供升级所有有更新可用的包。

有一点需要注意的是,如果你正在混合包和端口,包更新可能会尝试重新安装你使用ports系统构建的软件。 当您使用不同的选项编译应用程序时,可能发生这种情况,选择的自定义需要不同的依赖关系等等。

此方案将如下所示:

freebsd@wowie:~ % sudo pkg upgrade
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
Updating database digests format: 100%
Checking for upgrades (2 candidates): 100%
Processing candidates (2 candidates): 100%
The following 1 packages will be affected (of 0 checked):

Installed packages to be REINSTALLED:
        portmaster-3.17.7 (options changed)

The operation will free 1 KB.
40 KB to be downloaded.

Proceed with this action? [y/N]:

在这种情况下, portmaster命令通过ports系统安装,但pkg试图将之与它所知道的版本。 如果您希望保留自定义端口版本,可以按“N”进行此操作,然后键入以下内容锁定包:

sudo pkg lock portmaster

这将防止软件升级,让您使用的软件升级剩下pkg upgrade命令。 当您希望升级锁定的软件时,您可以通过键入以下内容暂时解锁:

sudo pkg unlock portmaster

如果你主要是利用portmaster和端口来处理你的包,你可以通过键入升级所有可选安装的软件:

sudo portmaster -a

将要求您选择要升级的端口的选项。 如果您不知道任何选项的含义,或者如果您没有任何具体原因进行选择,则可以使用默认值。

如果您使用的portmaster升级您的包之前,由于港口和软件包更新之间的滞后,有一个机会,用一个包,以前安装一些软件将现在使用的端口进行更新。 如果这不是一个问题,你可以随意使用这种方法。 如果你宁愿坚持你的软件包,最好等待更新重新包装。

如果您希望精细更新软件包,还可以通过指定其在端口树中找到的类别和名称来升级特定软件包:

sudo portmaster category/portname

例如,升级vim-lite端口,可以发出以下命令:

sudo portmaster editors/vim-lite

结论

您可以看到,为了维护您的FreeBSD服务器,需要执行几个不同的进程。

其中一些,如更新基本系统源的过程,不需要频繁运行,而其他任务,如更新基本操作系统和更新任何具有已知漏洞的软件,应经常完成。 维护系统起初可能看起来很复杂,但是当您熟悉所使用的工具时,会变得相当简单。

要了解如何使用包工作,遵循更多信息此链接 要了解如何与港口合作一个更好的主意,请按照本指南