linux 系统升级方法介绍
当我们使用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版本 gcc -v 然后决定是否要进行升级。当我们需要对自己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/lib/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 来将软件包安装在计算机上。