Linux源码程序安装后的工作


在RedHat(CentOS)linux下,程序包的安装一般可以分为以下几种:第一种是已编译好的rpm包;第二种是已编译好的二进制程序包,这种二进制程序不用安装,直接就可以使用;第三种是源代码程序包。这类源程序不能直接被使用,需要把源代码通过gcc,c++等编译器把源程序编译成二进制程序后才能使用。当我们从网上下载一个源代码的程序包进行编译安装时,为了便于后期的管理,我们约定俗成的会把此程序安装在/usr/local下的一个自己命令的目录下,比如我们编译安装apache时,我们一般是安装在/usr/local/apache这个目录下的,那apache的启动程序、帮助文件、头文件、库文件等都在此目录下,当我们想要卸载apache时,直接把此目录删除即可。但这样也给我们使用apache时带来了一些不便,比如:我们要启动、关闭apache时,都得使用“/usr/local/apache/bin/apachectl start”这样的全路径;当我们想获得httpd的帮助住处时也得使用“man httpd -M /usr/local/apache/share/man”这们的方式,还有apache的头文件,库文件都不在系统默认能搜索到的目录。所以在以源代码方式安装程序后我们要做的工作就是:

1、导出二进制程序
以apache源代码方式安装为例:

[root@zcj httpd-2.2.25]# ./configure --prefix=/usr/local/apache2

安装目录是在/usr/local/apache下

[root@zcj apache2]# ls
bin    cgi-bin  error  icons    logs  manual
build  conf    htdocs  include  man  modules

不知道为什么没有lib库文件,在centos6.4_x64与centos5.10_x64都试过,安装好后都没有lib这个库文件的相关目录。
这样安装好apache后,与apache相关的二进制可执行程序都是放在/usr/local/apache2/bin这个目录下的,但是这个目录没有在系统的默认PATH中,所以先得把这个目录导出
[root@zcj apache2]# vim /etc/profile.d/apache.sh
export PATH=/usr/local/apache2/bin:$PATH
[root@zcj apache2]# . /etc/profile.d/apache.sh \\也可用“source /etc/profile.d/apache.sh”

apache.sh这个档案的名称可以自己定义,只要是以sh结尾即可,这样就把“/usr/local/apache2/bin”这个放二进制程序的目录导出来了,以后在使用“apachectl start”这样的命令时就直接在命令行使用,不再要求一定要使用全路径的方法。

2、导出库文件
linux下的命令是需要库文件才能正常运行的,用“ldconfig -v”这个命令可以搜索当前系统上的所有的库文件,并把搜索到的结果存入“/etc/ld.so.cache”这个缓存文件。如果想查看一个命令所依赖的库文件,则执行“ldd 命令路径”,如:“ldd /bin/ls”就可查看"ls"命令所依赖的库文件。
假设apache的库文件目录在“/usr/local/apache2/lib”,那在“/etc/ld.so.conf.d”这个目录下新建apache.conf(名字只要以conf结尾即可)这个档案,把“/usr/local/apache2/lib”写入这个档案后,再执行“ldconfig -v”这个命令即可。

[root@zcj apache2]# vim /etc/ld.so.conf.d/apache.conf
/usr/local/apache2/lib
[root@zcj apache2]# ldconfig -v | grep apache2

3、导出man文件

直接编辑“/etc/man.config”文件,在“MANPATH”新增一行即可

[root@zcj apache2]# vim /etc/man.config
……
MANPATH //usr/local/apache2/man    \\新增man的路径
MANPATH /usr/man
MANPATH /usr/share/man
MANPATH /usr/local/man
MANPATH /usr/local/share/man
MANPATH /usr/X11R6/man
……

4、头文件的导出
为了后期的管理,我们在导出头文件时不是以单个文件导出,而是建议以目录为单位导出。
[root@zcj man]# ln -sv /usr/local/apache2/include /usr/include/httpd

相关内容