初窥Linux之简述软件安装
对于Windows的用户来说,软件安装的确是没有什么学问,一直Next或者改一下路径,软件就会装好了。但是在Linux下可没这么简单了。
Linux下的软件安装主要有三种方式,分别是rpm(RedHat系列)或DPKG(Debian系列)、yum(RedHat系列)或APT(Debian系列)和Tarball。
由于rpm、yum等的安装方式都非常简单,在这里就不再详述了,就举一个例子来说明吧,在Windows上360、金山这些系统管理软件相信大家都有用过,yum的软件安装方式就类似于你在360里面选择了一个软件然后按安装一样,它就会自动帮你安装好,不过yum选择的软件得要系统的提供者的服务器上有才行。而rpm安装则类似于你从网上下载了一个安装包,然后打开直接安装,只不过这个安装是用命令来进行。
下面重点来说说Tarball安装。
一、Tarball是什么
看到Tarball这个名字,不知道大家有没想起一个命令——tar,所谓的Tarball文件,其实就是将软件的所有源代码先以tar打包,然后再加以压缩技术来压缩,通常最常见的就是以gzip和zip2来压缩了,所以tarball文件一般的扩展名就会写成*.tar.gz、tgz或者tar.bz2。那么这个Tarball文件里有什么内容呢?里面的文件通常有:
1、源代码文件
2、检测程序文件(可能是configure或config等文件)
3、本软件的简易说明与安装说明(README和INSTALL)
README和INSTALL这两个文件是非常重要的,但是对于用惯了Windows的我们,安装一个软件太简单,以至于我们一直忽视了这些说明文件,然而在Linux却不同,所以在软件安装前要仔细阅读一下。
二、检测安装环境
拿到Tarball的安装包后,可以把它压解到/usr/local/src目录下(最好这样做),首先找到README和INSTALL这两个文件看看里面的说明,如果没有问题,在当前目录下,找到configure或config等文件,若没有,可按照README和INSTALL这两个文件的说明去安装,这里假设configure文件存在。
configure文件到底是什么?通过file命令可以看到,其实这个文件是一个脚本文件,它的目的就是检测你的Linux环境,判断你当前的环境符不符合这个软件的安装要求,若不符合,输出出错信息并退出,若符合,则生成MakeFile。而MakeFile指定了这个软件如何编译、如何安装等信息。
由于之后的安装一直要使用到MakeFile文件,所以如果此步失败,由于没有MakeFile文件生成,则安装不能继续下去。
此外,在运行configure时,还可以通过添加参数来改变生成的MakeFile中的一些默认参数,其中比较重要的参数是--frefix,这个参数后面可接路径,表示这个软件将来要安装到哪个目录去,如果你没有指定这个参数,通常默认就是/usr/local,使用方法举例如下:
# configure --prefix=/usr/local/app
默认方法为:# configure
三、软件安装
这一切都搞定之后,安装就非常简单了,输入如下命令即可。
# make clean
# make
# make install
注:你的系统中一定要用make和gcc等工具。
是不是很简单,是!那么上面的三步,每一步又做了什么呢?它们各有什么作用呢?下面就来说说吧!
1、make clean:make会读取MakeFile中关于clean的工作,它的主要工作就是去除目标文件。这个步骤不一定要有,但是最好还是执行一下,为什么?它可以去除目标文件啊。因为源码里面可能包含上次编译过的目标文件(*.o)存在,所以当然还是清除一下比较妥当的。至少等一下编译出来的执行文件可以肯定是使用自己的机器所编译出来的。
2、make:make会依据MakeFile当中的默认工作进行编译行为。编译的工作主要是gcc将源代码编译成可执行文件,但是这些目标文件通常还需要一些函数库之类的链接后才能生成一个完整的可执行文件。简单点说,就是使用make把源代码编译为可执行文件(即Windows下的*.exe文件),而这个可执行文件会放置在目前所在的目录之下,尚未安装到预定安装的目录中。
看到这里大家可能就有点迷惑了,既然我的可执行程序都出来了,我可以运行程序了,不就是安装完成了吗,为什么说还没有安装完成呢?举个不太贴切的例子吧,这就好像只生成了Windows中你熟悉的那个安装程序一样,并不是你想要的那个应用程序。你还要运行这个安装程序才能完成你想要的应用软件的安装。
3、make install:通常这就是安装的最后步骤了,make会依据MakeFile文件里的install选项,将上一步所编译完成的数据安装到默认的目录中(如果先前用configure检测环境并生成MakeFile的过程中,你有使用--frefix参数的话,就是你指定的目录),就完成安装了。安装的过程通常是把编译生成的而且软件运行所需要的文件移动到指定的安装目录下并进行一些配置。
注:上述步骤是有关联的,只要其中一步失败,则下面的操作都不能进行。此外,如果安装成功,但是却安装在一个独立的目录中,例如/usr/local/app,那么你就必须手动将这个软件的man page写入/etc/man.config里,即在里面添加一行:MANPATH/usr/local/app/man。