前言:
当我们使用Linux一段时间以后,自然不会满足总是在没有任何变化的系统中工作,而是渴望能象在Windows系统中一样,不断对自己的Linux进行升级。另一方面,Linux本身就是一个开放的系统,每天都会有新的软件出现,Linux发行套件和内核也在不断更新。在这样的情况下,学会对Linux(包括系统本身和各种软件)进行升级就显得非常迫切了。
在Linux环境下,升级的对象可以是一般的软件,可以是编译器,也可以是系统的内核,甚至是系统本身。下面,我就分别讲讲对不同对象的升级方法。
1.升级一般软件
一般来说,升级应用软件是比较简单的,因为你不用太在意升级后对其他软件的影响(如果是升级系统,情况就不一样了)。首先,你必须找到希望升级的新版本。你可以在Linux的专门站点上寻找自己中意的软件。然后就是使用各种下载工具将软件下载到指定目录中。下载的软件大部分是以tar打包的gzip压缩文件。
在处理这些软件之前最好使用tar tvf 或 tar ztvf 命令看看下载下来的文件中包含了一些什么文件。因为得到的软件可能是二进制文件也可能是源码,使用上述的命令可以看看究竟是哪一种文件。
如果是二进制文件,一般可以直接将包打开,然后删除相应的老文件就可以了。
如果是源文件则要留心包里面是否有帮助和安装文件(readme / install / help)等等。然后将软件打开到指定的目录中去,仔细看看帮助和安装文件中的提示和安装约定,再进行安装工作。这时,安装工作意味着要对源代码进行编译。首先要对Makefile文件进行修改,修改的内容和修改的方法在软件包中的相关文件中往往可以找到,另外有的时候软件包里会包含一个shell程序configure,执行它可以省不少时间。对makefile处理完以后,就可以使用make命令来编译指定的文件。最后用make install命令将软件安装到自己的计算机上。
2.升级编译器
我们可以先用“gcc -v”命令看看自己当前的gcc版本,然后决定是否要进行升级。当我们需要对自己的gcc、连接器、汇编器以及各种头文件和函数库进行升级的时候,我们就可以到相关站点上获得对应的软件包,然后在指定目录下开打,同时删除(覆盖)原来的老文件就可以了。
3.升级函数库
因为升级后要重新指定库的连接,所以函数库是比较麻烦的。我们知道,Linux系统的库文件分为档案库和共享库两种类型。档案库的文件一般是libx.a,而共享库的文件一般是libx.so.version,升级函数库时必须使用新的版本的.a和.so.version文件替换老版本的对应文件。对.a文件来说非常容易,只要将新文件拷进指定的目录,覆盖原来的文件就可以了。但是我们对共享库进行操作的时候就要特别小心了。绝不能简单地将新文件拷到一个目录下,然后删除旧的文件。因为有可能旧的函数库正在为某个程序所使用。我们必须保证每个程序都能够正确地找到共享库。简单的将,当我们将新版本的共享库文件放到指定目录下以后,使用ln命令来完成:
ln –sf /usr/lib/libdb.so.new(“new”指新的版本号) /usr/lib/libdb.so.old(“old”是原有的文件);比如: /usr/lib/libdb.so.2原来指向的文件是/usr/llib/libdb.so.2.0.1,现在有一个新文件 /usr/lib/libdb.so.2.78.1,我们可以这样处理:ln –sf /usr/lib/libdb.so.2.78.1 /usr/lib/libdb.so.2 ;然后,我们才能将/usr/lib/libdb.so.2.0.1文件进行删除。
4.系统升级
最简单的升级方法当然是。一张cd-rom里就可以将整个系统完全包括了。当然,这样的升级方法比较费事,同时,每一次升级都意味着原来的文件有可能丢失,因此,完全没有必要总是将系统重新安装一次。每一个Linux发行套件其实都是记录升级情况的文件。比如slackware中有一个changelog.txt文件,按时间顺序记录了slackware的更新状况。而在RedHat中则是/redhat-4.2/updates/00readme.errata.我们可以从这些文件中看出是不是需要进行升级。然后找到相应部分的软件包,使用installpkg filename或者rpm –U filename来将软件包安装在计算机上。
注:以上内容,Linux有一定水平者可以参考下,初学者了解即可。(如有不同意见,敬请拍砖,谢谢大笑)