软件测试技术

当前位置:首页 > 软件测试技术

鸟哥的Linux私房菜 基础学习篇(第三版) (第二十二章)续

●解压缩下载的tarball, 并参阅README/INSTALL档案

鸟哥的Linux私房菜 基础学习篇(第三版) (第二十二章)续

检查configure支持参数,并实际建置makefile规则文件

鸟哥的Linux私房菜 基础学习篇(第三版) (第二十二章)续

一般来说 configure设定参数较重要的就是那个--prefix=/path了,-prefx后面接的路径就是[这个软件未来要安装到那个目录去?」如果你没有指定--prefix= /path这个参数,通常预设参数就是/usr/local至于其他的参数意义就得要参考Jconfigure--help 了!这个动作完成之后会产生makefile或Makefile这个档案。当然啦,这个侦测检查的过程会显示在屏幕上,特别留意关于gcc的检查,还有最重要的是最后需要成功的建立起Makefile才行!

最后开始编译与安装噜!

鸟哥的Linux私房菜 基础学习篇(第三版) (第二十二章)续

鸟哥的Linux私房菜 基础学习篇(第三版) (第二十二章)续

整个动作就这么简单,你完成了吗?完成之后到/s/0ocal/ntp你发现了什么?

利用patch更新原始码

我们在本章-开始介绍了为何需要进行软件的升级,这是很重要的喔!那假如我是以Tarball来进行某个软件的安装,那么是否当我要升级这个软件时,就得要下载这个软件的完整全新的Tarball呢?举个例子来说,鸟哥帮昆山资传系架了个讨论区在htp://www.dic.ksu.edu.tw/phpbb3这个网址,这个讨论区是以phpBB这个软件来架设的,而鸟哥的讨论区版本为phpbb.04.tar.gz, 目前(209/06)最新释出的版本则是pbb3.0.5.tar.gz .那我是否需要下载全新的phpbb3.0.5.tar.gz这个档案来更新原本的旧程序呢?

事实上,当我们发现一些软件的漏洞通常是某一 -段程序代码写的不好所致。 因此,所谓的更新原始码」常常是只有更改部分档案的小部分内容而已。既然如此的话,那么我们是否可以就那些被更动的档案来进行修改就可以咯?也就是说,旧版本到新版本间没有更动过的档案就不要理他,仅将有修订过的档案部分来处理即可。

这有什么好处呢?首先,没有更动过的档案的目标文件(object file) 根本就不需要重新编译,而且有更动过的档案又可以利用make来自动update (更新) ,如此一来,我们原先的设定(makefile档案里面的规则)将不需要重新改写或侦测!可以节省很多宝贵的时间呢(例如后续章节会提到的核心的编译!)

从上面的说明当中,我们可以发现,如果可以将旧版的原始码数据改写成新版的版本,那么就能直接编译了,而不需要将全部的新版Tarball重新下载一次呢!可以节省带宽与时间说!那么如何改写原始码?难道要我们一个档案-个档案去参考然后修订吗?当然没有这么没人性!

我们在第十二章、正规表示法的时候有提到一个比对档案的指令那就是 diff,这个指令可以将 [两个档案之间的差异性列出来」呢!那我们也知道新旧版本的档案之间,其实只有修改一些程序代码而已,那么我们可以透过diff比对出新旧版本之间的文字差异,然后再以相关的指令来将旧版的档案更新吗?呵呵!当然可以啦!那就是patch这个指令啦!很多的软件开发商在更新了原始码之后,几乎都会释出所谓的patch file,也就是直接将原始码update而已的一个方式喔!我们底下以一一个简单的范例来说明给你了解喔!

关于diff与patch的基本用法我们在第十二章都谈过了,所以这里不再就这两个指令的语法进行介绍,请回去参阅第十二章的内容。这里我们来举个案例解释一下好了。 假设我们刚刚计算三角函数的程序(main)历经多次改版,0.1版仅会简单的输出,0.2 版的输出就会含有角度值,因此这两个版本的内容不相同。如下所示,两个档案的意义为:

htp://inux.vbird.org/inux. basic/0520source/main-0.1.tgz : main的0.1版;

htp://i/x.vbird.rg/iux basic/0520source/main _0.1 to 0.2.patch : main由0.1升级到

0.2的patch file :

请您先下载这两个档案,并且解压缩到你的/root底下.你会发现系统产生一个名为main-0.1的目录。该目录内含有五个档案,就是刚刚的程序加上一个Makefile的规则档案。你可以到该目录下去看看Makefile的内容,在这一-版当中含有main与clean两个标的功能而已。至于0.2版则加入了install与uninstall的规则设定。接下来,请看一下我们的作法罗:

测试旧版程序的功能

鸟哥的Linux私房菜 基础学习篇(第三版) (第二十二章)续

鸟哥的Linux私房菜 基础学习篇(第三版) (第二十二章)续

与之前的结果非常类似,只是鸟哥将Makefile直接给您了!但如果你下达make install时,系统会告知没有install的target啊!而且版本是0.1也告知了。那么如何更新到0.2版呢?透过这个patch档案吧!这个档案的内容有点像这样:

查阅patch file内容

鸟哥的Linux私房菜 基础学习篇(第三版) (第二十二章)续


相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~