在 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。
过时的动态连接库可能会与新库冲突, 导致类似这样的警告消息:
/usr/bin/ld: warning: libz.so.4, needed by /usr/local/lib/libtiff.so, may conflict with libz.so.5 /usr/bin/ld: warning: librpcsvc.so.4, needed by /usr/local/lib/libXext.so, may conflict with librpcsvc.so.5
要解决这样的问题, 需要确认安装这个库的 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有问题,请先阅读
文档,如不能解决再联系
<[email protected]>.
关于本文档的问题请发信联系
<[email protected]>.