源码的安装一般由这三个步骤:
配置(configure)
编译(make)
安装(make install)
安装成功的源码就是所谓的可执行文件,在你不需要的时候,也是可以删除/卸载(remove/uninstall)的。下面就逐个进行分析:
一、源码的配置
配置命令就是configure命令。一般来说,configure文件是位于源码根目录下的一个可执行的脚本文件,它有很多选项,而且不同软件的选项都不完全一致。可以在待安装的源码目录下使用命令:./configure --help
输出详细的选项列表。
./configure --prefix=/usr/local/
其中有一个通用的选项,叫做--prefix
选项,目的是配置安装的路径。
如果不配置该选项,安装后:
为了便于集中管理某个软件的各种文件,想指定到某个路径下,可以配置 --prefix
,如:
./configure --prefix=/usr/local/proj4
那么,安装后的所有资源文件都会被放在/usr/local/proj4
目录中,不会分散到其他目录。
用了 --prefix
选项的另一个好处是卸载软件或者移植软件更方便。当某个安装的软件不再需要时,只须删除该安装目录,就可以把软件卸载的干干净净。
二、源码的编译
配置完毕之后,一般都会提示你,直接运行make命令进行编译。此时你照做就好,程序就会开始自动编译。
有一个要注意的就是,考虑到目前的计算机一般都是多核的,如果你想人工加快程序的编译速度,可以手工指定一个make命令的一个参数“-j8”或者“-j16”,后面的数字表示的就是用几个核进行编译,数字越大,编译速度越快。当然,要说明的是,这里的编译速度与内核的个数,并不是成正比的。而且,具体多少个任务同时执行为佳,还需要根据具体的机器配置,任务数太多,反而效果不好。
例如:对一个linux内核的编译过程的测试,使用不同的参数编译的时间如下:
用 make
:大约40分钟;
用 make -j4
:大约23分钟;
用 make -j8
:接近23分钟。
另外,这个方案不是完全没有弊端的,如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。
三、程序的安装
编译完成之后,就是安装。这里的安装,其实就是把编译出来的可执行文件,以及一堆的头文件和依赖库,以及文档资料等,按照linux系统约定的规则,拷贝到你事先指定的目录下去。所以,与其叫安装,其实就是一个拷贝的过程。
同样,这里也有一点要说明的是,很多时候,手册或者提示信息里都只是告诉你,执行make install
命令来进行安装。然而,你执行了这个命令之后,往往会遇到一些错误的提示。经过一番排查之后,你会发现,就是因为权限不够,导致文件拷贝失败。所以,最好养成一个习惯,每次make install
的命令前加上sudo
的权限,如下:
$ sudo make install
四、程序的卸载
当然,要卸载程序,也可以在原来的make目录下用一次make uninstall
,但前提是Makefile文件有uninstall命令。
而如果你安装时没有配置--prefix
选项,源码包也没有提供make uninstall
命令,则可以通过以下方式来卸载:
找到make install之后产生的这个文件install_manifest.txt
里面有安装的所有东西的路径,使用下述命令逐个删除它们即可。
$ cat install_manifest.txt | sudo xargs rm
通过源码包方式安装的各个软件,其安装文件独自保存在 /usr/local/ 目录下的各子目录中。例如,apache 所有的安装文件都保存在 /usr/local/apache2 目录下。这就为源码包的卸载提供了便利。
源码包的卸载,只需要找到软件的安装位置,直接删除所在目录即可,不会遗留任何垃圾文件。需要读者注意的是,在删除软件之前,应先将软件停止服务。
以删除 apache 为例,只需关闭 apache 服务后执行如下命令即可:
[root@localhost ~]# rm -rf /usr/local/apache2/
五、总结
./configure
的作用是检测系统配置,生成makefile文件,以便可以用make和make install来编译和安装程序。
./configure
是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系,但并不是所有的tar包都是源代码的包。
可以先ls
,查看有没有configure或者makefile文件。
如果有configure,就./configure
,有很多参数。如果系统环境合适,就会生成makefile,否则会报错。
如果有makefile,就直接make,然后make install。
还可以用rpm或者deb包来安装。而且现在的发行版都有自己的包管理器,比如apt或yum,一个命令就可以从源下载软件,还可以自动解决依赖问题。
推荐阅读
呃 本文暂时没人评论 来添加一个吧
发表评论