在 FreeBSD 的开发过程中, 随时可能会出现一些文件或其内容过时的情况。
这种情况有可能是由于其功能在其它地方实现了,
函数库的版本号增加, 或完全从基本系统中删去, 等等。
一般的联编和更新过程并不会删去这些旧的文件、 函数库或目录,
在更新系统之后, 应及时予以清理。 清理的好处是这些文件不会再继续占用存储
(以及备份) 空间, 另外, 如果旧的函数库或文件中存在安全或可靠性问题,
您也应更新到新的函数库, 以避免安全隐患或崩溃情形的发生。
过时的文件、 目录和函数库会列在
/usr/src/ObsoleteFiles.inc
中。
接下来将介绍在系统更新过程中如何删去这些过时的文件。
我们假定您已经按照 第 25.7.1 节 “更新系统的规范方法” 介绍的步骤完成了更新操作。 在 make
和
installworld
mergemaster
命令完成之后,
您应使用下面的命令检查系统中是否存在过时的文件或库:
#
cd /usr/src
#
make check-old
如果有过时的文件, 则可以用下面的命令来删除:
#
make delete-old
参阅 /usr/src/Makefile
可以了解其他 target 的功用。
在删除文件时, 系统会针对每个文件都给出提示。
您可以跳过这些提示, 并让系统自动完成删除操作,
方法是使用 make 变量 BATCH_DELETE_OLD_FILES
,
具体做法如下:
#
make -DBATCH_DELETE_OLD_FILES delete-old
您也可以用
yes
命令和管道来达到类似的目的:
#
yes|make delete-old
删去过时的文件, 有可能会破坏现有的依赖这些文件的应用程序。
对于旧的函数库来说, 这种问题出现的可能性更大。
绝大多数情况下, 您应重新联编使用旧库的所有的程序、
port 或函数库之后再执行 make
。delete-old-libs
在 Ports Collection 中提供了一些检测动态连接库依赖关系的工具,
例如 sysutils/libchk
和 sysutils/bsdadminscripts
。
过时的动态连接库可能会与新库冲突, 导致类似这样的警告消息:
要解决这样的问题, 需要确认安装这个库的 port:
#
pkg_info -W /usr/local/lib/libtiff.so
/usr/local/lib/libtiff.so was installed by package tiff-3.9.4
#
pkg_info -W /usr/local/lib/libXext.so
/usr/local/lib/libXext.so was installed by package libXext-1.1.1,1接着卸载、 重新联编并安装 port。 您可以使用 ports-mgmt/portmaster
或 ports-mgmt/portupgrade
工具来自动完成这些操作。
在确认所有的 port 都重新联编, 并且不再使用旧库以后,
您就可以用下面的命令来删除它们了:
#
make delete-old-libs
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<questions@FreeBSD.org>.
关于本文档的问题请发信联系
<doc@FreeBSD.org>.