| 8.5 软件安装与系统升级 8.5.1 升级内核 8.5.2 升级库 8.5.3 升级gcc 8.5.4 升级其它软件 系统管理员的另一项职责就是升级和安装新的软件。 Linux系统软件集变化很快,新的核心几乎每几个星期公布一次,其它软件的更新也是非常频繁。所以,新的Linux用户常常感到其系统需要不断地升级来跟上快速变化的步伐。其实这样做不但不必要,而且很浪费时间。如果要紧跟Linux的所有变化,那么所有的时间都用于升级系统,就没有时间去使用系统了。 升级系统的最好办法就是手工进行,即仅仅升级那些应该升级的软件包,这确实吓倒了不少人,他们需要知道什么该升级,如何升级,而且如果他们不升级的话会产生什么影响。为了成功地使用Linux,克服心理中对“手工做”产生的恐惧是十分重要的。事实上,一旦使系统工作和正确配置所有文件后,重新安装最新版本的软件将抹去系统的配置,而所有事情将被破坏,正如第一次安装系统一样。这样做并不需要,所需要的只是一些升级系统的技巧。 升级系统中的一个部件时,其它部分将不会被破坏。例如,在一个由很老版本的0.96MCC Interim的系统中,用最新版本的核心和库函数并不会产生什么问题。多数情况下,跟随潮流的升级并不必要,因为这不是MS-DOS或Microsoft Windows,并没有很重要的理由运行所有软件的最新版本。如果发现确实喜欢或需要新版本的特性的话,再升级,不然的话就不要升级。换句话说,只有在需要的时候才升级,不要仅仅为了升级而升级,那将浪费大量的时间和精力。 系统中最重要的升级软件是核心、库和GCC编译器,这是系统中最重要的三个部分。在某种情况下,它们互相作用顺利地完成一切工作。系统中其它的大多数软件并不需要周期性地升级。 8.5.1 升级内核 升级内核只不过是获得源代码并自己编译,你必须自己编译内核来决定要或不要某些特性,以及确保内核在你的机器上运行是最优化的,这个过程是很容易的。 内核的源代码可以从任何Linux的FIP地址得到。例如在xteamlinux.com.cn上,内核源代码可以在/pub/Linux/kernel中找到,内核版本由版本号和补充级别来编号,例如内核版本为0.99,补充级别为11的内核写成0.99pl11或0.99.11。 内核源码是以gzip压缩的tar文件来公布的(通常情况下,还公布一个当前版本内核的补充文件,允许将最新的补充级别加到现有内核上形成当前内核的源码,还可以用程序patch来实现,然而在多数情况下,安装整个最新版本的内核源码通常比较容易)。例如包含0.99.pl11的内核源码文件是Linux-0.99.11.tar.gz。 在目录/usr/src下解开该tar文件,生成目录/usr/src/linux,其中包含了内核源码。在解开新版本的内核之前需要删除或重命名/usr/src/linux。 一旦源码展开后,必须确认在/usr/include下的两个符号连接是正确无误的,可以用下述命令生成这些连接: $ ln -sf/usr/src/linux/include/linux /usr/include/linux $ ln -sf/usr/src/linux/include/asm /usr/include/asm 一旦生成了这些连接。在安装下一个新版本的内核源码时就没有理由重新生成它们。 注意,为了编译内核,必须在系统中安装gcc和g++的C及C++编译器。 为了编译内核,首先cd/usr/src/linux,运行命令make config,该命令提醒用户一系列配置选择项,例如希望包含在新的内核中的文件系统类型等。 接下来编辑/usr/src/linux/Makefile,确信对ROOT_DEV的定义是正确的,它定义了启动时作为根文件系统的设备。一般的定义为: ROOT DEV= CURRENT 除非要改变根文件系统设备,否则没有理由改变该项。 然后运行命令make dep来固定所有的源关联,这是很重要的一步。 最后准备编译内核,命令make Image用来编译内核,并将新的内核映像存放在文件/usr/src/linux/Image中,或者命令make zImage用来编译压缩的内核映像,它将在启动时自解压并占据较少的硬盘空间。 内核一旦编译完后,可以将之拷贝到启动软盘上(用诸如“cp Image/dev/fd0”之类的命令)或用LILO来安装,使之从硬盘启动。 8.5.2 升级库 上面已经提到,系统中多数软件都是用共享库来编译的,该库中包含了在不同程序之间共享的公用子例程。 如果在试图运行程序时,看到如下信息: Incompatible library version. 则需要将库升级到程序所需要的版本,库是向下兼容的,也就是说,用老版本库编译的程序可以在新安装的版本库上运行,反之则不行。 最新版本的库可以在 Linux的 FTP地址上得到。在 sunsite.unc.edu上,它们在/pub/Linux/GCC中。其中的“release”文件说明了需要下载什么文件,以及如何安装它们,简而言之,应该得到文件image-version.tar.gz和inc-version.tar.gz,其中version是要安装库的版本号,例如4.4. 1。这些都是用gzip压缩的tar文件, image文件包含了安装在/lib和/usr/lib上的库映像文件, inc文件包含了安装在/usr/include的头文件。 release-version.tar.gz详细解释了安装过程(确切的步骤随不同版本而不同)。一般地应该在/usr/lib中安装库.a和.sa,这些都是在编译时用到的库。 另外,共享库映像文件libc.so.version安装在/lib中,它们是用这些库的程序运行时装载的共享库映像,每一个库都用主版本号与/lib中的库进行符号连接。 例如, libc库的版本号为4.4. 1,其主版本号为4,头文件库的文件为 libc.so.4.4.1,名为 libc.so.4的符号连接在/lib中,并指向该文件。在升级库时要改变该符号连接,例如,当从 libc.so.4.4升级到 libc.so.4.4.1时,需要将符号连接指向新版本。 如下所示改变符号连接十分重要。如果删除了符号连接 libc.so.4,那么依赖于连接的程序就会停止工作(包括基本的应用例程,如 ls和 cat),采用下列命令将符号连接libc.so.4指向文件 libc.so.4.4.1: $ ln-sf /lib/libc.so.4.4.1 /lib/libc.so.4 还需要用同样方法改变符号连接libm.so.version。如果升级到一个不同版本的库,那么只需替换上述相应的文件名,库的公布信息将提供详细资料 8.5.3 升级gcc gcc的C和C++编译器是用来编译系统中软件的,尤其重要的是内核,最新版本的gcc可以在linux的FTP地址上找到。在sunsite.unc.edu上,它在目录/pub/linux/GCC(与库在——起),有一个gcc公布的release文件详细说明了需要下载什么文件以及如何安装它们。 8.5.4 升级其它软件 升级其它软件通常只是下载相应的文件并安装它们。 Linux的多数软件是以gzip压缩的tar文件形式发布的,包括源码或二进制文件,或两者都有。如果在发布的文件中没有二进制文件,则需要自己进行编译,通常情况下,只需要在源码所在的目录下键人make即可。 阅读USENET新闻组comp.os.linux.announce中有关新软件的发布消息是得到新软件的最简单的方法,在FIP地址上寻找软件时,先下载FTP地址上的LS-LR索引文件,并用grep找到相应的文件,这也是一个简捷的方法,如果有archie,它将大有帮助,如果没有archie,可以telnet到一个archie服务器,例如archie.rutgers.edu,用“archie”注册,并用“help”命令。 通过重新安装最新版本的方式来进行升级并不是一个好主意。如果以这种方式重新安装,将破坏当前的系统,包括用户目录和所有特殊的配置。最好的软件升级方法是逐渐的,也就是说,如果常用的程序有新版本就升级它,否则就不用动它。  谈谈您的看法
|