当前位置学海荡舟 -> 电脑乐园 -> XteamLinux

XteamLinux    

XteamLinux
什么是XteamLinux
安装XteamLinux
XteamLinux系统配置
KDE介绍
中文环境
KDE下的应用程序
Linux基础命令
XteamLinux系统管理
系统引导与关闭
管理用户
备份数据
管理文件系统
软件安装与系统升级
系统安全控制
Internet下的使用
附录

  本教程由冲浪平台(中国)软件技术有限公司提供。



 

8.5 软件安装与系统升级

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”命令。

    通过重新安装最新版本的方式来进行升级并不是一个好主意。如果以这种方式重新安装,将破坏当前的系统,包括用户目录和所有特殊的配置。最好的软件升级方法是逐渐的,也就是说,如果常用的程序有新版本就升级它,否则就不用动它。

                                 

下一节  

请您留言
谈谈您的看法