diff --git a/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml b/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml index 4b94216317..3e7dcc8a34 100644 --- a/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml +++ b/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml @@ -3037,31 +3037,33 @@ Building everything.. As a part of the &os; development lifecycle, it happens from time to time that files and their contents become obsolete. This may be - because their functionality is implemented elsewhere or is removed from - the system entirely. This includes old files, libraries and - directories, which should be removed when updating the system. The - benefit for the user is that the system is not cluttered with old files - which take up unnecessary space on the storage (and backup) medium. The - files, directories, and libraries that are considered obsolete are listed - in /usr/src/ObsoleteFiles.inc. The following + because their functionality is implemented elsewhere, the version number + of the library has changed or it was removed from the system entirely. + This includes old files, libraries and directories, which should + be removed when updating the system. The benefit for the user is that + the system is not cluttered with old files which take up unnecessary + space on the storage (and backup) medium. Additionally, if the old + library had a security or stability issue, you should update to the + newer library to keep your system safe and prevent crashes caused by + the old library implementation. The files, directories, and libraries + that are considered obsolete are listed in + /usr/src/ObsoleteFiles.inc. The following instructions will help you removing these obsolete files during the system upgrade process. We assume you are following the steps outlined in . After the make - installworld command completed - successfully, you should check for obsolete files and libraries as - follows: + installworld and the subsequent + mergemaster commands have finished successfully, you + should check for obsolete files and libraries as follows: &prompt.root; cd /usr/src -&prompt.root; make check-old -&prompt.root; make check-old-libs +&prompt.root; make check-old If any obsolete files are found, they can be deleted using the following commands: - &prompt.root; make delete-old -&prompt.root; make delete-old-libs + &prompt.root; make delete-old See /usr/src/Makefile @@ -3070,23 +3072,29 @@ Building everything.. A prompt is displayed before deleting each obsolete file. You can skip the prompt and let the system remove these files automatically by - setting the BATCH_DELETE_OLD_FILES environment - variable to yes. You can also achieve the same goal - by piping these commands through yes like this: + using the BATCH_DELETE_OLD_FILES make-variable as + follows: - &prompt.root; yes|make delete-old -&prompt.root; yes|make delete-old-libs + &prompt.root; make -DBATCH_DELETE_OLD_FILES delete-old + + You can also achieve the same goal by piping these commands through + yes like this: + + &prompt.root; yes|make delete-old Warning Deleting obsolete files will break applications that still - depend on those obsolete files. + depend on those obsolete files. This is especially true for old + libraries. In most cases, you need to recompile the programs, ports, + or libraries that used the old library before make + delete-old-libs is executed. Utilities for checking shared library dependencies are available from - the Ports Collection - in sysutils/libchk - or sysutils/bsdadminscripts. + the Ports Collection in sysutils/libchk or sysutils/bsdadminscripts. Obsolete shared libraries can conflict with newer libraries, causing messages like these: @@ -3103,8 +3111,13 @@ Building everything.. /usr/local/lib/libXext.so was installed by package libXext-1.1.1,1 Then deinstall, rebuild and reinstall the port. The ports-mgmt/portmaster utility can be used to - automate this process. + role="package">ports-mgmt/portmaster and ports-mgmt/portupgrade utilities can be used to + automate this process. After you've made sure that all ports are rebuilt + and do not use the old libraries anymore, you can delete them using the + following command: + + &prompt.root; make delete-old-libs